R

R03 审计追踪与可回溯

创建 2026-06-07 更新 2026-06-20 0 条双链 Agent 安全与权限 专题 AI 整理

R03 审计追踪与可回溯

当 Agent 能自主调工具、花钱、spawn 子 Agent,事后追责的第一个问题不再是”系统出了什么 bug”,而是”到底是什么时候因为什么授权链做了什么动作产生了什么结果”——传统给人设计的日志(一条 user_id=123 DELETE /orders/456)在这里整体失效,因为 Agent 的”用户”是另一个 Agent,它的”动作”是一串非确定性的推理 + 工具调用,它的”授权”来自一条可能跨三跳委托的链。本节点要解决的问题:如何给 Agent 加一套结构化、防篡改、可回溯到授权源的审计日志,让事后能机械重建”谁授权了这个动作、哪一步违反了策略”。视角是安全/架构 + 合规 PM——审计不是 nice-to-have 的可观测性,而是 m208 - AI 基础设施与中间件选型(0411 S03 权限层)之外的最后一道问责防线**。

§0 为什么是”问责界面”而不是”可观测性”框架

第一个要挡掉的错误框架:把 Agent 审计当成 APM/Trace 的延伸。可观测性(observability)回答”系统现在健康吗、延迟分解在哪、token 花在哪”,它服务于运维;审计追踪(audit trail)回答”这个动作是否被授权、谁该为后果负责、能否在法庭/合规审查上举证”,它服务于问责。两者的数据源高度重叠(都来自工具调用埋点),但验收标准正交:可观测性允许采样、允许丢失、允许覆盖写;审计日志必须完整、必须防篡改、必须可追溯到授权源。

ISACA(Nirupam Samanta,2025-09-02)把这个范式转变讲得最清楚:传统审计回答”谁做了什么”(who did what),Agent 时代审计必须回答”为什么这样做”(why did it happen)以及”谁授权了这个决策链”。这就是为什么本节点选”问责界面”框架而非”可观测性”框架——它决定了你的 schema 里必须有 authorization_chainreasoning_ref 字段,而不只是 latencystatus_code

§1 最小日志 schema:四件套 + 授权链 + 不可否认

最朴素的审计单元回答四个 W:谁(who)、何时(when)、何动作(what action)、何结果(what result)。但 Agent 场景必须扩两个维度:授权来源(哪条委托链批准了这个动作)与不可否认锚(这条记录无法被事后否认或篡改)。下面是一个最小可落地的 JSON schema(字段命名参考 AgentTrace 的三面架构与 LoginRadius 工程实践,见 §4/§3):

{
  "event_id": "evt_8f3a...",            // 全局唯一,幂等键
  "prev_hash": "sha256:9c1d...",         // 指向上一条记录的哈希(Merkle 链)
  "ts": "2026-06-07T09:14:22.481Z",      // 可信时间源(NTP/TSA),非本机时钟
  "actor": {                              // 谁——Agent 身份而非借用的人类凭证
    "agent_id": "spiffe://corp/agent/refund-bot",
    "parent_agent_id": "spiffe://corp/agent/orchestrator",
    "on_behalf_of": "user:rick"          // 委托源(OAuth act claim 的落地)
  },
  "authorization_chain": [               // 授权链——本节点的核心,回答"谁批准的"
    {"hop": 0, "token": "tok_root", "scope": ["read:orders"]},
    {"hop": 1, "token": "tok_sub",  "scope": ["read:orders"]}  // 范围递减
  ],
  "action": {                            // 何动作
    "tool": "refund_api.create",
    "args_digest": "sha256:...",          // 参数哈希(避免 PII 明文入日志)
    "side_effect_level": "L3"            // 副作用分级(↔ 0411 S03 / 0435 S03)
  },
  "reasoning_ref": "trace://run_42/step_7", // 认知日志指针(不内联 CoT,见 §6 争议)
  "result": {                            // 何结果
    "status": "success",
    "output_digest": "sha256:...",
    "approval": {"required": true, "approver": "user:rick", "ts": "..."}
  },
  "event_hash": "sha256:...",            // 本条记录自身哈希,封入下一条 prev_hash
  "timestamp_authority": "tsa.corp.internal" // 不可否认:可信时间戳签发方
}

