¿Cómo garantiza la base de datos Milvus Vector la seguridad de los datos?
Imagen de portada
En plena consideración de la seguridad de sus datos, la autenticación de usuario y la conexión de seguridad de la capa de transporte (TLS) están ahora oficialmente disponibles en Milvus 2.1. Sin autenticación de usuario, cualquiera puede acceder a todos los datos de su base de datos vectorial con SDK. Sin embargo, a partir de Milvus 2.1, sólo aquellos que dispongan de un nombre de usuario y una contraseña válidos podrán acceder a la base de datos vectorial de Milvus. Además, en Milvus 2.1 la seguridad de los datos se protege aún más mediante TLS, que garantiza la seguridad de las comunicaciones en una red informática.
Este artículo pretende analizar cómo la base de datos de vectores Milvus garantiza la seguridad de los datos con la autenticación de usuario y la conexión TLS y explicar cómo puede utilizar estas dos características como usuario que desea garantizar la seguridad de los datos cuando utiliza la base de datos de vectores.
Ir a:
- ¿Qué es la seguridad de la base de datos y por qué es importante?
- ¿Cómo garantiza la base de datos vectorial de Milvus la seguridad de los datos?
¿Qué es la seguridad de las bases de datos y por qué es importante?
La seguridad de las bases de datos se refiere a las medidas adoptadas para garantizar que todos los datos de la base de datos estén seguros y se mantengan confidenciales. Los recientes casos de filtración y filtración de datos en Twitter, Marriott, el Departamento de Seguros de Texas, etc. nos hacen estar aún más atentos a la cuestión de la seguridad de los datos. Todos estos casos nos recuerdan constantemente que las empresas y los negocios pueden sufrir graves pérdidas si los datos no están bien protegidos y las bases de datos que utilizan son seguras.
¿Cómo garantiza la base de datos vectorial Milvus la seguridad de los datos?
En la versión actual 2.1, la base de datos vectorial Milvus intenta garantizar la seguridad de la base de datos mediante la autenticación y la encriptación. Más concretamente, a nivel de acceso, Milvus admite la autenticación básica de usuarios para controlar quién puede acceder a la base de datos. Mientras tanto, en el nivel de la base de datos, Milvus adopta el protocolo de encriptación de seguridad de la capa de transporte (TLS) para proteger la comunicación de datos.
Autenticación de usuarios
La función de autenticación de usuario básica de Milvus permite acceder a la base de datos de vectores utilizando un nombre de usuario y una contraseña para garantizar la seguridad de los datos. Esto significa que los clientes sólo pueden acceder a la instancia de Milvus si proporcionan un nombre de usuario y una contraseña autenticados.
El flujo de trabajo de autenticación en la base de datos vectorial Milvus
Todas las peticiones gRPC son gestionadas por el proxy de Milvus, por lo que la autenticación es completada por el proxy. El flujo de trabajo de inicio de sesión con las credenciales para conectarse a la instancia Milvus es el siguiente.
- Crear credenciales para cada instancia Milvus y las contraseñas encriptadas se almacenan en etcd. Milvus utiliza bcrypt para el cifrado, ya que implementa el algoritmo de hashing adaptativo de Provos y Mazières.
- En el lado del cliente, SDK envía el texto cifrado cuando se conecta al servicio Milvus. El texto cifrado en base64 (
: ) se adjunta a los metadatos con la clave authorization
. - El proxy de Milvus intercepta la solicitud y verifica las credenciales.
- Las credenciales se almacenan en caché localmente en el proxy.
flujo de trabajo de autenticación
Cuando se actualizan las credenciales, el flujo de trabajo del sistema en Milvus es el siguiente
- El coordinador raíz se encarga de las credenciales cuando se llama a las API de inserción, consulta y eliminación.
- Cuando se actualizan las credenciales porque se olvida la contraseña por ejemplo, la nueva contraseña se persiste en etcd. Entonces se invalidan todas las credenciales antiguas de la caché local del proxy.
- El interceptor de autenticación busca primero los registros de la caché local. Si las credenciales de la caché no son correctas, se lanzará la llamada RPC para obtener el registro más actualizado del coord raíz. Y las credenciales en la caché local se actualizan en consecuencia.
credential_update_workflow (flujo de trabajo de actualización de credenciales)
Cómo gestionar la autenticación de usuarios en la base de datos vectorial de Milvus
Para habilitar la autenticación, primero debe establecer common.security.authorizationEnabled
en true
al configurar Milvus en el archivo milvus.yaml
.
Una vez habilitada, se creará un usuario raíz para la instancia de Milvus. Este usuario raíz puede utilizar la contraseña inicial de Milvus
para conectarse a la base de datos vectorial de Milvus.
from pymilvus import connections
connections.connect(
alias='default',
host='localhost',
port='19530',
user='root_user',
password='Milvus',
)
Recomendamos encarecidamente cambiar la contraseña del usuario raíz al iniciar Milvus por primera vez.
A continuación, el usuario root puede crear más usuarios nuevos para el acceso autenticado ejecutando el siguiente comando para crear nuevos usuarios.
from pymilvus import utility
utility.create_credential('user', 'password', using='default')
Hay dos cosas que recordar al crear nuevos usuarios:
En cuanto al nuevo nombre de usuario, no puede superar los 32 caracteres de longitud y debe empezar por una letra. Sólo se permiten guiones bajos, letras o números en el nombre de usuario. Por ejemplo, no se acepta un nombre de usuario "2abc".
En cuanto a la contraseña, su longitud debe ser de 6-256 caracteres.
Una vez configurada la nueva credencial, el nuevo usuario puede conectarse a la instancia de Milvus con el nombre de usuario y la contraseña.
from pymilvus import connections
connections.connect(
alias='default',
host='localhost',
port='19530',
user='user',
password='password',
)
Como en todos los procesos de autenticación, no debe preocuparse si olvida la contraseña. La contraseña de un usuario existente puede restablecerse con el siguiente comando.
from pymilvus import utility
utility.reset_password('user', 'new_password', using='default')
Lea la documentación de Milvus para saber más sobre la autenticación de usuarios.
Conexión TLS
La seguridad de la capa de transporte (TLS) es un tipo de protocolo de autenticación para proporcionar seguridad en las comunicaciones en una red informática. TLS utiliza certificados para proporcionar servicios de autenticación entre dos o más partes comunicantes.
Cómo habilitar TLS en la base de datos de vectores de Milvus
Para habilitar TLS en Milvus, primero necesita ejecutar el siguiente comando para preparar dos archivos para generar el certificado: un archivo de configuración OpenSSL por defecto llamado openssl.cnf
y un archivo llamado gen.sh
utilizado para generar certificados relevantes.
mkdir cert && cd cert
touch openssl.cnf gen.sh
A continuación, puede simplemente copiar y pegar la configuración que proporcionamos aquí en los dos archivos. O también puedes hacer modificaciones basadas en nuestra configuración para adaptarla mejor a tu aplicación.
Cuando los dos archivos estén listos, puede ejecutar el archivo gen.sh
para crear nueve archivos de certificado. Del mismo modo, también puedes modificar las configuraciones de los nueve archivos de certificado para adaptarlas a tus necesidades.
chmod +x gen.sh
./gen.sh
Hay un último paso antes de que pueda conectarse al servicio Milvus con TLS. Tiene que establecer tlsEnabled
en true
y configurar las rutas de archivos de server.pem
, server.key
, y ca.pem
para el servidor en config/milvus.yaml
. El siguiente código es un ejemplo.
tls:
serverPemPath: configs/cert/server.pem
serverKeyPath: configs/cert/server.key
caPemPath: configs/cert/ca.pem
common:
security:
tlsEnabled: true
Entonces ya está todo listo y puede conectarse al servicio Milvus con TLS siempre que especifique las rutas de archivo de client.pem
, client.key
, y ca.pem
para el cliente cuando utilice el SDK de conexión de Milvus. El código siguiente es también un ejemplo.
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())
Próximos pasos
Con el lanzamiento oficial de Milvus 2.1, hemos preparado una serie de blogs presentando las nuevas características. Lea más en esta serie de blogs:
- Cómo utilizar datos de cadenas para potenciar sus aplicaciones de búsqueda por similitud
- Uso de Milvus integrado para instalar y ejecutar Milvus con Python de forma instantánea
- Aumente el rendimiento de lectura de su base de datos vectorial con réplicas en memoria
- Comprender el nivel de consistencia en la base de datos vectorial Milvus
- Comprender el nivel de consistencia en la base de datos vectorial de Milvus (Parte II)
- ¿Cómo Garantiza la Seguridad de los Datos la Base de Datos Vectorial de Milvus?
- ¿Qué es la seguridad de las bases de datos y por qué es importante?
- ¿Cómo garantiza la base de datos vectorial Milvus la seguridad de los datos?
- Próximos pasos
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