Skip to content

阿里云 Agent Identity:工作负载、用户与凭证保险箱 ​

核对日期:2026-10-05。覆盖本地公司/第三方 Agent 和服务器沙箱,沿用 Google 篇 的认证边界。本系统只做认证,业务授权交给项目。 文中的内部契约为本系统设计;本次没有开通或调用云资源。

1. 结论:同时校验运行方与用户上下文 ​

阿里云 Agent Identity 提供工作负载身份、用户身份源接入、凭证保险箱,并与 RAM、STS 等能力衔接。它适合管理 Agent 如何以自己或用户的上下文获取目标资源凭证。产品说明

本系统应借鉴“工作负载身份与用户身份分开”的结构。既有 RAM 角色不能替代用户登录;用户登录也不能证明本地 Agent 属于公司。

2. 官方对象与边界 ​

对象产品用途对接时要保留的区别
Workload Identity云账号内具有 ARN 的工作负载身份名称/ARN 不等于运行程序来源证明
RAM 角色/临时凭证调用云服务的身份与权限不自动代表某个最终用户
OIDC 身份提供商验证用户 JWT 的信任配置与出站凭证提供商不同
WAT访问身份服务相关能力的不透明凭证不能自行解码成通用 JWT
凭证提供商获取下游 OAuth、API Key 等凭证下游资源仍有自己的授权规则

以上对象见 产品说明、工作负载管理 和 WAT 说明。本系统可独立实现身份输出,不必接管厂商的全部出站权限模块。

3. 架构 ​

以下为本系统设计:

alibaba Agent 身份认证架构:厂商能力、本系统认证与项目自主授权

图:使用 imagegen 生成。蓝色表示厂商能力,青色表示本系统集成设计;凭证交换与检查顺序以下文为准。

最后一条由本系统实现,并不以项目能够解析阿里云 WAT 为前提。

4. 本地 Agent 的用户登录 ​

本系统设计:本地 Agent 通过公共客户端、浏览器授权码和 PKCE 登录 Broker;Broker 可联合企业 OIDC。企业 IdP 不直接支持该模式时,使用支持联合登录的服务端代理。

用户映射按固定 issuer 和 subject 建立,不能用可更改的展示名。登录回调验证 state,ID Token 检查 nonce 和预期 audience;发往项目的 access token 有独立受众和生命周期。

第三方 Agent 只取得本系统允许发给它的会话凭证。云调用由可信服务端完成,不向桌面分发长期 AK/SK。公司客户端也遵循这一规则。应用来源默认为未验证;实例密钥证明另作事实记录。

5. 服务器沙箱与三种获取路径 ​

官方入站说明明确:获取 WAT 的各条路径都有 OpenAPI 签名校验;JWT 路径还验证用户 JWT。因此“已有用户 JWT”不意味着无需运行身份的云调用凭证。入站认证

路径使用前提本系统处理
GetWorkloadAccessToken自主工作负载,无用户上下文user_id 为空
GetWorkloadAccessTokenForJWT用户 JWT 和合适的调用身份优先用于用户参与场景
GetWorkloadAccessTokenForUserId可信调用方提供用户 ID只能由已验证会话派生

UserId 路径不替应用验证最终用户;托管运行时可以代为取得 WAT,但仍要确认它实际接收了哪种用户上下文。获取 WAT

本系统设计:不同环境和租户分开工作负载映射。沙箱拿不到身份凭证时返回认证失败,不能回退到共享管理员 AK。任务由谁创建应单独存储,不能据此填充执行时用户。

6. 配置、接口和适配契约 ​

配置顺序:创建工作负载、关联适当 RAM 角色、创建 OIDC 身份提供商并关联工作负载、配置确需的 OAuth 回调、再配置出站凭证提供商。管理权限与运行权限分离。S2

IdP 配置需要元数据地址和允许的 audience。官方提供“允许所有受众”选项,本系统生产接入不采用它;应填写明确白名单,并保证发现文档按平台要求可达。身份提供商配置

以下是本系统适配配置,不是阿里云 API 请求:

json
{
  "provider": "alibaba-agent-identity",
  "region": "<selected-region>",
  "workload_identity": "<workload-name>",
  "ram_role": "<role-arn>",
  "oidc_discovery": "https://id.example.com/.well-known/openid-configuration",
  "allowed_user_audiences": ["<registered-oidc-client-id>"],
  "user_binding_mode": "verified-jwt",
  "accept_wat_at_project_api": false
}

Broker 对项目输出内部用户、工作负载、认证方式、会话和目标受众。供应商原始凭证保留在需要它的调用边界,禁止作为普通业务上下文在日志和消息队列传播。

7. 认证与授权分工 ​

本系统认证用户和运行方,项目执行资源操作权限检查。RAM 对身份服务 API 的调用权限仍需配置,因为这是服务自身的访问控制。

阿里云还提供 Agent 权限模块,官方描述了 AI 网关结合 WAT 的策略评估路径。权限模块 这不表示任意自建项目都能验证 WAT。若未来由项目选择该网关授权,应单独接入和验收;本轮不将业务策略迁入认证系统。

本系统撤销用户绑定后停止续签;另行处理云侧凭证关联及目标 OAuth 授权。工作负载删除、角色权限回收与已签发 Token 的即时失效不是同一件事,需联调测量。

8. 实施顺序与真实环境验收 ​

