向量資料庫強化指南
強化向量資料庫的安全最佳實務——涵蓋 Pinecone、Weaviate、Chroma、Qdrant 與 Milvus,包含配置指引、存取控制與監控。
向量資料庫是 RAG 系統、語意搜尋與推薦引擎的中樞。它們儲存嵌入向量與元資料,並提供相似度搜尋能力。受感染的向量資料庫可導致 RAG 投毒、資料外滲、隱私外洩與服務中斷。本指南為部署最廣泛的向量資料庫提供強化建議。
通用強化原則
在深入平台特定指引之前,這些原則適用於所有向量資料庫部署。
認證與授權
每個向量資料庫部署都必須強制認證。絕不要以預設憑證或未啟用認證部署向量資料庫。為連接資料庫的每個服務使用強而獨特的憑證。實施基於角色的存取控制(RBAC)以分離讀取與寫入權限。服務帳號應僅擁有其功能所需的最低權限。
不同的存取模式需要不同的憑證。寫入嵌入的服務(索引管線)需要寫入存取,但可能不需要讀取存取。查詢嵌入的服務(檢索管線)需要讀取存取,但不應有寫入存取。管理介面需要管理存取,但不應從應用程式碼可存取。
加密
加密靜態與傳輸中的資料。對於受管服務,驗證加密已啟用,並在合規要求時使用客戶管理的金鑰。對於自託管資料庫,為所有客戶端連線配置 TLS,並加密儲存卷。
嵌入向量雖非直接人類可讀,但包含關於來源資料的語意資訊。如嵌入隱私章節所討論,嵌入有可能被反演以還原來源文字。對待嵌入儲存的加密要求應與來源資料相同。
網路安全
將向量資料庫的網路存取限制為僅有需要它的服務。使用私有網路(VPC、私有端點)而非公共端點。實施網路政策或安全群組以將特定源 IP 或服務列入白名單。除非資料庫刻意對外,否則阻擋所有來自公共網際網路的入站流量。
監控與日誌
啟用所有資料庫操作的全面日誌記錄。記錄所有查詢及其參數、所有寫入操作及其來源身分、所有管理操作以及所有認證嘗試(包括失敗)。監控可能顯示攻擊活動的異常模式。
平台特定強化
Pinecone
Pinecone 是全託管的向量資料庫。安全強化聚焦於 API 金鑰管理、網路配置與組織控制。
API 金鑰管理:Pinecone 使用 API 金鑰進行認證。定期輪換金鑰,並為不同環境(開發、預備、生產)與不同服務(索引、查詢、管理)使用獨立金鑰。將金鑰存放於秘鑰管理器中,而非程式碼或配置檔。
網路安全:Pinecone 透過 AWS PrivateLink 支援私有端點。對於處理敏感資料的生產部署,配置私有端點以將所有流量保持在你的 VPC 內。當私有端點不可行時,使用 API 金鑰範圍與你這邊的網路層級控制限制存取。
命名空間隔離:使用 Pinecone 命名空間隔離不同租戶、應用或安全脈絡的資料。雖然命名空間共用索引而非強安全邊界,但它們提供邏輯分離並可與應用層級存取控制結合。
元資料過濾:使用元資料過濾在查詢時強制存取控制。將存取控制屬性(租戶 ID、分類等級、擁有者)作為每個向量的元資料儲存,並過濾查詢以僅回傳請求使用者有權看到的向量。
備份與還原:配置 Pinecone 集合的定期備份。驗證備份能成功還原。以與主要資料相同的加密與存取控制儲存備份。
Weaviate
Weaviate 可作為受管服務(Weaviate Cloud Services)或自託管部署。自託管部署提供更多安全控制,但需要更多強化工作。
認證:Weaviate 支援 API 金鑰認證與基於 OIDC 的認證。對於生產部署,使用 OIDC 整合與你組織的身分供應商。這啟用 SSO、MFA 與集中式憑證管理。
授權:Weaviate 的授權系統支援基於角色的存取控制。定義對應於應用程式存取模式的角色:查詢服務的唯讀角色、索引服務的讀寫角色,以及綱要管理的管理員角色。將角色指派給特定 API 金鑰或 OIDC 群組。
網路強化:對於自託管 Weaviate,在 VPC 內部署並透過安全群組限制存取。停用預設 HTTP 連接埠,並僅使用具有效 TLS 憑證的 HTTPS。如果在 Kubernetes 叢集中執行 Weaviate,使用 NetworkPolicy 限制 pod 之間的通訊。
模組安全:Weaviate 使用模組進行向量化、生成能力與整合。僅啟用你需要的模組。每個啟用的模組都會增加攻擊面。驗證模組來自受信任的來源,並檢視其配置中與安全相關的設定。
多租戶:Weaviate 原生支援多租戶。對服務多個客戶的應用使用租戶隔離。每個租戶的資料在儲存層級隔離,提供比基於元資料的過濾更強的分離。
備份安全:將 Weaviate 備份配置到安全的儲存後端(具加密的 S3、具客戶管理金鑰的 GCS)。驗證備份儲存的存取控制與資料庫的存取控制同樣嚴格。
Chroma
Chroma 在開發與原型製作中受歡迎,越來越多用於生產。其安全態勢高度依賴於部署配置。
伺服器模式:在生產中永遠以伺服器模式(client-server 架構)執行 Chroma。嵌入式模式(行程內)不提供網路層級安全控制。伺服器模式支援認證、TLS 與網路存取限制。
認證:Chroma 支援基於 token 的認證。為所有伺服器模式部署啟用認證。使用強而獨特的 token 並定期輪換。即使在內部網路中,也絕不要在沒有認證下部署 Chroma。
TLS 配置:為所有 Chroma 伺服器連線配置 TLS。在生產中使用來自受信任 CA 的憑證而非自簽憑證。驗證客戶端會驗證伺服器憑證。
持久化安全:Chroma 將資料持久化到本機檔案系統。確保持久化目錄具有限制性的檔案權限。加密儲存卷。在持久化目錄上實施檔案完整性監控。
Docker 部署:在 Docker 中執行 Chroma 時,不要不必要地將容器埠口暴露給主機網路。使用 Docker 網路限制對 Chroma 容器的存取。以非 root 使用者執行容器。以最低權限掛載持久化卷。
Qdrant
Qdrant 是高效能的向量資料庫,可自託管或作為受管服務使用。
API 金鑰認證:為所有部署啟用 API 金鑰認證。對讀取與寫入操作使用獨立金鑰。將金鑰存放於秘鑰管理器中。
TLS:為 gRPC 與 REST API 端點配置 TLS。Qdrant 透過配置檔設定支援 TLS。驗證 TLS 強制執行並拒絕未加密連線。
集合安全:Qdrant 並未原生支援每集合存取控制。實施應用層級存取控制,在將查詢轉發到 Qdrant 之前驗證請求服務的授權。對於多租戶應用,使用獨立的 Qdrant 實例或依賴具應用層級強制執行的 payload 過濾。
快照安全:Qdrant 快照包含集合中的所有資料。確保快照儲存已加密且具存取控制。限制誰可建立與存取快照。
Milvus
Milvus 是為大規模部署而設計的分散式向量資料庫。其分散式架構引入額外的安全考量。
認證:啟用使用者名稱與密碼認證。整合 LDAP 或 OAuth 進行集中式身分管理。使用強密碼並強制密碼輪換。
TLS:為所有通訊路徑配置 TLS:客戶端到代理、代理到資料節點,以及內部叢集通訊。在分散式部署中,內部 TLS 防止 Milvus 元件之間的網路層級攻擊。
RBAC:Milvus 支援以集合層級為粒度的基於角色存取控制。定義分離讀取、寫入與管理存取的角色。將角色指派給特定使用者或服務帳號。
etcd 安全:Milvus 使用 etcd 進行元資料儲存。以認證、TLS 與存取控制保護 etcd。受感染的 etcd 實例可用於操縱 Milvus 的元資料與行為。
MinIO/S3 安全:Milvus 使用物件儲存(MinIO 或 S3)進行資料持久化。應用標準物件儲存強化:加密、存取控制、版本控制與稽核日誌。
營運安全
容量規劃
針對向量資料庫的拒絕服務攻擊可利用資源限制。設定適當的限制:每集合最大向量數、最大查詢批次大小、並行查詢限制與儲存配額。監控資源利用率並在達到限制前發出警示。
更新管理
保持向量資料庫軟體更新。向量資料庫的安全修補解決查詢處理、認證、網路處理與資料儲存中的漏洞。建立修補管理流程,包括在生產部署前於預備環境測試更新。
災難復原
維護經過測試的災難復原程序。定期備份驗證確保備份可用。復原測試驗證完整復原流程運作。Runbook 文件提供逐步復原指示。而 RTO/RPO 目標定義可接受的復原時間與資料遺失。
安全評估
對向量資料庫部署進行定期安全評估。測試認證繞過、授權提升、網路曝露、注入攻擊與資料外滲。使用本節其他地方記錄的攻擊技術作為你的評估框架。
強化檢查清單
- 啟用強憑證認證
- 配置具最低權限角色的 RBAC
- 為所有連線啟用 TLS
- 資料儲存的靜態加密
- 將網路存取限制於授權服務
- 為所有操作啟用日誌
- 為異常模式配置監控
- 備份已配置並測試
- 變更或移除預設憑證
- 停用不必要的功能與模組
- 軟體更新至最新穩定版本
- 災難復原程序已記錄並測試
向量資料庫是 AI 應用的關鍵基礎設施。對向量資料庫應用與任何包含敏感資料的生產資料庫相同的安全嚴謹度——因為在多數部署中,它們確實如此。