Agent权限
权限模块是阿里云智能体身份服务(Agent Identity)下的功能模块,旨在为 AI Agent出站调用(如调用Tools/MCP Servers等)提供细粒度、高性能的、安全的访问控制能力。
核心概念
AI Agent 调用各类工具(如 MCP 服务)时,可能存在未经授权的访问或高风险操作(例如删除关键数据)。Agent Identity 的权限功能通过配置精细化的策略,对 Agent 发起的每一次出站调用进行安全审查和访问控制,确保操作合规。
权限功能涉及以下核心概念:
策略结构
一条完整的策略由效果(Effect)、范围(Scope) 和条件(Condition) 三部分组成。其中范围(Scope)定义了策略的边界,可分为主体(Principal)、操作(Action)和资源(Resource)三部分。
策略示例
// 1. 效果 (Effect): permit 或 forbid
permit (
// 2. 范围 (Scope): 定义策略适用的主体、操作和资源
principal is AgentIdentity::OAuthUser,
action == AIGateway::Action::"mcp-servers.order-service.create-order",
resource == AIGateway::Gateway::"acs:apig:cn-beijing:{account_id}:gateway/gw-abc..."
)
// 3. 条件 (Conditions): 基于属性或上下文的细粒度过滤
when { context.input.amount >= 1000 && ip(context.sourceIp).isInRange(ip("192.168.1.0/24")) };该策略的含义为:允许 OAuth 用户在订单金额大于等于 1000 且请求来源 IP 在 192.168.1.0/24 网段内时,通过指定 AI 网关调用订单服务的 create-order 工具。
授权流程
配置策略集并绑定 AI 网关后,每一次通过 AI 网关的调用都会经过授权评估。以 Agent 调用 MCP 服务为例,授权流程如下:
Agent 发起调用请求:Agent 持有向 AI 网关发起一个MCP工具调用请求,请求包括以下两部分内容:
Workload Access Token:Agent会通过Agent Identity SDK自动获取工作负载访问令牌,包含在请求头的
Authorization内。以有用户参与且用户通过IdP完成登录的场景为例,Workload Access Token将同时包含工作负载身份(Workload Identity)及用户信息。用户信息来自于IdP颁发的JWT令牌(又称Id Token),如以下所示:
{ "aud": "404590186759221****", "sub": "iiCsOvhjNZX/hK0x1jl9****", "upn": "test-user@xxxx.onaliyun.com", "iss": "https://oauth.aliyun.com", "name": "test-user" }工作负载身份信息(ARN):
acs:agentidentity:cn-beijing:{account_id}:workloadidentitydirectory/default/workloadidentity/{workload_identity_name}
MCP请求体。例如:
{ "jsonrpc": "2.0", "id": 1, "method": "tools/call", "params": { "name": "get_ticket_details", "arguments": { "ticket_id": "T-2026001" } } }
网关拦截请求:AI 网关作为统一入口,拦截该请求。
构造授权请求:Agent Identity网关插件从Agent请求中提取信息,构造一个发送给 Cedar 策略评估引擎的授权请求,该请求包含四要素(P, A, R, C):
P (Principal - 主体):网关解析请求头中的Workload Access Token,从令牌中提取用户身份,并构造成引擎可识别的主体。例如:
AgentIdentity::OAuthUser::"iiCsOvhjNZX/hK0x1jl9****"。其中,主体IDiiCsOvhjNZX/hK0x1jl9****为用户JWT令牌中的sub字段,可以唯一标识该用户。A (Action - 操作):根据调用的 MCP 服务和工具名称,构造成操作。例如:
AIGateway::Action::"mcp-servers.incident-service.create_ticket"。R (Resource - 资源):使用当前 AI 网关的唯一标识符作为资源。例如:
AIGateway::Gateway::"acs:apig:cn-hangzhou:123...:gateway/gw-abc..."。C (Context - 上下文):将请求的动态信息构造成上下文,包括:
操作入参:MCP请求体中的参数,如
ticket_id。环境信息:如来源 IP、是否使用 HTTPS 等。
用户属性:从用户JWT令牌中解析出的额外信息,如用户ID、用户名、角色等。
策略评估:权限评估引擎结合授权请求、从网关获取的策略集以及从 JWT 中解析出的实体信息,对所有相关策略进行评估,最终得出一个统一的决策:允许或拒绝。例如:
评估步骤
检查内容
结果
主体检查
主体是否为 OAuth用户?
匹配
操作检查
操作是否为
get_ticket_details匹配
资源检查
资源网关是否为
AIGateway::Gateway::"acs:apig:cn-hangzhou:123...:gateway/gw-abc..."?匹配
条件检查
请求IP是否来自信任网段?
用户角色是否为运维人员?
匹配
最终结果
允许
通过
执行决策:
使用限制
Agent Identity 权限策略功能仅适用于自建 MCP 服务,即通过阿里云 AI 网关发布的 MCP 服务。关于如何通过 AI 网关创建 MCP 服务,参见MCP服务管理。