了解 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 政策由三个主要部分组成:
-
效果-决定是允许还是拒绝访问(
permit或forbid) -
范围-指定策略适用的委托人、操作和资源
-
条件-定义必须满足(
when或unless)的其他逻辑,并且可以引用工具参数(通过上下文)和 OAuth 令牌(通过标签)
政策影响
Cedar 策略使用两种效果来控制访问权限:
-
permit-允许操作继续 -
forbid-否认该操作
默认拒绝
默认情况下,所有操作均被拒绝。如果没有任何策略与请求相匹配,Cedar 将返回 “拒绝”。您必须明确写出允许操作的许可策略。
授权评估
Cedar 使用了禁止超越许可证的评估模型:
-
Cedar 会评估适用于该请求的所有政策
-
如果有任何禁令政策匹配,则结果为 “拒绝”
-
如果至少有一个许可策略匹配且没有禁止策略匹配,则结果为 ALLOW
-
如果没有匹配的策略,则结果为拒绝(默认拒绝)
政策独立性
Cedar 的每份政策都是独立评估的。政策的评估仅取决于:
-
范围(委托人、行动、资源)
-
上下文和标签
策略不引用或依赖其他政策。
策略评估算法
评估请求时,策略引擎使用以下算法确定授权决策:
-
如果有任何
forbid策略与请求匹配,则决定为 “拒绝”。 -
如果没有
forbid策略与请求匹配,并且至少有一个permit策略匹配,则决定为 “允许”。 -
如果两个
permit策略forbid都与请求不匹配,则决定为拒绝。
此评估模型强制使用默认的拒绝状态。
forbid策略永远不会导致 “允许” 决定。策略上的unless条款规定了该forbidforbid政策不适用的条件;它不授予权限,也不会优先于匹配的permit策略。