Wie gewährleistet die Milvus-Vektor-Datenbank die Datensicherheit?
Titelbild
Um die Sicherheit Ihrer Daten zu gewährleisten, sind Benutzerauthentifizierung und Transport Layer Security (TLS)-Verbindung jetzt offiziell in Milvus 2.1 verfügbar. Ohne Benutzerauthentifizierung kann jeder mit dem SDK auf alle Daten in Ihrer Vektordatenbank zugreifen. Ab Milvus 2.1 können jedoch nur Personen mit einem gültigen Benutzernamen und Passwort auf die Milvus-Vektordatenbank zugreifen. Darüber hinaus wird in Milvus 2.1 die Datensicherheit durch TLS weiter geschützt, was eine sichere Kommunikation in einem Computernetzwerk gewährleistet.
In diesem Artikel soll analysiert werden, wie die Vektordatenbank Milvus die Datensicherheit durch Benutzerauthentifizierung und TLS-Verbindung gewährleistet, und es soll erklärt werden, wie Sie als Benutzer, der die Datensicherheit bei der Verwendung der Vektordatenbank gewährleisten möchte, diese beiden Funktionen nutzen können.
Springen Sie zu:
- Was ist Datenbanksicherheit und warum ist sie wichtig?
- Wie gewährleistet die Vektordatenbank Milvus die Datensicherheit?
Was ist Datenbanksicherheit und warum ist sie wichtig?
Datenbanksicherheit bezieht sich auf die Maßnahmen, die ergriffen werden, um sicherzustellen, dass alle Daten in der Datenbank sicher sind und vertraulich behandelt werden. Die jüngsten Fälle von Datenschutzverletzungen und Datenlecks bei Twitter, Marriott, dem texanischen Versicherungsministerium usw. machen uns umso wachsamer in Bezug auf das Thema Datensicherheit. All diese Fälle erinnern uns ständig daran, dass Firmen und Unternehmen schwere Verluste erleiden können, wenn die Daten nicht gut geschützt sind und die von ihnen verwendeten Datenbanken nicht sicher sind.
Wie gewährleistet die Vektordatenbank Milvus die Datensicherheit?
In der aktuellen Version 2.1 versucht die Milvus Vektordatenbank, die Sicherheit der Datenbank durch Authentifizierung und Verschlüsselung zu gewährleisten. Genauer gesagt, unterstützt Milvus auf der Zugriffsebene eine grundlegende Benutzerauthentifizierung, um zu kontrollieren, wer auf die Datenbank zugreifen kann. Auf der Datenbankebene verwendet Milvus das TLS-Verschlüsselungsprotokoll (Transport Layer Security), um die Datenkommunikation zu schützen.
Benutzerauthentifizierung
Die grundlegende Benutzerauthentifizierung in Milvus unterstützt den Zugriff auf die Vektordatenbank unter Verwendung eines Benutzernamens und eines Passworts, um die Datensicherheit zu gewährleisten. Das bedeutet, dass Clients nur dann auf die Milvus-Instanz zugreifen können, wenn sie einen authentifizierten Benutzernamen und ein Passwort angeben.
Der Authentifizierungs-Workflow in der Milvus-Vektordatenbank
Alle gRPC-Anfragen werden vom Milvus-Proxy bearbeitet, daher wird die Authentifizierung vom Proxy durchgeführt. Der Arbeitsablauf für die Anmeldung mit den Anmeldedaten zur Verbindung mit der Milvus-Instanz sieht folgendermaßen aus.
- Erstellen Sie Anmeldeinformationen für jede Milvus-Instanz, und die verschlüsselten Passwörter werden in etcd gespeichert. Milvus verwendet bcrypt zur Verschlüsselung, da es den adaptiven Hashing-Algorithmus von Provos und Mazières implementiert.
- Auf der Client-Seite sendet das SDK bei der Verbindung mit dem Milvus-Dienst einen Chiffretext. Der base64-Chiffretext (
: ) wird mit dem Schlüssel authorization
an die Metadaten angehängt. - Der Milvus-Proxy fängt die Anfrage ab und prüft die Anmeldedaten.
- Die Berechtigungsnachweise werden lokal im Proxy zwischengespeichert.
authetication_workflow
Wenn die Berechtigungsnachweise aktualisiert werden, sieht der Systemworkflow in Milvus wie folgt aus
- Der Root-Koordinator ist für die Anmeldeinformationen zuständig, wenn die APIs zum Einfügen, Abfragen und Löschen aufgerufen werden.
- Wenn Sie die Anmeldedaten aktualisieren, weil Sie z.B. das Passwort vergessen haben, wird das neue Passwort in etcd festgehalten. Dann werden alle alten Anmeldeinformationen im lokalen Cache des Proxys ungültig gemacht.
- Der Authentifizierungsinterceptor sucht zuerst nach den Datensätzen im lokalen Cache. Wenn die Anmeldeinformationen im Cache nicht korrekt sind, wird der RPC-Aufruf zum Abrufen des aktuellsten Datensatzes aus dem Stammverzeichnis ausgelöst. Die Anmeldeinformationen im lokalen Cache werden entsprechend aktualisiert.
credential_update_workflow
Wie verwaltet man die Benutzerauthentifizierung in der Milvus-Vektor-Datenbank?
Um die Authentifizierung zu aktivieren, müssen Sie zunächst common.security.authorizationEnabled
auf true
setzen, wenn Sie Milvus in der Datei milvus.yaml
konfigurieren.
Sobald die Authentifizierung aktiviert ist, wird ein Root-Benutzer für die Milvus-Instanz erstellt. Dieser Root-Benutzer kann das anfängliche Passwort Milvus
verwenden, um sich mit der Milvus-Vektor-Datenbank zu verbinden.
from pymilvus import connections
connections.connect(
alias='default',
host='localhost',
port='19530',
user='root_user',
password='Milvus',
)
Wir empfehlen dringend, das Passwort des Root-Benutzers zu ändern, wenn Sie Milvus zum ersten Mal starten.
Anschließend kann der Root-Benutzer weitere neue Benutzer für den authentifizierten Zugriff erstellen, indem er den folgenden Befehl zum Erstellen neuer Benutzer ausführt.
from pymilvus import utility
utility.create_credential('user', 'password', using='default')
Beim Anlegen neuer Benutzer sind zwei Dinge zu beachten:
Der neue Benutzername darf nicht länger als 32 Zeichen sein und muss mit einem Buchstaben beginnen. Nur Unterstriche, Buchstaben oder Zahlen sind im Benutzernamen erlaubt. Der Benutzername "2abc!" wird zum Beispiel nicht akzeptiert.
Die Länge des Passworts sollte zwischen 6 und 256 Zeichen liegen.
Sobald die neuen Anmeldedaten eingerichtet sind, kann sich der neue Benutzer mit dem Benutzernamen und dem Passwort mit der Milvus-Instanz verbinden.
from pymilvus import connections
connections.connect(
alias='default',
host='localhost',
port='19530',
user='user',
password='password',
)
Wie bei allen Authentifizierungsverfahren müssen Sie sich keine Sorgen machen, wenn Sie das Passwort vergessen haben. Das Passwort für einen bestehenden Benutzer kann mit dem folgenden Befehl zurückgesetzt werden.
from pymilvus import utility
utility.reset_password('user', 'new_password', using='default')
Lesen Sie die Milvus-Dokumentation, um mehr über die Benutzerauthentifizierung zu erfahren.
TLS-Verbindung
Transport Layer Security (TLS) ist eine Art Authentifizierungsprotokoll, das die Kommunikationssicherheit in einem Computernetzwerk gewährleistet. TLS verwendet Zertifikate, um Authentifizierungsdienste zwischen zwei oder mehreren kommunizierenden Parteien bereitzustellen.
So aktivieren Sie TLS in der Milvus-Vektor-Datenbank
Um TLS in Milvus zu aktivieren, müssen Sie zunächst den folgenden Befehl ausführen, um zwei Dateien für die Erzeugung des Zertifikats zu erstellen: eine Standard-OpenSSL-Konfigurationsdatei namens openssl.cnf
und eine Datei namens gen.sh
, die für die Erzeugung der entsprechenden Zertifikate verwendet wird.
mkdir cert && cd cert
touch openssl.cnf gen.sh
Dann können Sie einfach die Konfiguration, die wir hier bereitstellen, in die beiden Dateien kopieren und einfügen. Sie können aber auch Änderungen auf der Grundlage unserer Konfiguration vornehmen, um sie besser an Ihre Anwendung anzupassen.
Wenn die beiden Dateien fertig sind, können Sie die Datei gen.sh
ausführen, um neun Zertifikatsdateien zu erstellen. Ebenso können Sie die Konfigurationen in den neun Zertifikatsdateien an Ihre Bedürfnisse anpassen.
chmod +x gen.sh
./gen.sh
Es gibt noch einen letzten Schritt, bevor Sie sich mit dem Milvus-Dienst über TLS verbinden können. Sie müssen tlsEnabled
auf true
setzen und die Dateipfade von server.pem
, server.key
, und ca.pem
für den Server in config/milvus.yaml
konfigurieren. Der folgende Code ist ein Beispiel.
tls:
serverPemPath: configs/cert/server.pem
serverKeyPath: configs/cert/server.key
caPemPath: configs/cert/ca.pem
common:
security:
tlsEnabled: true
Dann sind Sie bereit und können eine Verbindung zum Milvus-Dienst mit TLS herstellen, solange Sie die Dateipfade von client.pem
, client.key
und ca.pem
für den Client angeben, wenn Sie das Milvus-Verbindungs-SDK verwenden. Der folgende Code ist auch ein Beispiel.
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())
Was kommt als Nächstes?
Mit der offiziellen Freigabe von Milvus 2.1 haben wir eine Reihe von Blogs vorbereitet, in denen die neuen Funktionen vorgestellt werden. Lesen Sie mehr in dieser Blogserie:
- Wie Sie String-Daten für Ihre Anwendungen zur Ähnlichkeitssuche nutzen können
- Verwendung von Embedded Milvus zur sofortigen Installation und Ausführung von Milvus mit Python
- Erhöhen Sie den Lesedurchsatz Ihrer Vektordatenbank mit In-Memory-Replikaten
- Verständnis der Konsistenzebene in der Milvus-Vektordatenbank
- Verständnis der Konsistenzstufe in der Milvus-Vektordatenbank (Teil II)
- Wie gewährleistet die Milvus-Vektor-Datenbank die Datensicherheit?
- Was ist Datenbanksicherheit und warum ist sie wichtig?
- Wie gewährleistet die Vektordatenbank Milvus die Datensicherheit?
- Was kommt als Nächstes?
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