Tenant Isolation
Tenant Isolation 是在多租户 AI 应用中确保不同租户的数据和计算资源相互隔离的机制。
#type / concept
#status / evergreen
#tech / ai
#tech / security
[!info] related notes
- 所属 MOC: AI Agent Application MOC, Security MOC
- 相关: Data Access Control
Tenant Isolation
一句话定义
Tenant Isolation 是在多租户 AI 应用中确保不同租户的数据和计算资源相互隔离的机制。租户 A 的会话、消息、知识库不应该被租户 B 访问。
核心原理
隔离层次
| 层次 | 实现方式 |
|---|---|
| 数据库 | 每个查询加 WHERE tenant_id = ? |
| RAG 检索 | 向量搜索时过滤 tenant_id |
| 会话 | session 关联 tenant_id |
| 工具 | 工具执行时注入 tenant_id |
数据库隔离
# 所有查询都加 tenant_id 过滤
async def get_messages(tenant_id: str, session_id: str):
return await db.query(
"SELECT * FROM messages WHERE tenant_id = ? AND session_id = ?",
tenant_id, session_id,
)
RAG 隔离
async def search_knowledge(tenant_id: str, query_embedding, top_k: int):
return await vector_store.search(
query_embedding,
top_k=top_k,
filters={"tenant_id": tenant_id},
)
常见坑
- 查询不过滤 tenant_id: 租户 A 能看到租户 B 的数据
- RAG 检索不隔离: 检索到其他租户的知识库
- 缓存不隔离: 缓存 key 不包含 tenant_id