先验证用户登录和临时 RAM 凭证,再验证 JWT+工作负载绑定;最后增加真正需要的出站凭证。以下均为未实测:

编号验收动作必须看到的结果
L1正确用户 JWT 配合合法运行身份换取对应工作负载上下文
L2缺少云调用凭证,仅提交 JWT不被当作完整入站认证
L3相同 issuer、错误 audience按白名单拒绝
L4客户端自报其他 userId不能覆盖服务器用户映射
L5对自建项目提交 WAT不按通用 JWT 接受
L6回收角色/绑定、轮换凭证记录失效窗口和审计关联

9. 详细设计:用户凭证与 RAM 运行身份如何汇合 ​

场景:员工使用本地 Agent 查询内部客户资料,Agent 运行在服务器沙箱,另有可选的云服务调用。以下接口、数据表和运维约定是本系统设计;官方入站机制以 S3—S5 为依据。

9.1 先确定两种身份各从哪里来 ​

身份事实合法来源服务端记录不可信替代
当前用户企业 IdP 验证结果内部用户映射与登录会话提示词中的姓名
云调用方RAM 角色临时凭证角色引用及部署关联请求 JSON 的 role 名称
Agent 工作负载预先配置的身份记录及调用关联workload 引用和环境用户任意输入的工作负载名称
当前任务关联可信调度服务发出的单次绑定用户、任务、工作负载、有效期永久保存的创建人 ID

本系统应先验证两种身份,再建立关联;不能因为用户和工作负载都分别存在,就认定它们在当前任务中有关系。

9.2 用户参与的调用时序 ​

  1. 用户通过浏览器登录 Broker。Broker 完成企业身份映射,创建受保护会话。
  2. 用户发起任务,调度端从当前会话取得用户 ID。任务记录保存用户关联的引用,不保存上游长期凭证。
  3. 沙箱获得受限的临时云凭证。服务端按登记关系选择 Workload Identity,不从模型生成的参数选择运行角色。
  4. 需要 Agent Identity 能力时,按 SDK 契约携带用户 JWT 并完成 OpenAPI 签名。两者分别用于用户验证和调用方验证。
  5. 返回的 WAT 只交给需要调用身份服务相关接口的组件。它不写入项目用户表,不尝试按本系统 JWT 密钥验签。
  6. 需要下游 OAuth/API Key 时通过对应凭证提供商获取;目标资源执行自身的权限规则。
  7. 查询自有客户项目时使用 Broker 的项目身份凭证。项目验证身份后检查客户可见范围;云侧换到 WAT 不代表客户数据已获准访问。

同一次任务可能用到两条凭证链,图中故意分开:云服务凭证获取链与内部项目认证链没有隐含的“WAT 自动转换”步骤。

9.3 自主任务与用户任务分流 ​

本系统为每个任务记录 execution_mode。自主任务的用户字段为空,以工作负载主体运行;用户任务必须绑定有效会话或明确允许的持续委托。

不能先尝试 JWT 路径,失败后自动改用 UserId 路径,因为那会把强验证失败变成对字符串的信任。只有预先配置、由可信后端派生 userId 的集成才能走该路径,并在审计中标明证据类型。

9.4 数据模型与接口边界 ​

本系统记录核心键必备状态
外部用户映射issuer + subject所属内部租户、停用状态
工作负载登记账号 + 环境 + workload 引用允许的运行身份、配置版本
用户任务绑定随机 binding ID用户、任务、工作负载、受众、单次使用状态
项目会话随机 session ID主体、调用者、到期时间、撤销版本

建议 POST /v1/task-bindings 只接受已认证用户入口;POST /v1/workload-sessions 验证沙箱后原子消费票据;POST /v1/project-credentials 根据服务器会话签发项目凭证。它们是本系统自定义接口,既不替代阿里云 SDK,也不扩展 WAT 用途。

票据不能被任务 A 拿给工作负载 B 使用。消费时在一次事务中比较工作负载、任务、受众和有效期,再标记已用;多副本同时兑换只允许一次成功。

9.5 配置分层与轮换 ​

将 OIDC 元数据、预期受众、工作负载/角色关系放在管理员维护的配置中;将 AK/临时凭证、资源 Token 放在凭证设施中;将用户展示资料放在业务数据库中。三者不要混成一份发给 Agent 的配置文件。

IdP 密钥轮换时仅从已固定的发现/JWKS 地址更新;不能使用请求内附带的 URL 拉取公钥。RAM 角色调整后核查工作负载关联、运行时凭证刷新及旧会话窗口,避免把控制台配置成功当作所有副本即时生效。

9.6 失败矩阵与排查顺序 ​

失败应定位的层本系统响应原则
OpenAPI 签名无效时间、区域、凭证来源或签名不跳过签名,不换共享管理员 AK
JWT audience 错误IdP 应用和白名单修改明确配置,不允许所有受众
workload 未关联正确身份源管理面关联停止该路径并修复登记
用户绑定票据重放调度与 Broker拒绝并记录原请求关联
资源方拒绝目标 OAuth 或业务权限保留拒绝,不由认证平台提权
项目凭证已撤销本系统会话状态不重新使用缓存续签

每次排障都保留平台请求 ID 与本系统 trace ID,但不保留原始 JWT、WAT、AK 或资源密钥。验收 L1—L6 应使用两个用户、两个工作负载和两个项目验证隔离,而非只用管理员单账号跑成功路径。

10. 官方资料与阅读关联 ​