View a markdown version of this page

授权流程 - 亚马逊基岩 AgentCore

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

授权流程

亚马逊 Bedrock AgentCore Gateway 根据传入的请求评估 Cedar 政策。本节说明授权信息如何从请求流向策略评估。

请求处理

亚马逊 Bedrock AgentCore Gateway 处理来自每个请求的两个关键信息:

  1. JWT 代币 -包含有关用户的 OAuth 声明:

    { "sub": "12345678-1234-1234-1234-123456789012", "iss": "https://cognito-idp.us-east-1.amazonaws.com/us-east-1_Vg2efaoGO", "username": "refund-agent", "scope": "aws.cognito.signin.user.admin refund:write", "role": "admin", "department": "finance" }
  2. MCP 工具调用请求 -实际的工具调用:

    { "jsonrpc": "2.0", "id": 1, "method": "tools/call", "params": { "name": "RefundTool___process_refund", "arguments": { "orderId": "12345", "amount": 450, "reason": "Defective product" } } }

雪松授权申请

网关从两个来源提取信息并构造一个 Cedar 授权请求。

完成授权申请:

{ "principal": "AgentCore::OAuthUser::\"12345678-1234-1234-1234-123456789012\"", "action": "AgentCore::Action::\"RefundTool___process_refund\"", "resource": "AgentCore::Gateway::\"arn:aws:bedrock-agentcore:us-west-2:123456789012:gateway/refund-gateway\"", "context": { "input": { "orderId": "12345", "amount": 450, "reason": "Defective product" } } }

组件:

Principal

根据 JWT 代币的子声明创建:

AgentCore::OAuthUser::"12345678-1234-1234-1234-123456789012"
处理建议

从工具名称中提取:

AgentCore::Action::"RefundTool___process_refund"
资源

网关实例:

AgentCore::Gateway::"arn:aws:bedrock-agentcore:us-west-2:123456789012:gateway/refund-gateway"
上下文

包含工具参数:

{ "input": { "orderId": "12345", "amount": 450, "reason": "Defective product" } }

实体存储 -JWT 声明作为标签存储在 OAuthUser 实体上:

{ "uid": { "type": "AgentCore::OAuthUser", "id": "12345678-1234-1234-1234-123456789012" }, "attrs": { "id": "12345678-1234-1234-1234-123456789012" }, "tags": { "username": "refund-agent", "iss": "https://cognito-idp.us-east-1.amazonaws.com/us-east-1_Vg2efaoGO", "scope": "aws.cognito.signin.user.admin refund:write", "role": "admin", "department": "finance" } }

临时策略的会话上下文

当x-amzn-bedrock-agentcore-policy-session-id标头存在时,网关会在传递给策略引擎的授权请求中包含会话上下文。会话上下文提供当前会话的累积操作历史记录。临时策略规则使用此历史记录来评估一段时间内的限制条件。

{ "principal": "AgentCore::OAuthUser::\"12345678-1234-1234-1234-123456789012\"", "action": "AgentCore::Action::\"PaymentTool___transfer_funds\"", "resource": "AgentCore::Gateway::\"arn:aws:bedrock-agentcore:us-west-2:123456789012:gateway/my-gateway\"", "context": { "input": { "amount": 500, "recipient": "account-789" } }, "sessionId": "12345678-1234-1234-1234-123456789012" }

该sessionId字段将当前请求链接到其会话历史记录。策略引擎解析会话状态,并根据累积的操作链评估所有适用的时间规则。

有关提供会话 ID、会话生命周期以及身份如何在多跳呼叫中传播的详细信息,请参阅策略会话和身份传播。

策略评估

Cedar 评估:

  1. 校长支票:校长是 OAuthUser吗?✓(比赛)

  2. 操作检查:操作是 RefundTool ___process_redund 吗?✓(比赛)

  3. 资源检查:资源是退款网关吗?✓(比赛)

  4. 条件检查:

    • 校长有用户名标签吗?✓(是的,来自 JWT)

    • 用户名是 “退款代理” 吗?✓(是的)

    • context.input.amount 是否小于 500? ✓ (450 < 500)

结果:允许-所有支票均通过,退款已获批准。