Milvus向量數據庫如何確保數據安全?
譯文譯者 | 李睿
審校 | 孫淑娟
在充分考慮數據安全的情況下,用戶身份驗證和傳輸層安全(TLS)連接現在在Milvus 2.1中正式可用。無需用戶身份驗證,任何人都可以使用SDK訪問向量數據庫中的所有數據。但是,從Milvus 2.1開始,只有擁有有效用戶名和密碼的用戶才能訪問Milvus向量數據庫。此外在Milvus2.1中,數據安全性受到傳輸層安全(TLS)的進一步保護,可以確保計算機網絡中的安全通信。
本文旨在分析向量數據庫Milvus如何通過用戶身份驗證和TLS連接來確保數據安全,并解釋作為想要在使用向量數據庫時確保數據安全的用戶,如何利用這兩個特性。
什么是數據庫安全性以及為什么它很重要?
數據庫安全性是指為確保數據庫中所有數據的安全和保密而采取的措施。最近在Twitter公司、萬豪酒店和德克薩斯州保險部等發生的數據泄露事件,讓人們對數據安全問題更加警惕。所有這些案例不斷地提醒人們,如果數據沒有得到很好的保護并且他們使用的數據庫是安全的,那么企業或組織可能會遭受嚴重的損失。
Milvus向量庫如何保障數據安全?
在當前2.1版本中,Milvus向量數據庫嘗試通過身份驗證和加密來確保數據庫安全。更具體地說,在訪問級別上,Milvus支持基本的用戶身份驗證來控制誰可以訪問數據庫。與此同時,在數據庫層面,Milvus采用傳輸層安全(TLS)加密協議來保護數據通信。
用戶認證
Milvus向量數據庫中的基本用戶身份驗證功能支持使用用戶名和密碼訪問向量數據庫,以確保數據安全。這意味著客戶端只有在提供經過身份驗證的用戶名和密碼后才能訪問Milvus實例。
1.MilvusVector數據庫中的身份驗證工作流程
所有gRPC請求都由Milvus代理處理;因此身份驗證由代理完成。使用憑證登錄連接Milvus實例的流程如下:
(1)為每個Milvus實例創建憑證,加密后的密碼存儲在etcd中。Milvus使用bcrypt進行加密,因為它實現了Provos和Mazières的自適應哈希算法。
(2)在客戶端,SDK連接Milvus服務時發送密文。base64密文(:)通過密鑰授權附加到元數據。
(3)Milvus代理攔截請求并驗證憑證。
(4)憑證在代理本地緩存。
身份驗證工作流程
在更新憑證后,Milvus向量數據庫中的系統工作流程如下:
(1)Root coord負責調用插入、查詢和刪除API時的憑據。
(2)當用戶因為忘記密碼而更新憑證時,例如,新密碼將保存在etcd中。則代理的本地緩存中的所有舊憑據都將無效。
(3)身份驗證攔截器首先從本地緩存中查找記錄。如果緩存中的憑據不正確,將觸發從根坐標獲取最新記錄的RPC調用。并且本地緩存中的憑據會相應更新。
憑據更新工作流程
2.如何在Milvus向量數據庫中管理用戶身份驗證
要啟用身份驗證,需要在milvus.yaml文件中配置Milvus時先將common.security.authorizationEnabled設置為true。
在啟用之后,將為Milvus實例創建一個root用戶。該root用戶可以使用Milvus的初始密碼連接Milvus向量數據庫。
強烈建議在首次啟動 Milvus 向量數據庫時更改 root 用戶的密碼。
然后, root 用戶可以通過運行以下命令創建新用戶來進一步創建更多新用戶進行身份驗證訪問。
創建新用戶時要記住兩件事:
- 新用戶名長度不能超過32個字符,且必須以字母開頭。用戶名中只允許使用下劃線、字母或數字。例如,用戶名“2abc!”不被接受。
- 至于密碼,其長度應為6~256個字符。
設置好新憑證后,新用戶可以使用用戶名和密碼連接到Milvus實例。
與所有身份驗證過程一樣,不必擔心忘記密碼。可以使用以下命令重置現有用戶的密碼。
2.TLS連接
傳輸層安全性(TLS)是一種身份驗證協議,用于在計算機網絡中提供通信安全性。TLS使用證書在兩個或多個通信方之間提供身份驗證服務。
如何在Milvus向量數據庫中啟用TLS
要在Milvus向量數據庫中啟用TLS,首先需要運行以下命令,準備兩個用于生成證書的文件:一個名為openssl.cnf的默認OpenSSL配置文件和一個名為gen.shused的文件,用于生成相關證書。
然后可以將在此處提供的配置復制并粘貼到這兩個文件中。或也可以根據我的配置進行修改,以更好地適應應用。
當這兩個文件準備好之后,可以運行gen.sh文件來創建九個證書文件。同樣,也可以根據需要修改九個證書文件中的配置。
在可以使用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