判断密度点:args_digest 而非 args 明文——审计要可证伪(事后能验证”是否调用了退款 API、金额是否被改”),但不能成为 PII/机密的二次泄露面。存哈希 + 把明文存在受更严格访问控制的旁路存储,是合规与可追溯的平衡。这一权衡直接对应 §6 的”不可变日志 vs 隐私权”争议。

§2 防篡改:append-only + 哈希链 + 可信时间

“防篡改”不是”权限锁死写接口”那么简单——内部高权限攻击者或被劫持的 Agent 本身可能就有写权限。真正的防篡改靠密码学使篡改可被检测,而非靠访问控制使篡改不可能。三层机制(来源:Galileo AI 2025;LoginRadius 工程博客;均为行业实践文档,非同行评审):

机制作用边界 / 失效场景
追加式存储 append-only条目只能新增不能改写/删除配置错误可被绕过;需配合下层不可变存储
Merkle 哈希链每条 event_hash 链接前条 prev_hash(SHA-256),改任一历史条目会断链只能检测篡改不能阻止;需定期把链头锚定到外部(如公证/区块链)才能防”整链重写”
可信时间源 + TSA时间戳由可信权威签发,防止伪造时序依赖外部 TSA 可用性;本机时钟不可信

关键判断:只做 append-only 不做哈希链是纸老虎——有写权限者可以”追加”一条伪造的”修正记录”来掩盖。只做哈希链不锚外部也不够——掌握私钥者可整链重算。出版级的做法是哈希链 + 周期性外锚(把链头哈希提交到一个写者无控制权的系统)。EU AI Act Article 12 要求高风险系统”技术上允许自动记录”且 Article 26(6) 要求部署方保留日志至少 6 个月(来源:artificialintelligenceact.eu;FireTail 实操分析 2026-04),但没有规定具体密码学技术——prEN 18229-1(AI 日志与人工监督)与 ISO/IEC DIS 24970(AI 系统日志)两份草案截至 2026-04 均未定稿,技术解释存在空间。这意味着:现在就把哈希链做进 schema,是抢在标准定稿前占住合规高地,而非过度工程。

§3 可回溯:从结果反查到授权源

审计的终极考题是 SentinelAgent 论文(Patil,SentinelAgent: Intent-Verified Delegation Chains,arXiv:2604.02767,2026-04-03)提出的那个问题:「当 Agent A 委托 Agent B,Agent B 代表用户 X 调用工具 C,现有框架均无法回答:谁的授权链导致了这个动作,以及哪里违反了策略?」

可回溯 = 给定一条 result,能沿 authorization_chain + prev_hash 反向重建完整因果链。该论文给的形式化工具是”委托链演算(DCC)“,定义 7 个可验证属性(6 个确定性 + 1 个概率性),其中 forensic reconstructibility(取证可重建性) 正是审计追踪的形式化目标;论文用 TLA+ 机械验证覆盖了约 270 万个状态,意图保留验证准确率从 1.7% 提升至 88.3%(来源:arXiv:2604.02767,已 WebFetch 核实)。Google Cloud 的 Agent Identity(基于 SPIFFE,文档 2026-06-05 更新)在工程上落地了”双身份日志”——用户委托时同时记录 Agent 身份与用户身份(来源:docs.cloud.google.com/iam/docs/agent-identity-overview),这正是上面 schema 里 agent_id + on_behalf_of 双字段的现实依据。

可回溯的实操复现模板(最小三步):

  1. 每跳埋授权:工具调用前,把当前 token + scope 写入 authorization_chain,强制范围递减(子 Agent token 严于父 Agent,见 m208 - AI 基础设施与中间件选型 链入的 0435 S03 权限设计原语)。
  2. 每动作链哈希:每条记录封 prev_hash,落不可变存储。
  3. 回溯查询:给定 event_id → 沿 prev_hash 重建时序,沿 authorization_chain 重建授权树,比对 side_effect_level 与该跳实际 scope 是否一致(scope-action conformance),不一致即标记策略违反点。

§4 认知日志:要不要记录推理链

