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