🚀 Essayez Zilliz Cloud, la version entièrement gérée de Milvus, gratuitement—découvrez des performances 10x plus rapides ! Essayez maintenant>>

milvus-logo
LFAI

HomeBlogsComment la base de données vectorielles Milvus garantit-elle la sécurité des données ?

Comment la base de données vectorielles Milvus garantit-elle la sécurité des données ?

  • Engineering
September 05, 2022
Angela Ni

Cover image 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 ?

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.

  1. 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.
  2. 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.
  3. Le proxy Milvus intercepte la demande et vérifie les informations d'identification.
  4. Les informations d'identification sont mises en cache localement dans le proxy.

authetication_workflow 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

  1. Le coordinateur racine est chargé des informations d'identification lorsque les API d'insertion, d'interrogation et de suppression sont appelées.
  2. 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.
  3. 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.

credential_update_workflow 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 :

  1. 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é.

  2. 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 :

Like the article? Spread the word

Continuer à Lire