Agent权限

更新时间:
复制为 MD 格式

权限模块是阿里云智能体身份服务(Agent Identity)下的功能模块,旨在为 AI Agent出站调用(如调用Tools/MCP Servers等)提供细粒度、高性能的、安全的访问控制能力。

核心概念

AI Agent 调用各类工具(如 MCP 服务)时,可能存在未经授权的访问或高风险操作(例如删除关键数据)。Agent Identity 的权限功能通过配置精细化的策略,对 Agent 发起的每一次出站调用进行安全审查和访问控制,确保操作合规。

权限功能涉及以下核心概念:

  • 策略:基于开源策略语言 Cedar,定义"谁(主体)在什么条件下,可以(或不可以)对什么资源做什么操作"。

  • AI网关:所有 MCP 服务的统一入口,也是 Agent 权限策略的执行点。AI 网关拦截 Agent 的每一次工具调用请求,并进行权限评估。

  • 策略集:一个或多个策略的集合。将策略集关联到 AI 网关后,策略对该网关下的所有 MCP 服务生效。

策略结构

一条完整的策略由效果(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 服务为例,授权流程如下:

  1. 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"
          }
        }
      }
  2. 网关拦截请求:AI 网关作为统一入口,拦截该请求。

  3. 构造授权请求: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、用户名、角色等。

  4. 策略评估:权限评估引擎结合授权请求、从网关获取的策略集以及从 JWT 中解析出的实体信息,对所有相关策略进行评估,最终得出一个统一的决策:允许或拒绝。例如:

    评估步骤

    检查内容

    结果

    主体检查

    主体是否为 OAuth用户

    匹配

    操作检查

    操作是否为get_ticket_details

    匹配

    资源检查

    资源网关是否为AIGateway::Gateway::"acs:apig:cn-hangzhou:123...:gateway/gw-abc..."

    匹配

    条件检查

    • 请求IP是否来自信任网段?

    • 用户角色是否为运维人员?

    匹配

    最终结果

    允许

    通过

  5. 执行决策

    • 如果决策为允许,AI 网关将请求转发给后端的 MCP 服务。

    • 如果决策为拒绝:

      • 策略集的执行模式为拦截模式,AI 网关将拒绝请求,并返回授权失败信息(403 Forbidden)。

      • 策略集的执行模式为观察模式,AI 网关仅记录评估结果,放行请求到后端工具。

使用限制

Agent Identity 权限策略功能仅适用于自建 MCP 服务,即通过阿里云 AI 网关发布的 MCP 服务。关于如何通过 AI 网关创建 MCP 服务,参见MCP服务管理