Como é que a base de dados Milvus Vetor garante a segurança dos dados?
Imagem da capa
Tendo em conta a segurança dos seus dados, a autenticação do utilizador e a ligação TLS (Transport Layer Security) estão agora oficialmente disponíveis no Milvus 2.1. Sem a autenticação do utilizador, qualquer pessoa pode aceder a todos os dados da sua base de dados vetorial com o SDK. No entanto, a partir do Milvus 2.1, apenas as pessoas com um nome de utilizador e uma palavra-passe válidos podem aceder à base de dados vetorial do Milvus. Além disso, no Milvus 2.1, a segurança dos dados é ainda mais protegida pelo TLS, que garante comunicações seguras numa rede informática.
Este artigo pretende analisar a forma como a base de dados vetorial Milvus garante a segurança dos dados com a autenticação do utilizador e a ligação TLS e explicar como pode utilizar estas duas funcionalidades enquanto utilizador que pretende garantir a segurança dos dados ao utilizar a base de dados vetorial.
Saltar para:
- O que é a segurança da base de dados e porque é que é importante?
- Como é que a base de dados vetorial Milvus garante a segurança dos dados?
O que é a segurança da base de dados e porque é que é importante?
A segurança da base de dados refere-se às medidas adoptadas para garantir que todos os dados da base de dados estão seguros e são mantidos confidenciais. Os recentes casos de violação e fuga de dados no Twitter, Marriott, Texas Department of Insurance, etc. tornam-nos ainda mais atentos à questão da segurança dos dados. Todos estes casos recordam-nos constantemente que as empresas e os negócios podem sofrer graves perdas se os dados não estiverem bem protegidos e se as bases de dados que utilizam não forem seguras.
Como é que a base de dados vetorial Milvus garante a segurança dos dados?
Na atual versão 2.1, a base de dados vetorial Milvus tenta garantir a segurança da base de dados através da autenticação e da encriptação. Mais especificamente, ao nível do acesso, o Milvus suporta a autenticação básica do utilizador para controlar quem pode aceder à base de dados. Entretanto, ao nível da base de dados, o Milvus adopta o protocolo de encriptação TLS (Transport Layer Security) para proteger a comunicação de dados.
Autenticação do utilizador
A funcionalidade de autenticação básica do utilizador no Milvus permite aceder à base de dados de vectores utilizando um nome de utilizador e uma palavra-passe para garantir a segurança dos dados. Isto significa que os clientes só podem aceder à instância do Milvus se fornecerem um nome de utilizador e uma palavra-passe autenticados.
O fluxo de trabalho de autenticação na base de dados vetorial Milvus
Todos os pedidos gRPC são tratados pelo proxy Milvus, pelo que a autenticação é efectuada pelo proxy. O fluxo de trabalho para iniciar a sessão com as credenciais de ligação à instância Milvus é o seguinte
- Criar credenciais para cada instância do Milvus e as palavras-passe encriptadas são armazenadas no etcd. O Milvus utiliza o bcrypt para a encriptação, uma vez que implementa o algoritmo de hashing adaptativo de Provos e Mazières.
- No lado do cliente, o SDK envia texto cifrado quando se liga ao serviço Milvus. O texto cifrado em base64 (
: ) é anexado aos metadados com a chave authorization
. - O proxy Milvus intercepta o pedido e verifica as credenciais.
- As credenciais são armazenadas em cache localmente no proxy.
fluxo de trabalho de autenticação
Quando as credenciais são actualizadas, o fluxo de trabalho do sistema Milvus é o seguinte
- O coordenador de raiz é responsável pelas credenciais quando são chamadas as API de inserção, consulta e eliminação.
- Quando se actualizam as credenciais por esquecimento da palavra-passe, por exemplo, a nova palavra-passe é guardada no etcd. Em seguida, todas as credenciais antigas no cache local do proxy são invalidadas.
- O intercetor de autenticação procura primeiro os registos da cache local. Se as credenciais na cache não estiverem corretas, será acionada a chamada RPC para ir buscar o registo mais atualizado à coordenada raiz. E as credenciais na cache local são actualizadas em conformidade.
credential_update_workflow
Como gerir a autenticação do utilizador na base de dados vetorial Milvus
Para ativar a autenticação, é necessário definir primeiro common.security.authorizationEnabled
para true
ao configurar o Milvus no ficheiro milvus.yaml
.
Uma vez activada, será criado um utilizador raiz para a instância do Milvus. Este utilizador raiz pode utilizar a palavra-passe inicial de Milvus
para se ligar à base de dados de vectores do Milvus.
from pymilvus import connections
connections.connect(
alias='default',
host='localhost',
port='19530',
user='root_user',
password='Milvus',
)
Recomendamos vivamente que altere a palavra-passe do utilizador raiz quando iniciar o Milvus pela primeira vez.
Em seguida, o utilizador root pode criar mais utilizadores novos para acesso autenticado, executando o seguinte comando para criar novos utilizadores.
from pymilvus import utility
utility.create_credential('user', 'password', using='default')
Há duas coisas a ter em conta quando se criam novos utilizadores:
Quanto ao novo nome de utilizador, não pode exceder 32 caracteres de comprimento e deve começar com uma letra. Só são permitidos sublinhados, letras ou números no nome de utilizador. Por exemplo, um nome de utilizador "2abc!" não é aceite.
Quanto à palavra-passe, o seu comprimento deve ser de 6-256 caracteres.
Uma vez configurada a nova credencial, o novo utilizador pode ligar-se à instância Milvus com o nome de utilizador e a palavra-passe.
from pymilvus import connections
connections.connect(
alias='default',
host='localhost',
port='19530',
user='user',
password='password',
)
Como em todos os processos de autenticação, não tem de se preocupar se se esquecer da palavra-passe. A palavra-passe de um utilizador existente pode ser redefinida com o seguinte comando.
from pymilvus import utility
utility.reset_password('user', 'new_password', using='default')
Leia a documentação do Milvus para saber mais sobre a autenticação do utilizador.
Ligação TLS
A segurança da camada de transporte (TLS) é um tipo de protocolo de autenticação para fornecer segurança de comunicações numa rede de computadores. O TLS usa certificados para fornecer serviços de autenticação entre duas ou mais partes em comunicação.
Como ativar o TLS na base de dados vetorial Milvus
Para ativar o TLS no Milvus, é necessário executar primeiro o seguinte comando para preparar dois ficheiros para gerar o certificado: um ficheiro de configuração OpenSSL predefinido com o nome openssl.cnf
e um ficheiro com o nome gen.sh
utilizado para gerar certificados relevantes.
mkdir cert && cd cert
touch openssl.cnf gen.sh
Em seguida, pode simplesmente copiar e colar a configuração que fornecemos aqui para os dois ficheiros. Ou pode também fazer modificações com base na nossa configuração para melhor se adequar à sua aplicação.
Quando os dois ficheiros estiverem prontos, pode executar o ficheiro gen.sh
para criar nove ficheiros de certificados. Da mesma forma, também pode modificar as configurações nos nove ficheiros de certificado para se adequarem às suas necessidades.
chmod +x gen.sh
./gen.sh
Há um passo final antes de se poder ligar ao serviço Milvus com TLS. Tem de definir tlsEnabled
para true
e configurar os caminhos de ficheiro de server.pem
, server.key
e ca.pem
para o servidor em config/milvus.yaml
. O código abaixo é um exemplo.
tls:
serverPemPath: configs/cert/server.pem
serverKeyPath: configs/cert/server.key
caPemPath: configs/cert/ca.pem
common:
security:
tlsEnabled: true
Em seguida, está tudo pronto e pode ligar-se ao serviço Milvus com TLS, desde que especifique os caminhos de ficheiro client.pem
, client.key
e ca.pem
para o cliente quando utilizar o SDK de ligação Milvus. O código abaixo também é um exemplo.
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())
O que vem a seguir
Com o lançamento oficial do Milvus 2.1, preparámos uma série de blogues que apresentam as novas funcionalidades. Leia mais nesta série de blogues:
- Como utilizar dados de cadeias de caracteres para potenciar as suas aplicações de pesquisa por semelhança
- Usando o Embedded Milvus para instalar e executar instantaneamente o Milvus com Python
- Aumente a taxa de transferência de leitura do seu banco de dados vetorial com réplicas na memória
- Entendendo o nível de consistência no banco de dados vetorial do Milvus
- Entendendo o nível de consistência no banco de dados vetorial do Milvus (Parte II)
- Como o banco de dados vetorial Milvus garante a segurança dos dados?
- O que é a segurança da base de dados e porque é que é importante?
- Como é que a base de dados vetorial Milvus garante a segurança dos dados?
- O que vem a seguir
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