🧪 Beta — 能力已可用,接口契约可能微调。
审计与追责链
出了事,你需要在十分钟内回答三个问题:谁授权的、以谁的身份做的、具体做了什么。
传统日志答不上来。因为 Agent 用的是共享凭证,日志里只有一行"服务账号 X 调用了接口 Y"——授权的人是谁、代表谁行动,全都不在记录里。
GenAuth 的解法是给每次授权发一个编号,让后面发生的一切都挂在这个编号上。
为什么 Agent 需要它
人的操作有天然的追责路径:账号就是人。Agent 打断了这条路径——同一个 Agent 可能代表一百个不同的人,在一百个不同的授权下行动。日志里必须同时记下两个主体(委托人与执行者)和一个授权依据(哪次授权允许了这件事),缺一个就断链。
这不只是运维需求。合规审计、安全事件复盘、客户问询,三类场景问的都是同一件事:把这次访问追回到那个做决定的人。
三个必答问题,三个字段
| 问题 | 答案来自 | 说明 |
|---|---|---|
| 谁授权的? | sub(委托令牌与访问令牌里的主体) | 永远是人。Agent 不能自己给自己授权 |
| 以谁的身份行动? | sub + act(访问令牌) | sub 是被代表的人,act 标明实际执行的 Agent(字段结构见 Token 与 Claim 参考) |
| 做了什么? | audit_id + grant_id 串起的事件序列 | 一次授权的全生命周期事件 |
两个 ID 的分工:
grant_id:一次授权记录的 ID。回答"这是哪一次授权"——范围、期限、批准人都挂在它上面。audit_id:审计链 ID。回答"这次授权后续发生了什么"——签发、兑换、访问、吊销,逐条挂在它上面。
工作原理
- 用户 完成授权确认,GenAuth 生成
grant_id与audit_id,写入首条审计事件(授权已批准:谁批的、批了什么范围、多长时间)。 - GenAuth 签发委托令牌,令牌 claims 内嵌
grant_id与audit_id——这两个 ID 从此随令牌走,不依赖调用方传递。 - Agent 兑换访问令牌时,兑换事件带着同一个
audit_id入链,并生成本次兑换的exchange_id。 - 你的资源服务 校验访问令牌后处理请求。把令牌里的
sub/act/audit_id记进你自己的业务日志——这是链条从 GenAuth 延伸到你的业务侧的接缝(做法见 保护你的 API)。 - 吊销发生时(主动撤销或到期),终止事件同样挂在这条链上——吊销本身也是审计对象:谁在什么时候收回了什么。
一条链长什么样
以员工数据助手的场景为例(示意值):
text
audit_id: aud_demo_7f3c9a
├─ [10:02:11] 授权已批准 批准人 usr_demo_0001 · Agent report-agent
│ scope [webagent.web_search:run, webagent.web_search:read] · 有效期 7200s
│ grant_id: grant_demo_51ab
├─ [10:02:12] 委托令牌已签发 jti: jti_demo_9c02 · 过期 12:02:12
├─ [10:02:15] 令牌已兑换 resource: webagent · exchange_id: exc_demo_2d17
│ scope [webagent.web_search:run]
├─ [10:02:16] 资源访问 sub usr_demo_0001 · act report-agent · 你的业务日志接入点
├─ [10:41:53] 密钥已停用 操作人 admin_demo_02 · 原因 安全响应 · 后续签发已停止
└─ [12:02:12] 令牌已过期链上任意一行都能回答三问。反过来,从一条业务日志里的 audit_id 也能倒查回最初那次授权。
设计要点:审计链在服务端生成,不由调用方声明
audit_id 与 grant_id 由 GenAuth 生成并内嵌进令牌,调用方无法伪造或替换。这保证了链条的完整性——攻击者即使拿到令牌,也无法把行为记到别的授权名下。
你需要做的两件事
- 业务侧记录接缝字段:在处理 Agent 请求的日志里,至少记下
sub、act.agent_id、audit_id。少了这三样,GenAuth 的链条就到你的 API 边界为止。 - 保留期与访问控制:审计数据的保留期限与查询权限按你的合规要求配置。查询与导出的操作方式见 审计与合规报告。
标准与协议
- 令牌内
sub/act的双主体表达遵循 RFC 8693 的委托语义(GenAuth 对act有扩展,解析注意事项见 Token 与 Claim 参考)。 - 审计事件本身不构成对外协议,字段以 API 响应为准。
下一步
- 审计与合规报告 —— 怎么查、怎么导出、审计师会问什么。
- 吊销与应急处置 —— 收权动作如何入链。
- 保护你的 API:资源侧集成 —— 把链条接进你的业务日志。