向量資料庫安全景觀
主要向量資料庫的安全分析,包含 Pinecone、Weaviate、Chroma、Milvus 與 Qdrant:架構、存取模型與常見漏洞。
向量資料庫為儲存、索引與查詢高維嵌入向量而專門建構。不同於傳統資料庫中安全模型已廣為理解,向量資料庫代表一個具演變中安全功能且存取控制實作常不成熟的新類別。本頁涵蓋主要向量資料庫的安全景觀並識別常見弱點。
主要向量資料庫
Pinecone
Pinecone 是一個完全託管、雲原生的向量資料庫。其安全模型圍繞用於驗證的 API 金鑰與用於多租戶的專案層級隔離。
架構: AWS 與 GCP 上的無伺服器與基於 pod 的部署。資料儲存在 Pinecone 管理的基礎設施中。
安全特徵:
- API 金鑰驗證(每專案單一金鑰)
- 索引內基於命名空間的邏輯隔離
- 命名空間內沒有資料列層級存取控制
- SOC 2 Type II 合規
- 資料加密於靜置與傳輸中
關鍵風險: 單一被入侵的 API 金鑰可獲得對專案中所有資料的完整讀/寫存取。沒有細粒度權限模型可將金鑰限制為僅讀或特定命名空間。
Weaviate
Weaviate 是開源向量資料庫,可自託管或作為託管服務使用(Weaviate Cloud Services)。
架構: 基於 Go 的伺服器,具 REST 與 GraphQL API。支援多種索引類型,可整合多個嵌入模型。
安全特徵:
- API 金鑰與 OIDC 驗證
- 多租戶類別隔離
- 企業版中透過基於角色的存取控制(RBAC)進行授權
- 自託管部署繼承基礎設施安全
關鍵風險: 開源部署常在未啟用驗證下執行,尤其是無意間暴露的開發環境。預設設定是寬鬆的。
Chroma
Chroma 是為 AI 應用程式開發設計的輕量、開源嵌入資料庫。它在原型設計與較小部署中很受歡迎。
架構: 基於 Python 的伺服器,具程序內模式與客戶端-伺服器模式。在本地或設定的後端儲存資料。
安全特徵:
- 開源版本中內建驗證最少
- 無原生靜置加密
- 集合層級隔離
- 為本地/開發使用設計,常在未加固下部署到生產
關鍵風險: Chroma 的簡潔是其最大的安全負債。許多生產部署缺乏驗證、加密與網路隔離,因為該工具在原型設計期間被採用且從未加固。
Milvus
Milvus 是為可擴展生產部署設計的開源向量資料庫。它支援具獨立儲存與運算的分散式架構。
架構: 具代理、查詢、資料與索引節點的分散式系統。使用 etcd 存中繼資料,並使用 MinIO/S3 存物件儲存。
安全特徵:
- 客戶端-伺服器與節點間通訊的 TLS
- 具使用者/角色/權限模型的 RBAC
- 支援透過使用者名稱/密碼的驗證
- 企業版中的稽核日誌
關鍵風險: 分散式架構意味著必須跨多個元件(etcd、MinIO、Milvus 節點本身)維護安全。任何元件的弱點都可能入侵整個系統。
Qdrant
Qdrant 是以 Rust 撰寫的開源向量相似性搜尋引擎,為生產級效能設計。
架構: 單一二進位或分散式叢集。REST 與 gRPC API。
安全特徵:
- API 金鑰驗證
- API 與節點間通訊的 TLS 支援
- 集合層級存取控制
- 基於 JWT 的細粒度存取控制(較新的功能)
關鍵風險: 如同其他開源向量資料庫,生產部署可能以預設(寬鬆)安全設定執行。
常見安全弱點
跨所有向量資料庫,持續觀察到數個安全弱點:
1. 驗證缺口
許多向量資料庫部署完全缺乏驗證,尤其當它們從開發環境開始。即使啟用驗證,模型通常也簡化:
| 資料庫 | 預設驗證 | 粒度 | 常見部署狀態 |
|---|---|---|---|
| Pinecone | API 金鑰(必要) | 專案層級 | 已驗證但粗糙 |
| Weaviate | 無(選擇性) | 類別/租戶層級 | 常未驗證 |
| Chroma | 無 | 無 | 幾乎總是未驗證 |
| Milvus | 使用者名稱/密碼(選擇性) | 資料庫/集合層級 | 混合 |
| Qdrant | API 金鑰(選擇性) | 集合層級 | 常未驗證 |
2. 網路暴露
向量資料庫常在沒有防火牆限制下暴露於內部網路。常見模式包含:
- 綁定到
0.0.0.0而非127.0.0.1 - 在啟用連接埠轉送的 Docker 中執行
- 在沒有網路政策下部署於 Kubernetes
- 將管理 API 與查詢 API 一同暴露
3. 缺乏靜置加密
相似性搜尋操作需要存取原始向量值,這使靜置加密具挑戰性。大多數向量資料庫未加密儲存嵌入,意味著任何能存取底層儲存者皆可讀取所有嵌入。
4. 不足的稽核日誌
大多數向量資料庫未提供查詢操作的詳細稽核日誌。這使在資料外洩、未授權存取或注入攻擊發生後難以偵測。
5. 備份與複寫安全
向量資料庫的備份與複寫常比主要實例受到較少的安全關注。備份檔案可能儲存在具寬鬆存取政策的 S3 儲存桶中,複寫流量可能未加密。
評估框架
評估向量資料庫部署時:
- 驗證 — 驗證是否啟用?粒度為何?金鑰是否輪替?
- 網路 — 資料庫是否僅暴露給所需客戶?管理 API 是否分離?
- 加密 — 傳輸是否啟用 TLS?靜置呢?
- 存取控制 — 不同使用者或服務是否能被限制到特定集合或命名空間?
- 稽核 — 查詢是否被記錄?未授權存取是否能被偵測?
- 備份 — 備份是否加密?誰能存取它們?
- 多租戶 — 若多租戶共享資料庫,隔離是否被強制?