资源 · 58
红绿灯:验证文档访问权限和隔离
测试检索、引用、缓存和撤销功能,以确保文档助手尊重每个用户的权限。
已更新 · 3 min
本指南有助于实现的目标
- 定义边界
- 公开前过滤
- 分离缓存
- 执行撤销操作
快速检查
- 单独的向量命名空间是否足够?
- 权限是否应该显示在提示中?
- 如何在测试中避免涉及机密文档?
分步指南
- 1
定义边界
为每个文档分配所有者、范围和访问规则。 OWASP 描述了由于向量存储权限错位而导致的跨上下文泄露。 我们提出的方法还将数据块和元数据视为受保护对象。
交付成果:文档、组和范围清单。
- 2
公开前过滤
在数据块到达模型之前,在检索服务中强制执行授权。 涵盖向量搜索、词法搜索、图搜索和直接下载。 提示指令不能替代服务器端授权。
交付成果:决策点和缺失身份行为。
- 3
分离缓存
清单保留的搜索结果、对话、引用和答案。 检查重用是否取决于相关的访问上下文。 仅凭索引字段指定客户并不能证明隔离性。
交付成果:缓存键和分离场景。
- 4
执行撤销操作
使用非敏感测试文档,移除访问权限,删除文档并更改组。 重放更改前打开的对话。 衡量何时数据块、链接和保留答案失效。
交付成果:带时间戳的撤销证据和漏洞。
- 5
保留否定测试。
分别以授权用户、其他用户组和未知身份提出相同的问题。 检查文件名、摘录、引用和日志。 在索引或连接器更改后重放测试;少数通过的案例仅能证明覆盖范围有限。
交付成果:测试矩阵和更正负责人。
可重复使用的工作表
填写您已授权的观察结果。 这些字段是工作模板,而非观察结果。
| 字段 | 待记录信息 |
|---|---|
| 文档/数据块 | 所有者和范围 |
| 测试身份 | 允许组、其他组、缺失身份 |
| 访问路径 | 检索、引用、文件或缓存 |
| 结果 | 预期、观察、日期和更正 |
虚构示例
示例情境
虚构示例:一名员工更换了团队,但之前的对话仍然引用了一份已撤回的文档。
决策及预期证据
测试在检索和对话缓存后进行,然后在更正后确认拒绝和引用缺失。
区分机制
| 机制 | 目的 | 验证或限制 |
|---|---|---|
| 检索过滤器 | 限制检索的数据块 | 同时覆盖词法路由和直接链接 |
| 拒绝提示 | 指导响应行为 | 不将授权委托给它 |
| 答案缓存 | 重用结果 | 重用前检查权限上下文 |
管理指标
| 指标 | 衡量内容 | 首要行动 |
|---|---|---|
| 观察到的泄漏 | 测试数据暴露在范围外 | 阻止受影响的使用并检查原因 |
| 撤销延迟 | 所有测试路由都被拒绝的时间 | 名称缓存仍然可访问 |
| 路由覆盖率 | 已执行的连接器和检索模式 | 识别未测试的路径 |
常见错误
- 同时覆盖词法路由和直接链接
- 不将授权委托给它
- 重用前检查权限上下文
常见问题解答
单独的向量命名空间是否足够?
它有助于数据分区,但缓存、文件链接和工具必须遵守相同的边界。
权限是否应该显示在提示中?
有用的上下文可能会到达模型;公开数据的服务必须强制执行访问决策。
如何在测试中避免涉及机密文档?
为每个小组创建带有不同标记的虚构哨兵文档,然后检查答案和引用。
官方参考文献
参考文献支持该方法。 请根据您的实际情况调整检查;它们并非认证。 原始参考文献标题和源文档可能使用其他语言。
参考资料查阅日期 .






