View a markdown version of this page

授权流程 - Amazon Bedrock AgentCore
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)。

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

授权流程

亚马逊 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)

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