Tenant Isolation

Tenant Isolation 是在多租户 AI 应用中确保不同租户的数据和计算资源相互隔离的机制。

#type / concept #status / evergreen #tech / ai #tech / security

[!info] related notes

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},
    )

常见坑

  1. 查询不过滤 tenant_id: 租户 A 能看到租户 B 的数据
  2. RAG 检索不隔离: 检索到其他租户的知识库
  3. 缓存不隔离: 缓存 key 不包含 tenant_id

参考资料

创建于 2026/6/30 更新于 2026/7/15