"谁看过什么"必须能查
AI 检索会跨越很多文档 ✔。一旦涉及权限与合规,"谁在什么时候检索到了哪些文档" ✔
就必须可审计 ✔ —— 否则出了泄露事件,你连**影响范围**都说不清 ✗。
**证据链要能回答四个问题** ✔:谁、何时、用什么查询、取到了哪些文档 ✔。
一、审计日志该记什么(六项)
1. **主体**(用户/服务账号 id ✔ —— 不记明文姓名,用可追溯的 id ✔);
2. **时间**(含时区,统一 UTC 存储 ✔);
3. **查询**(原文或其哈希 ✔;敏感场景只存哈希 ✔);
4. **候选集摘要**(取了多少条、过滤条件是什么 ✔);
5. **最终使用的片段**(块 id + 文档 id + 版本 ✔);
6. **判定结果**(权限通过/拒绝、是否需要二次确认 ✔)。
**第 5 项最关键** ✗:只记"查了什么"不够 ✔,要记"**实际用了什么**" ✔ ——
因为泄露往往发生在"结果里带了不该带的" ✔。
二、日志本身要保护
三、三件应该能"一键回答"的事
```
① 某文档被哪些人检索到过?(影响面评估 ✔)
② 某用户一周内检索了哪些文档?(行为审计 ✔)
③ 哪些检索绕过了权限过滤?(异常检测 ✔ —— 正常应恒为 0 ✔)
```
第 ③ 项应做成**定期检查** ✔:正常系统里"绕过权限过滤"的检索数应恒为 **0** ✔(见可筛选检索那篇 ✔)。
四、三个常见坑
五、落地顺序
1. 先记"主体 + 时间 + 查询哈希 + 最终片段 id"(四项 ✔);
2. 再把日志写进只读存储并设访问控制 ✔;
3. 然后做"权限绕过 = 0"的定期检查 ✔;
4. 最后把影响面查询做成一条命令(出事时能用 ✔)。
一条判据
> 假设某份敏感文档被误放进索引 3 天 ✔,你能否在**半小时内**列出"这 3 天里哪些人检索到了它" ✔?
> 不能,说明证据链还不完整 ✗。