AI Agent Identity:委托授权
Agent 不能靠共享 admin key 在企业系统里行动。生产级 Agent 必须有自己的身份、任务级授权、可撤销 session、purpose-bound scope,以及能贯穿下游系统的 actor chain evidence。
AI Agent Identity / Delegated Authorization 解读
配对阅读:本篇的操作手册版(模板/RACI/门禁/runbook)是
docs/AI_AGENT_IDENTITY_DELEGATED_AUTHORIZATION_PLAYBOOK.md。第一遍读本篇建立原理与架构判断;第二遍做案例时再用 playbook 查表落地,两者不需要重复精读。
Source Anchors
| Source | Link | 用途 |
|---|---|---|
| OAuth 2.0 RFC 6749 | https://www.rfc-editor.org/rfc/rfc6749 | 参考 authorization grant、access token、scope 等基础授权模型(RFC 发布 2012-10) |
| OAuth 2.0 Token Exchange RFC 8693 | https://www.rfc-editor.org/rfc/rfc8693 | 参考 on-behalf-of / token exchange 的委托授权思维(RFC 发布 2020-01) |
| OAuth 2.0 Security BCP RFC 9700 | https://www.rfc-editor.org/rfc/rfc9700 | 参考 OAuth 安全最佳实践(RFC 发布 2025-01) |
| OpenID Connect Core | https://openid.net/specs/openid-connect-core-1_0.html | 参考身份认证、ID token、claims(访问日期: 2026-07-01) |
| SCIM RFC 7644 | https://www.rfc-editor.org/rfc/rfc7644 | 参考身份生命周期和跨系统用户管理(访问日期: 2026-07-01) |
| NIST AI RMF | https://www.nist.gov/itl/ai-risk-management-framework | 把 identity / authorization 作为 AI 风险控制能力(访问日期: 2026-07-01) |
核心导读
Agent 不能靠共享 admin key 在企业系统里行动。生产级 Agent 必须有自己的身份、任务级授权、可撤销 session、purpose-bound scope,以及能贯穿下游系统的 actor chain evidence。
Agent identity architecture 要回答六个问题:谁在行动、代表谁行动、基于什么授权、为了什么目的、权限持续多久、事后如何证明。OAuth/OIDC、token exchange、scope、consent、step-up approval 和 audit claims 在 Agent 场景中不是安全术语堆叠,而是防止“AI 变成不可追责系统用户”的架构基础。
1. 问题定义:共享账号会摧毁可追责性
传统应用通常是用户点击按钮,系统记录 user_id。Agentic AI 的调用链更长:
human user
-> agent instance
-> workflow run
-> tool gateway
-> downstream system
如果所有调用都落在一个 service account 或 admin key 上,事故复盘会失去关键事实:
| 复盘问题 | 共享账号造成的缺口 |
|---|---|
| 谁触发了任务 | 下游只看到 service account |
| Agent 代表谁行动 | human actor 与 agent actor 混在一起 |
| 授权范围是什么 | 无法证明 scope、purpose、tenant 和 TTL |
| 是否经过审批 | approval 与 tool call 无法关联 |
| 是否越权 | policy decision 没有进入调用链 |
| 如何撤销 | 长期 key 无法按 run、scope、agent 精准停用 |
Agent 身份架构的目标不是让 AI“登录系统”,而是让每一次行动都具备最小权限、目的约束、可撤销性和可审计性。
2. 架构模型:Human、Agent、Tool 三类身份必须分离
2.1 Identity taxonomy
Agent 系统至少涉及多类主体。它们要能在 trace 中关联,但不能混成一个账号。
| Identity | 含义 | 必须记录的 claims |
|---|---|---|
| Human user | 触发、审批或使用 AI 的人 | user_id、role、tenant、entitlement |
| Agent instance | 执行任务的 AI 角色/实例 | agent_id、version、policy_profile |
| Workflow run | 一次业务任务执行 | run_id、case_id、purpose、risk_tier |
| Tool client | 调用工具的技术主体 | client_id、tool_scope、environment |
| Policy decision | 授权/拦截/升级的控制结果 | decision_id、allow/deny/step_up、reason |
| Human reviewer | 人类复核者 | reviewer_id、decision、rationale |
| Vendor agent/model | 外部模型或托管 Agent 服务 | vendor_id、model_id、data_boundary |
核心分离原则:
human identity != agent identity != tool identity
Human identity 证明授权来源,agent identity 证明执行者和配置版本,tool identity 证明技术调用主体。三者共同形成 actor chain。
2.2 Delegated authorization reference flow
User authenticates
-> entitlement / consent / purpose check
-> workflow creates agent run
-> token exchange issues delegated token
-> tool gateway validates scope, tenant, purpose, risk tier
-> downstream service records actor chain claims
-> evidence log stores policy decision and action result
这个流程的关键是:Agent 不拿长期系统权限,而是在具体 workflow run 中获得短期、任务化、目的绑定的 delegated token。授权不是“这个 Agent 永远能调用 CRM”,而是“这个 run 在 complaint_triage purpose 下,可以读取指定 case 并创建内部 task”。
2.3 Scope 作为业务动作语言
低质量 scope 把系统权限暴露给 Agent:
crm.full_access
payments.admin
loan.write
高质量 scope 应以业务动作和风险边界命名:
crm.case.read
crm.case.note.create
crm.task.create
payments.dispute.read
payments.dispute.draft_response
loan.policy.read
loan.exception.submit_for_review
Scope 设计要同时表达读写分离、可逆性、客户可见性和金融影响:
| 设计问题 | 授权原则 |
|---|---|
| 是否能读 | data minimization、need-to-know |
| 是否能写 | write separation、explicit grant |
| 写入是否可逆 | rollback / compensation |
| 是否客户可见 | human approval or step-up |
| 是否影响金融结果 | higher risk tier and stronger gate |
| 是否跨 tenant | deny by default |
| 是否有明确目的 | purpose-bound token |
3. 关键机制与生命周期
3.1 Authorization lifecycle
Agent 授权应按一次业务执行的生命周期设计,而不是按静态系统账号设计。
| 阶段 | 机制 |
|---|---|
| Authenticate | 确认 human user、role、tenant、session 状态 |
| Authorize task | 校验 entitlement、purpose、risk tier 和业务上下文 |
| Create run | 生成 run_id,绑定 agent_id、case_id、policy profile |
| Exchange token | 使用 token exchange 获取短期 delegated token |
| Invoke tool | tool gateway 校验 scope、tenant、policy、rate limit |
| Step up | 高风险或客户可见动作要求人类审批或更强认证 |
| Record claims | downstream system 写入 human + agent + run + decision |
| Revoke | 支持按 token、run、agent、tool scope、tenant 停用 |
| Review | 定期评估 scope creep、stale consent、异常调用模式 |
3.2 Consent、purpose 与 step-up
Agent 授权不应是一次性同意所有能力。授权强度应随任务影响提升。
| 场景 | 推荐授权方式 |
|---|---|
| 普通知识问答 | enterprise entitlement + logging |
| 读取客户 case | user role + purpose + tenant check |
| 创建内部 task | delegated scope + trace |
| 发送客户通知 | human approval + step-up |
| 修改账户/贷款状态 | high-risk approval workflow |
| 访问敏感数据 | need-to-know + short session + audit |
| 事故处理 | break-glass + post-review |
Consent UX 不应把权限藏在泛化提示里。有效的授权表达应说明 Agent 能读什么、能做什么、不能做什么,以及哪些动作仍需人类批准。
3.3 Tool gateway 作为授权执行点
Tool gateway 是 Agent 授权架构的实际执行层。它不能只做 API proxy,而要在每次调用时检查:
| 检查项 | 目的 |
|---|---|
| token validity | 确认 token 未过期、未撤销、来源可信 |
| scope | 确认工具动作在授权范围内 |
| purpose | 防止授权被挪用到其他任务 |
| tenant / data boundary | 防止跨客户、跨机构、跨环境访问 |
| risk tier | 高风险动作触发 step-up 或 deny |
| policy decision | 将 allow/deny/escalate 明确记录 |
| rate / budget | 防止循环调用和成本失控 |
| prompt-injection signals | 对外部内容驱动的工具调用加硬门槛 |
4. 证据与控制
4.1 Audit claims
每一次 tool call 至少应能复盘以下 claims:
| Claim | 示例 |
|---|---|
| human_actor | user_123 |
| agent_actor | complaint_triage_agent:v2.1 |
| workflow_run | run_abc |
| purpose | complaint_triage |
| tenant | retail_bank_us |
| tool | crm.case.note.create |
| scope | case.note.create |
| policy_decision | allow / deny / step_up |
| approval_id | approval_789 |
| model_config | model id + prompt version |
| evidence_id | trace / span / event id |
这些 claims 要进入下游业务系统和 evidence log,而不是只留在 AI 平台内部。否则客户、审计、合规或事故调查看到的仍然只是一个技术账号。
4.2 Failure modes and controls
| Failure | 具体表现 | 控制 |
|---|---|---|
| Confused deputy | Agent 被恶意输入诱导调用高权限工具 | purpose-bound token、policy gate、content isolation |
| Privilege creep | Agent scope 越加越大 | scope review、expiry、least privilege baseline |
| Shared secret | 多个 Agent 共用 admin key | per-agent client、token exchange、secret isolation |
| Stale consent | 用户授权过期仍可行动 | token TTL、revocation、consent refresh |
| Cross-tenant leakage | Agent 读取其他客户/机构数据 | tenant claim enforcement、row-level policy |
| Missing audit | 下游只看到 service account | actor chain claims、tool event contract |
| Vendor overreach | 外部 Agent 获得过宽数据/工具访问 | vendor boundary、proxy gateway、data minimization |
| Break-glass abuse | 应急权限变成常规路径 | time-boxed grant、post-review、alerting |
5. 金融零售与 AI 产品场景
5.1 CRM update agent
CRM 场景中,Agent 可以读取客户联系历史、生成 case summary、创建内部 task、写入 draft note。它不应修改客户核心身份信息、覆盖人工审核结论、关闭投诉或直接承诺补偿。
架构重点是把 crm.case.read、crm.case.note.create、crm.task.create 等动作拆成独立 scope,并让每次写入都带上 human actor、agent actor、run_id 和 policy decision。
5.2 Payment dispute assistant
Payment dispute assistant 可以读取交易和 dispute case、草拟证据请求、推荐下一步处理。自动拒绝 dispute、自动退款、发送最终客户决定属于高风险动作,需要 step-up approval 或人工工作流。
这里的授权难点是同一工具域内存在风险差异:读取 dispute 资料、草拟客户沟通、执行退款、关闭案件的影响完全不同,不能用一个 payments.write 覆盖。
5.3 Loan servicing agent
Loan servicing agent 可以解释政策、检查缺失材料、生成内部 checklist、提交人工复核请求。它不应自动改变 repayment plan、批准 hardship relief、触发 adverse action 或改变 risk grade。
贷款场景要求 delegated authorization 与 fair lending、adverse action、客户通知和审批证据联动。Agent 身份不仅是安全控制,也是证明业务责任链的基础。
5.4 Wealth and advice workflow
财富或投顾辅助场景中,Agent 可以整理 meeting notes、准备资料、生成 advisor review items。涉及个人化建议、客户适当性、交易执行、组合调整的动作必须进入更高授权层级。
这个场景的身份边界要能区分:客户授权、顾问授权、机构政策、Agent 推荐和最终执行之间的责任关系。
6. 反模式
| 反模式 | 问题 |
|---|---|
| Agent 共用一个后台 admin key | 失去最小权限、撤销能力和 actor chain |
| Scope 按系统模块粗粒度授权 | crm.full_access 无法表达客户可见、可逆性和金融影响 |
| 只在前端展示“由 AI 生成” | 下游系统仍不知道谁代表谁做了什么 |
| Token 长期有效 | 一次授权可以被错误流程、漂移 Agent 或外部攻击长期利用 |
| Consent 只做一次总开关 | 用户无法理解具体任务、数据、工具和禁止边界 |
| Step-up 只靠人工记忆 | 高风险动作没有系统化 gate,容易被流程绕过 |
| Vendor Agent 直接接入内部工具 | 数据边界、purpose、tenant 和 evidence 难以强制执行 |
7. 最终心智模型
Agent identity 的核心不是“给 AI 一个账号”,而是把每次行动的授权链变成可执行、可撤销、可证明的系统事实。Human user 提供授权来源,Agent instance 提供执行上下文,workflow run 提供业务目的,tool gateway 执行 scope 与 policy,下游系统保存 actor chain,evidence plane 支撑审计和事故复盘。
可以用一个检查链来判断架构是否成熟:
Who acted?
On whose behalf?
For what purpose?
With which scope?
Approved by whom?
Recorded where?
Revocable how?
SOTA 检查 (2026-07-01)
- MCP 授权已把本篇模式写进协议标准:MCP 规范 2025-11-25 版对 remote server 强制 OAuth 2.1 + PKCE,并新增 Client ID Metadata Documents (CIMD) 客户端注册、增量 scope 同意的 step-up authorization、以及企业管理授权扩展 Cross App Access (XAA)(让 IT 通过 IdP 管控 agent 接入)(2025-11)。下一个稳定版 RC 已于 2026-05-21 锁定、定档 2026-07-28 发布(stateless core / Tasks 降为扩展)——逐项 diff 见库内笔记
docs/aipa/day44-mcp-final-spec.md(2026)。 - IETF 正在把本篇 §2.2 的 delegated token 流程标准化:
draft-oauth-ai-agents-on-behalf-of-user(-01 发布 2025-05,-02 发布 2025-08)在授权请求中引入requested_actor、token 请求中引入actor_token,签发的 token 用sub标识委托用户、act标识执行 agent——与本篇 "human identity != agent identity"、actor chain claims 的主张完全一致;另有draft-klrc-aiagent-auth(已至 -02)等并行草案。注意这些都是在研 Internet-Draft,尚未成为 RFC,落地时以 RFC 8693 token exchange 为基座自建仍是现实路径。 - 本篇基础锚点全部仍现役:RFC 8693 Token Exchange(2020-01)仍是委托授权的主流实现基座;RFC 9700(2025-01)是当前 OAuth 安全 BCP。OAuth 2.1 本身仍是 IETF 工作组草案(未定稿),但已被 MCP 2025-11-25 等下游规范事实性采用(强制 PKCE、废弃 implicit flow)。
- 商业 IdP 已产品化 agent 身份:Auth0 for AI Agents 等厂商在 2025-2026 推出 agent 专用授权产品线,「agent 作为一等非人类身份(OAuth client)+ 用户级委托主体(OIDC)」的双层身份模型成为行业共识;WIMSE(Workload Identity in Multi-System Environments)架构被引用为 agent workload 身份的扩展基础。
- 不随版本过时的框架性结论:本篇的六问检查链(谁行动/代表谁/什么授权/什么目的/持续多久/如何证明)、human ≠ agent ≠ tool 三身份分离、purpose-bound 短期 token、tool gateway 作为策略执行点、actor chain evidence 贯穿下游——恰好是 2025-11 MCP 授权更新(step-up、XAA)与上述 IETF 草案(
actclaim 委托链)在标准层面逐条补齐的能力。本篇结论被后续标准强化而非替代,仅需在实现层跟进具体 spec 版本。