检索的证据链:谁在什么时候看过什么

人工智能 · 2026-10-07

涉及权限的检索必须可审计。本文给出审计日志该记的六项(重点是最终使用的片段)、日志本身的保护要求、三件应能一键回答的事、三个常见坑与落地顺序。


"谁看过什么"必须能查

AI 检索会跨越很多文档 ✔。一旦涉及权限与合规,"谁在什么时候检索到了哪些文档" ✔

就必须可审计 ✔ —— 否则出了泄露事件,你连**影响范围**都说不清 ✗。

**证据链要能回答四个问题** ✔:谁、何时、用什么查询、取到了哪些文档 ✔。

一、审计日志该记什么(六项)

1. **主体**(用户/服务账号 id ✔ —— 不记明文姓名,用可追溯的 id ✔);

2. **时间**(含时区,统一 UTC 存储 ✔);

3. **查询**(原文或其哈希 ✔;敏感场景只存哈希 ✔);

4. **候选集摘要**(取了多少条、过滤条件是什么 ✔);

5. **最终使用的片段**(块 id + 文档 id + 版本 ✔);

6. **判定结果**(权限通过/拒绝、是否需要二次确认 ✔)。

**第 5 项最关键** ✗:只记"查了什么"不够 ✔,要记"**实际用了什么**" ✔ ——

因为泄露往往发生在"结果里带了不该带的" ✔。

二、日志本身要保护

  • **访问受控** ✔(谁能看审计日志要有清单 ✔);
  • **不可篡改**(追加写 + 校验和,或写入只读存储 ✔);
  • **保留期限明确** ✔(与合规要求一致 ✔);
  • **脱敏**(查询原文可能含个人信息 ✔ —— 存哈希或脱敏版本 ✔)。
  • 三、三件应该能"一键回答"的事

    ```

    ① 某文档被哪些人检索到过?(影响面评估 ✔)

    ② 某用户一周内检索了哪些文档?(行为审计 ✔)

    ③ 哪些检索绕过了权限过滤?(异常检测 ✔ —— 正常应恒为 0 ✔)

    ```

    第 ③ 项应做成**定期检查** ✔:正常系统里"绕过权限过滤"的检索数应恒为 **0** ✔(见可筛选检索那篇 ✔)。

    四、三个常见坑

  • **只记 UI 层** ✗(直接调 API 的检索无记录 ✔);
  • **只记成功** ✗(被拒绝的检索也要记 ✔ —— 那是安全信号 ✔);
  • **日志里塞原文** ✗(审计日志变成新的泄露面 ✔)。
  • 五、落地顺序

    1. 先记"主体 + 时间 + 查询哈希 + 最终片段 id"(四项 ✔);

    2. 再把日志写进只读存储并设访问控制 ✔;

    3. 然后做"权限绕过 = 0"的定期检查 ✔;

    4. 最后把影响面查询做成一条命令(出事时能用 ✔)。

    一条判据

    > 假设某份敏感文档被误放进索引 3 天 ✔,你能否在**半小时内**列出"这 3 天里哪些人检索到了它" ✔?

    > 不能,说明证据链还不完整 ✗。

    想要你的品牌在AI回答里被推荐?

    免费诊断 →