Milvus向量數(shù)據(jù)庫如何確保數(shù)據(jù)安全?
譯文譯者 | 李睿
審校 | 孫淑娟
在充分考慮數(shù)據(jù)安全的情況下,用戶身份驗證和傳輸層安全(TLS)連接現(xiàn)在在Milvus 2.1中正式可用。無需用戶身份驗證,任何人都可以使用SDK訪問向量數(shù)據(jù)庫中的所有數(shù)據(jù)。但是,從Milvus 2.1開始,只有擁有有效用戶名和密碼的用戶才能訪問Milvus向量數(shù)據(jù)庫。此外在Milvus2.1中,數(shù)據(jù)安全性受到傳輸層安全(TLS)的進一步保護,可以確保計算機網(wǎng)絡中的安全通信。

本文旨在分析向量數(shù)據(jù)庫Milvus如何通過用戶身份驗證和TLS連接來確保數(shù)據(jù)安全,并解釋作為想要在使用向量數(shù)據(jù)庫時確保數(shù)據(jù)安全的用戶,如何利用這兩個特性。
什么是數(shù)據(jù)庫安全性以及為什么它很重要?
數(shù)據(jù)庫安全性是指為確保數(shù)據(jù)庫中所有數(shù)據(jù)的安全和保密而采取的措施。最近在Twitter公司、萬豪酒店和德克薩斯州保險部等發(fā)生的數(shù)據(jù)泄露事件,讓人們對數(shù)據(jù)安全問題更加警惕。所有這些案例不斷地提醒人們,如果數(shù)據(jù)沒有得到很好的保護并且他們使用的數(shù)據(jù)庫是安全的,那么企業(yè)或組織可能會遭受嚴重的損失。
Milvus向量庫如何保障數(shù)據(jù)安全?
在當前2.1版本中,Milvus向量數(shù)據(jù)庫嘗試通過身份驗證和加密來確保數(shù)據(jù)庫安全。更具體地說,在訪問級別上,Milvus支持基本的用戶身份驗證來控制誰可以訪問數(shù)據(jù)庫。與此同時,在數(shù)據(jù)庫層面,Milvus采用傳輸層安全(TLS)加密協(xié)議來保護數(shù)據(jù)通信。
用戶認證
Milvus向量數(shù)據(jù)庫中的基本用戶身份驗證功能支持使用用戶名和密碼訪問向量數(shù)據(jù)庫,以確保數(shù)據(jù)安全。這意味著客戶端只有在提供經(jīng)過身份驗證的用戶名和密碼后才能訪問Milvus實例。
1.MilvusVector數(shù)據(jù)庫中的身份驗證工作流程
所有gRPC請求都由Milvus代理處理;因此身份驗證由代理完成。使用憑證登錄連接Milvus實例的流程如下:
(1)為每個Milvus實例創(chuàng)建憑證,加密后的密碼存儲在etcd中。Milvus使用bcrypt進行加密,因為它實現(xiàn)了Provos和Mazières的自適應哈希算法。
(2)在客戶端,SDK連接Milvus服務時發(fā)送密文。base64密文(:)通過密鑰授權附加到元數(shù)據(jù)。
(3)Milvus代理攔截請求并驗證憑證。
(4)憑證在代理本地緩存。

身份驗證工作流程
在更新憑證后,Milvus向量數(shù)據(jù)庫中的系統(tǒng)工作流程如下:
(1)Root coord負責調用插入、查詢和刪除API時的憑據(jù)。
(2)當用戶因為忘記密碼而更新憑證時,例如,新密碼將保存在etcd中。則代理的本地緩存中的所有舊憑據(jù)都將無效。
(3)身份驗證攔截器首先從本地緩存中查找記錄。如果緩存中的憑據(jù)不正確,將觸發(fā)從根坐標獲取最新記錄的RPC調用。并且本地緩存中的憑據(jù)會相應更新。

憑據(jù)更新工作流程
2.如何在Milvus向量數(shù)據(jù)庫中管理用戶身份驗證
要啟用身份驗證,需要在milvus.yaml文件中配置Milvus時先將common.security.authorizationEnabled設置為true。
在啟用之后,將為Milvus實例創(chuàng)建一個root用戶。該root用戶可以使用Milvus的初始密碼連接Milvus向量數(shù)據(jù)庫。
強烈建議在首次啟動 Milvus 向量數(shù)據(jù)庫時更改 root 用戶的密碼。
然后, root 用戶可以通過運行以下命令創(chuàng)建新用戶來進一步創(chuàng)建更多新用戶進行身份驗證訪問。
創(chuàng)建新用戶時要記住兩件事:
- 新用戶名長度不能超過32個字符,且必須以字母開頭。用戶名中只允許使用下劃線、字母或數(shù)字。例如,用戶名“2abc!”不被接受。
- 至于密碼,其長度應為6~256個字符。
設置好新憑證后,新用戶可以使用用戶名和密碼連接到Milvus實例。
與所有身份驗證過程一樣,不必擔心忘記密碼。可以使用以下命令重置現(xiàn)有用戶的密碼。
2.TLS連接
傳輸層安全性(TLS)是一種身份驗證協(xié)議,用于在計算機網(wǎng)絡中提供通信安全性。TLS使用證書在兩個或多個通信方之間提供身份驗證服務。
如何在Milvus向量數(shù)據(jù)庫中啟用TLS
要在Milvus向量數(shù)據(jù)庫中啟用TLS,首先需要運行以下命令,準備兩個用于生成證書的文件:一個名為openssl.cnf的默認OpenSSL配置文件和一個名為gen.shused的文件,用于生成相關證書。
然后可以將在此處提供的配置復制并粘貼到這兩個文件中。或也可以根據(jù)我的配置進行修改,以更好地適應應用。
當這兩個文件準備好之后,可以運行gen.sh文件來創(chuàng)建九個證書文件。同樣,也可以根據(jù)需要修改九個證書文件中的配置。
在可以使用TLS連接到Milvus服務之前,還有最后一步。必須將tlsEnabled設置為true,并在config/milvus.yaml中配置服務器的server.pem、server.key和ca.pem的文件路徑。下面的代碼是一個例子。
然后,只要在使用Milvus連接SDK時為客戶端指定client.pem、client.key和ca.pem的文件路徑,就可以通過TLS連接Milvus服務。下面的代碼也是一個例子。
原文標題:??How Does the Milvus Vector Database Ensure Data Security???,作者:Angela Ni
