最难的设计抉择,也是判断主轴:审计要不要记录 Agent 的”思考过程”(chain-of-thought)? AgentTrace(AlSayyad/Huang/Pal,AgentTrace: A Structured Logging Framework for Agent System Observability,arXiv:2602.10133,2026-02-07,已 WebFetch 核实)提出三面日志架构——运营日志(operational)、认知日志(cognitive,含推理步骤)、上下文日志(contextual),并论断:LLM Agent 的非确定性行为使静态审计失效,仅记录输入输出不足以提供推理、状态变更、环境交互的可追溯性。

这把审计推到一个两难(见 §6 争议表第一行):记 CoT 才能真正归因”为什么这样做”,但 CoT 本身可能含用户隐私、可能被用作攻击者的侦察素材、且记录的”推理”未必是真实的决策因果(LLM 的事后解释可能是 confabulation)。Rick 立场(赌注):认知日志用指针 + 摘要而非全文内联——schema 里 reasoning_ref 指向受严格访问控制的旁路存储,运营/上下文日志默认全留、认知日志按需调取并单独审计。这个赌注可能错在:若推理链本身是攻击证据(如间接注入诱导),事后才发现没留全文就无法举证。这是本节点显式承担的 failure scenario。

§5 判断主轴:90% 的人在审计上会栽的四个点

#症状为什么会错正确做法真实反例
1用人类凭证记日志沿用 IAM 旧习,Agent 借用人的 token/session记 Agent 本体身份(SPIFFE SVID/FIC)+ on_behalf_of 委托源Agent 借用人类会话 → 审计链断裂、条件访问被绕过(多家安全厂商共识,见简报凭证对比)
2append-only 当防篡改以为”不能删”=“不能伪造”哈希链 + 周期性外锚有写权限者追加伪造”修正记录”掩盖真相
3只记最后一跳工具调用看不到中间委托链每跳埋 authorization_chain子 Agent 越权调用无法回溯到哪一跳授权超范围(SentinelAgent 提的核心问题)
4CoT 全文内联进主日志以为越详细越可追溯推理用指针 + 旁路严格访问控制推理链含 PII → 审计日志成二次泄露面,且与 GDPR 删除权冲突

§6 对手框架回应与争议

接受 + 边界(业界反方立场):

  • “不可变日志根本违反 GDPR 删除权(right to erasure)“——接受:密码学锁定的日志确实与”被遗忘权”在法理上冲突,这是真实未决争议(来源:本简报争议表,监管机构态度尚未统一)。边界:本节点的 args_digest/output_digest 设计正是为此——主链只存哈希(不可逆、无法还原 PII),可删除的明文存在可擦除的旁路存储,删除明文不破坏链的完整性。这是目前能想到的最优解,但未经监管判例确认,是赌注。
  • “LLM 本质黑盒,日志记的是 I/O 不是真实决策因果”——接受:AgentTrace 论文自己承认非确定性挑战,记录的”推理”未必是真实因果。边界:审计的目标不是还原 LLM 内部权重激活,而是建立可问责的外部行为契约——只要能证明”在授权链 X 下产生了动作 Y 和结果 Z”,问责就成立,不必(也不可能)证明神经元层面的因果。这把”可解释性”问题与”可问责性”问题切开,后者才是审计的职责边界。

未读对手框架引入(破 echo chamber): 数据库审计领域的 Ross Anderson《Security Engineering》关于”审计日志的根本张力”——审计系统越完整,它本身越成为单点攻击目标和隐私集中地;安全工程的经典教训是”日志的价值与日志的危险成正比”。这逼问本专题:我们在 §1–§3 不断加字段、加哈希链、加外锚,是否在制造一个”比被审计系统更危险的审计系统”?回应:这正是 §4 把认知日志降级为指针、§1 用 digest 而非明文的根本动因——审计的设计目标应是最小充分取证,而非最大化记录。

failure scenario / confirmation-bias 砍除:

  • failure ①:哈希链只检测不阻止篡改,掌握私钥的内部攻击者可整链重写(§2 已标,需外锚缓解)。
  • failure ②:CoT 指针方案在”推理链即攻击证据”时无法举证(§4 已标)。
  • bias 砍除:早期论证反复引 SentinelAgent 88.3% 意图保留准确率作为正面案例,但同一论文承认对复杂改写(paraphrasing)攻击 intent preservation 准确率降至 13%(来源:arXiv:2604.02767)——基于 LLM 的意图核验在对抗环境下有本质上限,审计可回溯性的”机械重建”部分(确定性 6 属性)可靠,“意图保留”部分(概率性 1 属性)不可全信。

