本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
授权流程
亚马逊 Bedrock AgentCore Gateway 根据传入的请求评估 Cedar 政策。本节说明授权信息如何从请求流向策略评估。
请求处理
亚马逊 Bedrock AgentCore Gateway 处理来自每个请求的两个关键信息:
-
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" } -
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 评估:
-
校长支票:校长是 OAuthUser吗?✓(比赛)
-
操作检查:操作是 RefundTool ___process_redund 吗?✓(比赛)
-
资源检查:资源是退款网关吗?✓(比赛)
-
条件检查:
-
校长有用户名标签吗?✓(是的,来自 JWT)
-
用户名是 “退款代理” 吗?✓(是的)
-
context.input.amount 是否小于 500? ✓ (450 < 500)
-
结果:允许-所有支票均通过,退款已获批准。