View a markdown version of this page

了解 Cedar 的政策 - Amazon Bedrock AgentCore

了解 Cedar 的政策

中的策略 AgentCore 使用 Cedar 策略来控制对 AgentCore 网关工具的访问权限。本节介绍了 Cedar 的策略结构、评估语义和关键概念。

策略示例

考虑使用具有以下要求的退款处理工具:

  • 只有用户 “John” 可以处理退款

  • 退款上限为 500 美元或以下

强制执行这些要求的 Cedar 政策:

permit( principal is AgentCore::OAuthUser, action == AgentCore::Action::"RefundTool___process_refund", resource == AgentCore::Gateway::"arn:aws:bedrock-agentcore:your-region:your-account-id:gateway/refund-gateway" ) when { principal.hasTag("username") && principal.getTag("username") == "John" && context.input.amount < 500 };

只有当用户是 “John” 且退款金额低于 500 美元时,此政策才允许处理退款。

策略结构

Cedar 政策由三个主要部分组成:

  1. 效果-决定是允许还是拒绝访问(permitforbid

  2. 范围-指定策略适用的委托人、操作和资源

  3. 条件-定义必须满足(whenunless)的其他逻辑,并且可以引用工具参数(通过上下文)和 OAuth 令牌(通过标签)

政策影响

Cedar 策略使用两种效果来控制访问权限:

  • permit-允许操作继续

  • forbid-否认该操作

默认拒绝

默认情况下,所有操作均被拒绝。如果没有任何策略与请求相匹配,Cedar 将返回 “拒绝”。您必须明确写出允许操作的许可策略。

授权评估

Cedar 使用了禁止超越许可证的评估模型:

  1. Cedar 会评估适用于该请求的所有政策

  2. 如果有任何禁令政策匹配,则结果为 “拒绝”

  3. 如果至少有一个许可策略匹配且没有禁止策略匹配,则结果为 ALLOW

  4. 如果没有匹配的策略,则结果为拒绝(默认拒绝)

政策独立性

Cedar 的每份政策都是独立评估的。政策的评估仅取决于:

  • 范围(委托人、行动、资源)

  • 上下文和标签

策略不引用或依赖其他政策。

策略评估算法

评估请求时,策略引擎使用以下算法确定授权决策:

  1. 如果有任何forbid策略与请求匹配,则决定为 “拒绝”。

  2. 如果没有forbid策略与请求匹配,并且至少有一个permit策略匹配,则决定为 “允许”。

  3. 如果两个permit策略forbid都与请求不匹配,则决定为拒绝。

此评估模型强制使用默认的拒绝状态。

forbid策略永远不会导致 “允许” 决定。策略上的unless条款规定了该forbidforbid政策不适用的条件;它不授予权限,也不会优先于匹配的permit策略。