§7 PM 决策启示

  • 面试怎么用:被问”你怎么给 Agent 系统做合规”——别答”加日志”。答”审计追踪要回答的是问责而非可观测性,schema 必须有授权链 + 不可否认锚;EU AI Act Article 12 要求自动记录、26(6) 保留 ≥6 个月,但 prEN 18229-1/ISO DIS 24970 标准未定稿,所以我会先把哈希链做进 schema 抢占合规高地”。这一段把法规年份、技术机制、判断都给齐,30 秒立判。
  • 选型怎么用:评估编排框架/可观测性平台时多问三点——(1) 日志是否按 sub-task 粒度且记 Agent 本体身份?(2) 是否支持 append-only + 哈希链或可对接不可变存储?(3) 是否记录完整 authorization_chain 可回溯到委托源?三者缺一,在高合规场景(金融/医疗/政务)扣分。
  • 复现怎么用:直接抄 §1 schema + §3 三步模板起步,先把四件套 + 授权链跑通,再渐进加哈希链、外锚、TSA。不要一上来上区块链——那是 §2 表里”最强但最重”的选项,先确认威胁模型需要它。

§8 与已有节点的关系

  • m208 - AI 基础设施与中间件选型:m208 §2.5.3 可观测性列了 LangSmith/Langfuse 等 Trace 工具与”成本追踪/延迟分解”指标,但那是运维可观测性;本节点做的是问责审计的纠偏 + 深化——补上 m208 缺失的 authorization_chain、不可否认锚、防篡改三个维度。不复述 m208 的工具列表。
  • 对 0435 红队专题 S03 Agent 权限边界与最小权限设计(0435 专题 staging):S03 的副作用分级 L0–L4 是本节点 schema 里 side_effect_level 字段的来源;S03 讲”事前如何限权”,本节点讲”事后如何举证”——两者构成”权限是最后防线(S03)→ 审计是最后问责(R03)“的完整闭环。(0435 整专题在 staging,此处降级为文本引用,不建双链。)
  • 对 0430 制度专题 Agent 准法律主体(0430 专题 staging):当 Agent 被讨论为”准法律主体”,可问责性的前提就是可举证的行为记录——本节点的审计追踪是”Agent 担责”在技术层的落地物。没有防篡改可回溯日志,“Agent 准法律主体”只是哲学概念,无法进入任何司法/仲裁程序。(0430 在 staging,降级文本引用。)

§9 关联节点

核心(必读):

延伸(可选):

  • Constitutional AI(行为契约的另一种实现路径)
  • 幻觉(认知日志为何不能尽信:confabulation)
  • 安全感知与干预(Rick 滴滴风控经验:审计追踪在反欺诈中的迁移)
  • AI概念滥用反思(AI 生成内容须可追溯、可批判性复核)
  • AI PM 知识图谱·总索引
  • 0430 Agent 准法律主体(0430 专题 staging,文本引用)

[!note] 一句话收尾 审计日志的价值不在”记了多少”,而在”改不动、赖不掉”——防篡改(哈希链 + 外锚)保证记录可信,可回溯(授权链 + 取证重建)保证问责可达。权限是动作发生前的最后防线,审计是后果发生后的最后问责;缺了审计,Agent 的一切自主权都是无主之权。

修订日志

  • R0.1(2026-06-07):首稿。建立四件套 + 授权链 + 不可否认 schema;防篡改三层机制表;可回溯三步模板;认知日志两难与 Rick 指针方案赌注;判断主轴四点;GDPR/黑盒两对手立场 + Anderson 未读框架;接 0435 S03 与 0430。事实接地:EU AI Act Article 12/26(6)、AgentTrace(2602.10133)、SentinelAgent(2604.02767) 均经简报 WebFetch 核实;性能数字(5–10ms/15% 月增)来自行业博客已标非同行评审,未引入正文规范声明。