In che modo il database Milvus Vector garantisce la sicurezza dei dati?
Immagine di copertina
In considerazione della sicurezza dei vostri dati, l'autenticazione dell'utente e la connessione con sicurezza del livello di trasporto (TLS) sono ora ufficialmente disponibili in Milvus 2.1. Senza l'autenticazione dell'utente, chiunque può accedere a tutti i dati del database vettoriale con l'SDK. Tuttavia, a partire da Milvus 2.1, solo chi possiede un nome utente e una password validi può accedere al database vettoriale di Milvus. Inoltre, in Milvus 2.1 la sicurezza dei dati è ulteriormente protetta da TLS, che garantisce comunicazioni sicure in una rete di computer.
Questo articolo si propone di analizzare come il database vettoriale Milvus garantisca la sicurezza dei dati con l'autenticazione dell'utente e la connessione TLS e di spiegare come si possono utilizzare queste due funzioni come utenti che vogliono garantire la sicurezza dei dati quando utilizzano il database vettoriale.
Vai a:
- Cos'è la sicurezza del database e perché è importante?
- In che modo il database vettoriale Milvus garantisce la sicurezza dei dati?
Cos'è la sicurezza del database e perché è importante?
La sicurezza del database si riferisce alle misure adottate per garantire la sicurezza e la riservatezza di tutti i dati contenuti nel database. I recenti casi di violazione e fuga di dati di Twitter, Marriott, Texas Department of Insurance, ecc. ci rendono ancora più attenti al problema della sicurezza dei dati. Tutti questi casi ci ricordano costantemente che le aziende e le imprese possono subire gravi perdite se i dati non sono ben protetti e i database che utilizzano sono sicuri.
In che modo il database vettoriale Milvus garantisce la sicurezza dei dati?
Nell'attuale versione 2.1, il database vettoriale Milvus cerca di garantire la sicurezza del database attraverso l'autenticazione e la crittografia. In particolare, a livello di accesso, Milvus supporta l'autenticazione di base degli utenti per controllare chi può accedere al database. A livello di database, invece, Milvus adotta il protocollo di crittografia Transport Layer Security (TLS) per proteggere la comunicazione dei dati.
Autenticazione dell'utente
La funzione di autenticazione utente di base di Milvus consente di accedere al database dei vettori utilizzando un nome utente e una password per garantire la sicurezza dei dati. Ciò significa che i clienti possono accedere all'istanza Milvus solo dopo aver fornito un nome utente e una password autenticati.
Il flusso di autenticazione nel database vettoriale di Milvus
Tutte le richieste gRPC sono gestite dal proxy Milvus, quindi l'autenticazione è completata dal proxy. Il flusso di lavoro per l'accesso con le credenziali per la connessione all'istanza Milvus è il seguente.
- Creare le credenziali per ogni istanza Milvus e le password criptate sono memorizzate in etcd. Milvus utilizza bcrypt per la crittografia, poiché implementa l'algoritmo di hashing adattivo di Provos e Mazières.
- Sul lato client, l'SDK invia un testo cifrato quando si connette al servizio Milvus. Il testo cifrato in base64 (
: ) è allegato ai metadati con la chiave authorization
. - Il proxy Milvus intercetta la richiesta e verifica le credenziali.
- Le credenziali sono memorizzate nella cache locale del proxy.
flusso_di_autenticazione
Quando le credenziali vengono aggiornate, il flusso di lavoro del sistema in Milvus è il seguente
- Il coordinatore principale si occupa delle credenziali quando vengono chiamate le API di inserimento, interrogazione e cancellazione.
- Quando si aggiornano le credenziali, ad esempio perché si è dimenticata la password, la nuova password viene memorizzata in etcd. Quindi tutte le vecchie credenziali nella cache locale del proxy vengono invalidate.
- L'intercettore di autenticazione cerca prima i record della cache locale. Se le credenziali nella cache non sono corrette, viene attivata la chiamata RPC per recuperare il record più aggiornato dal coord root. Le credenziali nella cache locale vengono aggiornate di conseguenza.
flusso_aggiornamento_credenziali
Come gestire l'autenticazione degli utenti nel database vettoriale Milvus
Per abilitare l'autenticazione, è necessario prima impostare common.security.authorizationEnabled
su true
quando si configura Milvus nel file milvus.yaml
.
Una volta abilitata, verrà creato un utente root per l'istanza Milvus. Questo utente root può usare la password iniziale di Milvus
per connettersi al database dei vettori di Milvus.
from pymilvus import connections
connections.connect(
alias='default',
host='localhost',
port='19530',
user='root_user',
password='Milvus',
)
Si consiglia di cambiare la password dell'utente root quando si avvia Milvus per la prima volta.
L'utente root può poi creare altri nuovi utenti per l'accesso autenticato eseguendo il seguente comando per creare nuovi utenti.
from pymilvus import utility
utility.create_credential('user', 'password', using='default')
Ci sono due cose da ricordare quando si creano nuovi utenti:
Per quanto riguarda il nuovo nome utente, non può superare i 32 caratteri e deve iniziare con una lettera. Nel nome utente sono ammessi solo trattini bassi, lettere o numeri. Ad esempio, un nome utente di "2abc!" non è accettato.
La lunghezza della password deve essere compresa tra 6 e 256 caratteri.
Una volta impostata la nuova credenziale, il nuovo utente può collegarsi all'istanza Milvus con il nome utente e la password.
from pymilvus import connections
connections.connect(
alias='default',
host='localhost',
port='19530',
user='user',
password='password',
)
Come per tutti i processi di autenticazione, non ci si deve preoccupare se si dimentica la password. La password di un utente esistente può essere reimpostata con il seguente comando.
from pymilvus import utility
utility.reset_password('user', 'new_password', using='default')
Leggete la documentazione di Milvus per saperne di più sull'autenticazione degli utenti.
Connessione TLS
La sicurezza del livello di trasporto (TLS) è un tipo di protocollo di autenticazione che garantisce la sicurezza delle comunicazioni in una rete di computer. TLS utilizza certificati per fornire servizi di autenticazione tra due o più parti comunicanti.
Come abilitare il TLS nel database dei vettori Milvus
Per abilitare il TLS in Milvus, occorre innanzitutto eseguire il seguente comando per preparare due file per la generazione del certificato: un file di configurazione OpenSSL predefinito chiamato openssl.cnf
e un file chiamato gen.sh
usato per generare i certificati pertinenti.
mkdir cert && cd cert
touch openssl.cnf gen.sh
Quindi si può semplicemente copiare e incollare la configurazione fornita qui nei due file. Oppure si possono apportare modifiche basate sulla nostra configurazione per adattarla meglio alla propria applicazione.
Quando i due file sono pronti, si può eseguire il file gen.sh
per creare nove file di certificati. Allo stesso modo, è possibile modificare le configurazioni dei nove file di certificato in base alle proprie esigenze.
chmod +x gen.sh
./gen.sh
C'è un ultimo passaggio prima di potersi connettere al servizio Milvus con TLS. Bisogna impostare tlsEnabled
su true
e configurare i percorsi dei file server.pem
, server.key
e ca.pem
per il server in config/milvus.yaml
. Il codice qui sotto è un esempio.
tls:
serverPemPath: configs/cert/server.pem
serverKeyPath: configs/cert/server.key
caPemPath: configs/cert/ca.pem
common:
security:
tlsEnabled: true
A questo punto è tutto pronto e ci si può connettere al servizio Milvus con TLS, purché si specifichino i percorsi dei file client.pem
, client.key
e ca.pem
per il client quando si usa l'SDK di connessione Milvus. Il codice qui sotto è anche un esempio.
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())
Il prossimo passo
Con il rilascio ufficiale di Milvus 2.1, abbiamo preparato una serie di blog che introducono le nuove funzionalità. Per saperne di più, leggete questa serie di blog:
- Come utilizzare i dati delle stringhe per potenziare le applicazioni di ricerca per similarità
- Utilizzo di Milvus incorporato per installare ed eseguire immediatamente Milvus con Python
- Aumentare la velocità di lettura del database vettoriale con le repliche in memoria
- Capire il livello di consistenza del database vettoriale Milvus
- Capire il livello di consistenza del database vettoriale Milvus (parte II)
- In che modo il database vettoriale Milvus garantisce la sicurezza dei dati?
- Cos'è la sicurezza del database e perché è importante?
- In che modo il database vettoriale Milvus garantisce la sicurezza dei dati?
- Il prossimo passo
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