Comment la base de données vectorielles Milvus garantit-elle la sécurité des données ?
Image de couverture
Afin de garantir la sécurité de vos données, l'authentification de l'utilisateur et la connexion TLS (transport layer security) sont désormais officiellement disponibles dans Milvus 2.1. Sans authentification de l'utilisateur, n'importe qui peut accéder à toutes les données de votre base de données vectorielles avec le SDK. Toutefois, à partir de Milvus 2.1, seules les personnes disposant d'un nom d'utilisateur et d'un mot de passe valides peuvent accéder à la base de données vectorielles Milvus. En outre, dans Milvus 2.1, la sécurité des données est renforcée par TLS, qui garantit des communications sécurisées dans un réseau informatique.
Cet article vise à analyser comment la base de données vectorielles Milvus assure la sécurité des données grâce à l'authentification de l'utilisateur et à la connexion TLS, et à expliquer comment vous pouvez utiliser ces deux fonctionnalités en tant qu'utilisateur souhaitant assurer la sécurité des données lors de l'utilisation de la base de données vectorielles.
Aller à :
- Qu'est-ce que la sécurité des bases de données et pourquoi est-elle importante ?
- Comment la base de données vectorielle Milvus assure-t-elle la sécurité des données ?
Qu'est-ce que la sécurité des bases de données et pourquoi est-elle importante ?
La sécurité des bases de données fait référence aux mesures prises pour garantir la sécurité et la confidentialité de toutes les données contenues dans la base. Les récentes violations et fuites de données chez Twitter, Marriott, le département des assurances du Texas, etc. nous rendent d'autant plus vigilants sur la question de la sécurité des données. Tous ces cas nous rappellent constamment que les sociétés et les entreprises peuvent subir de graves pertes si les données ne sont pas bien protégées et si les bases de données qu'elles utilisent ne sont pas sécurisées.
Comment la base de données vectorielles Milvus assure-t-elle la sécurité des données ?
Dans la version actuelle 2.1, la base de données vectorielle Milvus tente d'assurer la sécurité de la base de données via l'authentification et le cryptage. Plus précisément, au niveau de l'accès, Milvus prend en charge l'authentification de base des utilisateurs pour contrôler qui peut accéder à la base de données. Parallèlement, au niveau de la base de données, Milvus adopte le protocole de cryptage TLS (transport layer security) pour protéger la communication des données.
Authentification de l'utilisateur
La fonction d'authentification utilisateur de base de Milvus permet d'accéder à la base de données vectorielle à l'aide d'un nom d'utilisateur et d'un mot de passe pour assurer la sécurité des données. Cela signifie que les clients ne peuvent accéder à l'instance Milvus qu'en fournissant un nom d'utilisateur et un mot de passe authentifiés.
Le processus d'authentification dans la base de données vectorielle Milvus
Toutes les demandes gRPC sont traitées par le proxy Milvus, et l'authentification est donc effectuée par le proxy. Le processus de connexion avec les informations d'identification pour se connecter à l'instance Milvus est le suivant.
- Créer des informations d'identification pour chaque instance Milvus et les mots de passe cryptés sont stockés dans etcd. Milvus utilise bcrypt pour le chiffrement car il met en œuvre l'algorithme de hachage adaptatif de Provos et Mazières.
- Côté client, le SDK envoie un texte chiffré lors de la connexion au service Milvus. Le texte chiffré en base64 (
: ) est attaché aux métadonnées avec la clé authorization
. - Le proxy Milvus intercepte la demande et vérifie les informations d'identification.
- Les informations d'identification sont mises en cache localement dans le proxy.
flux de travail de l'authentification
Lorsque les informations d'identification sont mises à jour, le flux de travail du système Milvus est le suivant
- Le coordinateur racine est chargé des informations d'identification lorsque les API d'insertion, d'interrogation et de suppression sont appelées.
- Lorsque vous mettez à jour les informations d'identification parce que vous avez oublié le mot de passe, par exemple, le nouveau mot de passe est conservé dans etcd. Toutes les anciennes informations d'identification présentes dans le cache local du proxy sont alors invalidées.
- L'intercepteur d'authentification recherche d'abord les enregistrements dans le cache local. Si les informations d'identification dans le cache ne sont pas correctes, l'appel RPC pour récupérer l'enregistrement le plus récent dans la coordonnée racine sera déclenché. Les informations d'identification dans le cache local sont mises à jour en conséquence.
flux_de_mise_à_jour_des_crédentiels
Comment gérer l'authentification des utilisateurs dans la base de données vectorielle Milvus ?
Pour activer l'authentification, vous devez d'abord définir common.security.authorizationEnabled
comme true
lors de la configuration de Milvus dans le fichier milvus.yaml
.
Une fois l'authentification activée, un utilisateur root sera créé pour l'instance Milvus. Cet utilisateur root peut utiliser le mot de passe initial de Milvus
pour se connecter à la base de données vectorielle de Milvus.
from pymilvus import connections
connections.connect(
alias='default',
host='localhost',
port='19530',
user='root_user',
password='Milvus',
)
Nous recommandons vivement de modifier le mot de passe de l'utilisateur racine lors du premier démarrage de Milvus.
Ensuite, l'utilisateur root peut créer d'autres utilisateurs pour l'accès authentifié en exécutant la commande suivante pour créer de nouveaux utilisateurs.
from pymilvus import utility
utility.create_credential('user', 'password', using='default')
Il y a deux choses à retenir lors de la création de nouveaux utilisateurs :
Le nouveau nom d'utilisateur ne doit pas dépasser 32 caractères et doit commencer par une lettre. Seuls les traits de soulignement, les lettres et les chiffres sont autorisés dans le nom d'utilisateur. Par exemple, le nom d'utilisateur "2abc !" n'est pas accepté.
Quant au mot de passe, sa longueur doit être comprise entre 6 et 256 caractères.
Une fois le nouvel identifiant configuré, le nouvel utilisateur peut se connecter à l'instance Milvus avec le nom d'utilisateur et le mot de passe.
from pymilvus import connections
connections.connect(
alias='default',
host='localhost',
port='19530',
user='user',
password='password',
)
Comme pour tous les processus d'authentification, il n'y a pas lieu de s'inquiéter en cas d'oubli du mot de passe. Le mot de passe d'un utilisateur existant peut être réinitialisé à l'aide de la commande suivante.
from pymilvus import utility
utility.reset_password('user', 'new_password', using='default')
Lisez la documentation Milvus pour en savoir plus sur l'authentification des utilisateurs.
Connexion TLS
Transport layer security (TLS) est un type de protocole d'authentification qui assure la sécurité des communications dans un réseau informatique. TLS utilise des certificats pour fournir des services d'authentification entre deux ou plusieurs parties communicantes.
Comment activer TLS dans la base de données vectorielle Milvus ?
Pour activer TLS dans Milvus, vous devez d'abord exécuter la commande suivante afin de préparer deux fichiers pour générer le certificat : un fichier de configuration OpenSSL par défaut nommé openssl.cnf
et un fichier nommé gen.sh
utilisé pour générer les certificats pertinents.
mkdir cert && cd cert
touch openssl.cnf gen.sh
Ensuite, vous pouvez simplement copier et coller la configuration que nous fournissons ici dans les deux fichiers. Vous pouvez également apporter des modifications basées sur notre configuration afin de mieux répondre à votre application.
Lorsque les deux fichiers sont prêts, vous pouvez exécuter le fichier gen.sh
pour créer neuf fichiers de certificats. De même, vous pouvez modifier les configurations des neuf fichiers de certificats en fonction de vos besoins.
chmod +x gen.sh
./gen.sh
Il reste une dernière étape avant de pouvoir se connecter au service Milvus avec TLS. Vous devez définir tlsEnabled
sur true
et configurer les chemins d'accès aux fichiers server.pem
, server.key
et ca.pem
pour le serveur dans config/milvus.yaml
. Le code ci-dessous est un exemple.
tls:
serverPemPath: configs/cert/server.pem
serverKeyPath: configs/cert/server.key
caPemPath: configs/cert/ca.pem
common:
security:
tlsEnabled: true
Vous êtes alors prêt et pouvez vous connecter au service Milvus avec TLS tant que vous spécifiez les chemins d'accès aux fichiers client.pem
, client.key
, et ca.pem
pour le client lorsque vous utilisez le SDK de connexion Milvus. Le code ci-dessous est également un exemple.
from pymilvus import connections
_HOST = '127.0.0.1'
_PORT = '19530'
print(f"\nCreate connection...")
connections.connect(host=_HOST, port=_PORT, secure=True, client_pem_path="cert/client.pem",
client_key_path="cert/client.key",
ca_pem_path="cert/ca.pem", server_name="localhost")
print(f"\nList connections:")
print(connections.list_connections())
Prochaines étapes
Avec la sortie officielle de Milvus 2.1, nous avons préparé une série de blogs présentant les nouvelles fonctionnalités. En savoir plus sur cette série de blogs :
- Comment utiliser les données de chaînes de caractères pour renforcer vos applications de recherche de similitudes
- Utilisation de Milvus embarqué pour installer et exécuter instantanément Milvus avec Python
- Augmenter le débit de lecture de votre base de données vectorielle avec des répliques en mémoire
- Comprendre le niveau de cohérence dans la base de données vectorielle Milvus
- Comprendre le niveau de cohérence dans la base de données vectorielle Milvus (partie II)
- Comment la base de données vectorielle Milvus assure-t-elle la sécurité des données ?
- Qu'est-ce que la sécurité des bases de données et pourquoi est-elle importante ?
- Comment la base de données vectorielles Milvus assure-t-elle la sécurité des données ?
- Prochaines étapes
On This Page
Try Managed Milvus for Free
Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.
Get StartedLike the article? Spread the word