本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
了解雪松政策
中的策略 AgentCore 使用 Cedar 策略来控制对 AgentCore 网关工具的访问权限。本节介绍了 Cedar 策略结构、评估语义和关键概念。
注意
Session-aware 规则使用临时策略,这些策略以 Dogwood(与 Cedar 兼容)编写,并使用temporal区块。此处描述的 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 美元时进行退款处理。
策略结构
雪松政策包括三个主要组成部分:
-
效果 -确定是允许还是拒绝访问(
permit或forbid) -
范围 -指定策略适用的主体、操作和资源
-
条件 -定义必须满足(
when或unless)的额外逻辑,并且可以引用工具参数(通过上下文)和 OAuth 令牌(通过标签)
政策影响
Cedar 政策使用两种效果来控制访问权限:
-
permit-允许操作继续 -
forbid-拒绝该操作
默认拒绝
默认情况下,所有操作都被拒绝。如果没有与请求相匹配的政策,Cedar 将返回 DENY。必须明确编写许可策略才能允许操作。
授权评估
Cedar 使用禁改许可评估模型:
-
Cedar 会评估适用于该请求的所有政策
-
如果有任何禁用策略匹配,则结果为 DENY
-
如果至少有一个允许策略匹配且没有禁止策略匹配,则结果为 ALLOW
-
如果没有匹配的策略,则结果为 DENY(默认拒绝)
政策独立性
每个 Cedar 政策都进行独立评估。政策的评估仅取决于:
-
范围(主体、行动、资源)
-
上下文和标签
政策不参考或依赖其他政策。
策略评估算法
评估请求时,策略引擎使用以下算法确定授权决策:
-
如果有任何
forbid策略与请求相匹配,则决定为 “拒绝”。 -
如果没有任何
forbid策略与请求相匹配且至少有一个permit策略匹配,则决定为 ALLOW。 -
如果两个
permit策略forbid都不符合请求,则决定为 “拒绝”。
此评估模型强制执行默认拒绝状态。
forbid策略永远不会导致 “允许” 决定。策略上的unless条款规定了该forbidforbid政策不适用的条件;它不授予权限,也不会覆盖匹配的permit政策。