Cedar ポリシーについて
AgentCore のポリシーは、Cedar ポリシーを使用して AgentCore Gateway ツールへのアクセスを制御します。このセクションでは、Cedar のポリシー構造、評価セマンティクス、主要な概念について説明します。
ポリシーの例
以下の要件を満たす返金処理ツールを検討してください。
-
ユーザー「John」のみが返金を処理できます
-
返金は 500 USD 以下に制限されます
これらの要件を適用する 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 USD 未満の場合にのみ返金処理を許可します。
ポリシーの構造
Cedar ポリシーは、次の 3 つの主要コンポーネントで構成されます。
-
効果 - アクセスを許可するか拒否するかを決定します (
permitまたはforbid) -
スコープ - ポリシーが適用されるプリンシパル、アクション、リソースを指定します。
-
条件 - 満たす必要がある追加のロジック (
whenまたはunless) を定義し、ツールパラメータ (コンテキスト経由) と OAuth トークン (タグ経由) を参照できます。
ポリシーの効果
Cedar ポリシーは、アクセスを制御するために 2 つの効果を使用します。
-
permit- アクションの続行を許可します -
forbid- アクションを拒否します
デフォルトで拒否
すべてのアクションはデフォルトで拒否されます。リクエストに一致するポリシーがない場合、Cedar は DENY を返します。アクションを許可するには、許可ポリシーを明示的に記述する必要があります。
認可評価
Cedar は forbid-overrides-permit 評価モデルを使用します。
-
Cedar は、リクエストに適用されるすべてのポリシーを評価します。
-
禁止ポリシーが一致した場合、結果は DENY になります。
-
少なくとも 1 つの許可ポリシーが一致し、禁止ポリシーがない場合、結果は許可です
-
一致するポリシーがない場合、結果は DENY (デフォルトは拒否) です。
ポリシーの独立性
各 Cedar ポリシーは個別に評価されます。ポリシーの評価は、以下にのみ依存します。
-
スコープ (プリンシパル、アクション、リソース)
-
コンテキストとタグ
ポリシーは、他のポリシーを参照したり依存したりしません。
ポリシー評価アルゴリズム
リクエストが評価されると、ポリシーエンジンは次のアルゴリズムを使用して認可の決定を決定します。
-
いずれかの
forbidポリシーがリクエストに一致する場合、決定は DENY です。 -
リクエストに一致する
forbidポリシーがなく、少なくとも 1 つのpermitポリシーが一致した場合、決定は許可されます。 -
permitもポリシーforbidもリクエストと一致しない場合、決定は DENY です。
この評価モデルは、デフォルトの拒否体制を適用します。
forbid ポリシーによって ALLOW 決定が発生することはありません。forbid ポリシーの unless句は、そのforbidポリシーが適用されない条件を指定します。ポリシーはアクセス許可を付与せず、一致するpermitポリシーを上書きしません。