会话隔离是什么
会话隔离指多用户、多租户场景下,把检索、记忆、文件与缓存的可见范围按归属切开:A 租户的提问不应该检索到 B 租户的文档,跨会话引用要显式授权而不是默认可见。它的风险场景很具体——一旦隔离缺失,注入只需诱导系统去检索一个不属于当前用户的标识,就能把别人的数据读出来。
基本信息
| 适用平台 | 多租户 SaaS、企业内部多部门部署、共享知识库的问答系统 |
|---|---|
| 风险类别 | 对应 OWASP LLM08 中的向量与嵌入弱点:跨租户检索导致的越权 |
| 默认策略 | 默认拒绝跨边界访问,白名单例外并留痕 |
| 验证方式 | 定期演练:构造跨租户查询,确认被拒绝且产生告警 |
典型使用场景
- 向量检索:查询时就带租户过滤条件,而不是返回后再筛
- 缓存复用:缓存键包含租户与权限标识,避免命中他人结果
- 文件访问:对象存储路径按租户前缀隔离,签名链接设置有效期
- 长期记忆:记忆条目绑定归属与来源,不跨租户注入上下文
- 日志与审计:访问记录可按租户切分,便于追责与通知
隔离维度清单
隔离维度清单
# 向量库:按租户做元数据过滤,过滤条件在检索查询阶段生效
# 缓存:键包含租户标识与权限范围,禁止跨租户复用命中结果
# 文件:对象存储按租户前缀隔离,访问走短期签名链接
# 记忆:长期记忆条目绑定归属,注入上下文前校验归属
# 日志:检索与访问审计可按租户切分,支撑事后通知
# 测试:专门的跨租户越权用例纳入回归集,定期复跑确认仍被拒绝隔离层与失效后果
| 隔离层 | 做法 | 失效后果 |
|---|---|---|
| 检索过滤 | 查询阶段限定租户元数据 | 检出他人文档,数据越权 |
| 缓存键 | 拼接租户与权限标识 | 命中他人结果,隐蔽泄露 |
| 文件路径 | 按租户前缀隔离 | 附件被他方读取 |
| 记忆存储 | 条目绑定归属与来源 | 历史内容跨租户注入 |
| 工具权限 | 按调用者身份校验 | 通过工具接口绕过检索限制 |
过滤的位置比过滤本身更关键:在查询阶段过滤(检索时就限定租户)与在结果阶段过滤(取回后再筛掉)安全性不同,后者一旦有分支遗漏就会越权。
隔离要能被验证:把跨租户访问尝试做成固定用例,注入到回归集里定期跑,同时在工具层记录拒绝事件。没有验证手段的隔离,往往只是设计意图。