大模型应用合规审计要记录什么?
简化版
合规审计的目标是回答:谁在何时、基于什么权限和版本、对哪些数据做了什么操作、结果如何、由谁批准。应记录身份与租户、用途与同意、模型/Prompt/数据/策略版本、检索与工具权限、风险判断、人工审批、输出处置和删除记录。
审计日志必须防篡改、最小化、可关联且有保留期限。不能为了审计默认保存完整 Prompt、密钥或身份证号;敏感内容可用哈希、文档 ID、分类标签和受控证据库替代,访问审计日志本身也要审计。
详细版
一次高风险请求形成不可变事件链:
authenticated actor -> purpose/consent -> input classification
-> retrieval/model/tool versions -> policy decision
-> human approval -> outcome -> retention/deletion
| 证据组 | 关键字段 |
|---|---|
| 主体 | actor、tenant、role、region |
| 版本 | model、prompt、index、policy、tool |
| 数据 | source ID、classification、legal basis |
| 决策 | risk code、allow/deny、approver |
| 动作 | tool、target、idempotency ID、result |
| 生命周期 | timestamp、retention、deletion proof |
审计 Schema 应版本化,时间统一,事件带哈希链或写入只追加存储,并定期做访问抽查和删除演练。
完整版教学
1. 审计与普通日志的区别
普通日志服务排障和性能分析,审计记录用于证明受控动作符合政策。审计事件要求更强的完整性、访问控制、保留和证据链。
不是所有调试日志都进入审计库,也不能把审计库当作保存用户原文的借口。
2. 谁做了什么
记录经过认证的用户、服务账号、租户、角色和代表关系;动作包括查询、生成、检索、导出、工具执行、审批和策略变更。
身份来自可信认证层,不能接受模型输出或请求自由字段自报。服务间调用还需记录调用方工作负载身份。
3. 用途与合法依据
记录处理目的、同意/合同/法定义务等依据标识,以及适用的数据地域与政策版本。目的改变时不能沿用旧授权。
字段保存依据 ID 和版本即可,完整法律文本放在受控注册表,避免每条日志重复。
4. 数据来源和分类
记录数据源 ID、所有者、敏感等级、地域、许可和版本。RAG 还需记录实际召回与引用的文档 ID。
若用户要求删除,应能由主体或数据资产反查所有派生位置;没有血缘关系,删除证明无法完成。
5. 模型与配置版本
记录模型权重、Adapter、Tokenizer、Prompt、安全策略、索引、Embedding、工具 Schema 和应用 Manifest。
evidence:
release_id: release-2026-09-18-07
model: model-v7
prompt: prompt-v18
policy: policy-v12
使用不可变 ID,禁止只写 latest。
6. 策略决策如何留痕
记录输入风险分类、命中规则、决策 allow/deny/review、策略版本与原因码。原因使用稳定枚举,敏感匹配片段存入更高权限证据库。
规则更新后仍需能解释历史请求为何按当时版本放行或拒绝。
7. 工具动作记录什么
写操作记录工具、目标资源、经校验参数摘要、权限主体、审批、幂等键、执行结果和补偿状态。密钥与完整支付凭据不得入日志。
模型建议的参数和系统最终执行参数分别记录,可证明校验层是否修改或阻止了动作。
8. 人工审批怎样关联
记录审批人身份、时间、范围、依据和有效期,并绑定请求与准确参数哈希。笼统的“批准该 Agent”不能覆盖之后任意动作。
双人审批场景要证明职责分离;紧急越权需自动过期并触发事后复核。
9. 如何保证不可篡改
使用只追加存储、对象锁、数字签名或哈希链,使删除和修改可被检测:
hash_i = hash(hash_(i-1) || canonical_event_i)
这不等于永不删除;保留期到达时按政策销毁,并记录独立删除证明。
10. 时间和关联为何重要
所有组件使用同步时钟,记录 event_time 与 ingest_time;trace_id 串联请求,operation_id 串联副作用。
时钟漂移或异步事件乱序时,序列号和因果 ID 帮助重建真实链路。
| 标识 | 作用 | 常见错误 |
|---|---|---|
| trace_id | 串联一次端到端请求 | 被当成用户身份 |
| operation_id | 串联一次副作用与补偿 | 重试时生成新 ID |
| event_time | 表示事件实际发生时间 | 使用不同本地时区 |
| ingest_time | 表示日志被接收时间 | 被误当成执行顺序 |
跨区域系统统一使用 UTC 并保留来源时钟信息;排序时同时参考因果标识,不能仅凭日志到达先后判断业务动作顺序。
11. 隐私最小化怎么做
优先记录 Token 数、哈希、分类和资产 ID,而非原文。确需保存证据片段时,单独加密、缩短保留、限制角色并记录访问。
哈希也可能被字典攻击,低熵标识应使用带密钥 HMAC 或随机化 Token,不应裸哈希手机号。
12. 保留和删除如何协调
不同法规、合同和事件类型的保留期不同。Legal Hold 可暂停特定证据删除,但必须有范围、审批和结束条件。
删除流程覆盖主日志、索引、备份和派生评测集;以删除任务 ID、范围、完成时间和验证结果形成证明。
13. 如何测试审计能力
选择一次越权检索、一次人工批准工具写入和一次用户删除,验证能否重建主体、版本、数据、决策、动作和生命周期。
定期检查必填字段缺失、哈希链断裂、未授权访问和保留超期,并演练导出证据所需时间。
审计的价值不是“日志很多”,而是用最少必要数据形成可验证、不可抵赖的事件证据链。
14. 常见误区与追问
- 误区:完整保存 Prompt 才能审计。 可用版本、哈希、分类和受控证据片段。
- 误区:普通应用日志天然满足审计。 完整性、权限和保留要求不同。
- 误区:日志不可删除才安全。 合规也可能要求到期或应请求删除。
- 误区:只记录模型输出即可。 身份、数据来源、策略和工具动作同样关键。
- 误区:管理员查看审计日志无需留痕。 访问证据本身也必须审计。
- 追问:怎样防篡改? 只追加存储、对象锁、签名或哈希链。
- 追问:如何证明删除? 记录范围、任务 ID、各存储完成状态与验证结果。
15. 加强记忆
- 先记六问:谁、何时、为何、用什么版本、做什么、结果如何。
- 再记数据:来源、分类、权限、地域和依据。
- 再记决策:策略版本、原因码与人工批准。
- 再记动作:工具目标、幂等、结果和补偿。
- 再记证据:不可变 ID、统一时间、哈希链。
- 再守隐私:最小化、分级访问、保留与删除。
- 最后做演练:能重建事件,也能证明销毁。