翻译|李睿评论|孙书娟Milvus2.1充分考虑数据安全,用户认证和传输层安全(TLS)连接正式可用。任何人都可以使用SDK访问矢量数据库中的所有数据而无需用户身份验证。但是,从Milvus2.1开始,只有拥有有效用户名和密码的用户才能访问Milvus矢量数据库。此外,在Milvus2.1中,数据安全进一步受到传输层安全协议(TLS)的保护,可以确保计算机网络中的安全通信。本文旨在分析VectorDBMilvus如何通过用户身份验证和TLS连接来保护数据,并解释作为用户在使用VectorDB时如何确保数据安全,如何利用这两个特性。什么是数据库安全,为什么它很重要?数据库安全是指为确保数据库中所有数据的安全性和机密性而采取的措施。最近发生在推特公司、万豪酒店和德州保险局等公司的数据泄露事件,让人们对数据安全问题更加警惕。所有这些案例都在不断提醒人们,如果数据没有得到很好的保护并且他们使用的数据库是安全的,企业或组织可能会遭受严重损失。Milvus矢量数据库如何保证数据安全?在当前的2.1版本中,Milvus矢量数据库试图通过鉴权和加密来保证数据库的安全。更具体地说,在访问级别,Milvus支持基本的用户身份验证来控制谁可以访问数据库。同时,在数据库层面,Milvus使用传输层安全(TLS)加密协议保护数据通信。用户认证Milvus矢量数据库中的基本用户认证功能支持使用用户名和密码访问矢量数据库,确保数据安全。这意味着客户端只有在提供经过身份验证的用户名和密码后才能访问Milvus实例。1.MilvusVector数据库中的鉴权工作流程所有的gRPC请求都由Milvusproxy处理;因此,身份验证由代理完成。使用凭据登录和连接Milvus实例的过程如下:(1)为每个Milvus实例创建一个凭据,并将加密后的密码存储在etcd中。Milvus使用bcrypt进行加密,因为它实现了Provos和Mazières的自适应哈希算法。(2)在客户端,SDK在连接Milvus服务时发送密文。base64密文(:)通过密钥授权附加到元数据中。(3)Milvus代理拦截请求并验证凭据。(4)凭据缓存在代理本地。认证工作流程更新凭证后,Milvus向量数据库中的系统工作流程如下:(1)Rootcoord负责在插入、查询、删除API时调用凭证。(2)当用户因为忘记密码更新凭证时,例如,新密码将保存在etcd中。那么代理本地缓存中的任何旧凭据都将失效。(3)认证拦截器首先从本地缓存中查找记录。如果缓存中的凭据不正确,将触发从根坐标获取最新记录的RPC调用。本地缓存中的凭据也会相应更新。凭证更新流程2.Milvus向量数据库中如何管理用户认证要启用认证,首先需要在milvus.yaml文件中配置Milvus时将common.security.authorizationEnabled设置为true。启用后,将为Milvus实例创建一个root用户。root用户可以使用Milvus初始密码连接Milvus向量数据库。frompymilvusimportconnectionsconnections.connect(alias='default',host='localhost',port='19530',user='root_user',password='Milvus',)强烈建议启动时更改root用户Milvus向量数据库首次密码。然后,root用户可以通过运行以下命令创建新用户来进一步创建更多新用户以进行身份??验证访问。frompymilvusimportutilityutility.create_credential('user','password',using='default')创建新用户需要注意两点:新用户名不能超过32个字符,必须以字母开头.用户名中只允许使用下划线、字母或数字。例如,用户名“2abc!”不被接受。至于密码,其长度应为6至256个字符。设置新凭证后,新用户可以使用用户名和密码连接到Milvus实例。frompymilvusimportconnectionsconnections.connect(alias='default',host='localhost',port='19530',user='user',password='password',)与所有身份验证过程一样,不用担心忘记你的密码。可以使用以下命令重置现有用户的密码。frompymilvusimportutilityutility.reset_password('user','new_password',using='default')2.TLS连接传输层安全(TLS)是一种用于在计算机网络中提供通信安全的身份验证协议。TLS使用证书在两个或多个通信方之间提供身份验证服务。(一)如何在Milvus矢量数据库中启用TLS要在Milvus矢量数据库中启用TLS,首先需要运行以下命令准备两个用于生成证书的文件:一个名为openssl.cnf的默认OpenSSL配置文件和一个名为gen.shused文件用于生成相关证书。mkdircert&&cdcerttouchopenssl.cnfgen.sh然后可以将此处提供的配置复制并粘贴到这两个文件中。或者可以根据我的配置进行修改以更好地适应应用程序。当这两个文件准备好后,就可以运行gen.sh文件来创建九个证书文件了。同样,九个证书文件中的配置也可以根据需要进行修改。chmod+xgen.sh./gen.sh在使用TLS连接Milvus服务之前还有最后一步。必须将tlsEnabled设置为true,并在config/milvus.yaml中配置服务器的server.pem、server.key和ca.pem文件路径。下面的代码是一个例子。tls:serverPemPath:configs/cert/server.pemserverKeyPath:configs/cert/server.keycaPemPath:configs/cert/ca.pemcommon:security:tlsEnabled:true那么在使用Milvus连接的时候为客户端指定client即可开发工具包。pem、client.key和ca.pem文件路径,您可以通过TLS连接到Milvus服务。下面的代码也是一个例子。frompymilvusimportconnections_HOST='127.0.0.1'_PORT='19530'print(f"\nCreateconnection...")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"\nListconnections:")print(connections.list_connections())原标题:Milvus向量数据库如何保障数据安全?,作者:AngelaNi
