View a markdown version of this page

ポリシー条件 - Amazon Bedrock AgentCore

ポリシー条件

条件は、 whenおよび unless句を使用してポリシーにきめ細かなロジックを追加します。

when { principal.hasTag("username") && principal.getTag("username") == "refund-agent" && context.input.amount < 500 }

条件の種類

  • when { …​ } - ポリシーは、条件が true の場合にのみ適用されます

  • unless { …​ } - ポリシーは、条件が false の場合にのみ適用されます

  • when guardrails { …​ } - ポリシーは、1 つ以上のガードレールの出力でアサートされた条件が true (複数可) と評価される場合にのみ適用されます。

  • unless guardrails { …​ } - ポリシーは、1 つ以上のガードレールの出力 (複数可) でアサートされた条件が false と評価される場合にのみ適用されます。

ツール引数

context.input には、ツール呼び出しに渡された引数が含まれています。

context.input.amount < 500

ユーザーが次のような引数RefundTool___process_refundで を呼び出す場合:

{ "orderId": "12345", "amount": 450, "reason": "Defective product" }

ポリシーは次の値にアクセスできます。

  • context.input.orderId →「12345」

  • context.input.amount → 450

  • context.input.reason →「欠陥製品」

ポリシーは、特定のツール呼び出しパラメータに基づいて決定を行うことができます。

プリンシパル属性

プリンシパル属性は、AgentCore Gateway 用に設定された認証タイプによって異なります。

OAuth クレーム (タグ)

OAuth 認証ゲートウェイの場合、OAuth トークンからの JWT クレームは OAuthUser エンティティにタグとして保存されます。JWT クレームの例:

{ "sub": "user-123", "username": "refund-agent", "scope": "refund:write admin:read", "role": "admin" }

これらのクレームは、プリンシパルエンティティのタグになります。タグが存在するかどうかを確認します。

principal.hasTag("username")

タグ値を取得します。

principal.getTag("username") == "refund-agent"

パターンマッチング:

principal.getTag("scope") like "*refund:write*"

IAM エンティティ属性

IAM 認証ゲートウェイの場合、プリンシパルには発信者の IAM ARN を含む id 属性があります。IAM プリンシパルはタグをサポートしていません。

プリンシパルエンティティの形式

IAM 認証ゲートウェイの Cedar プリンシパルは ですAgentCore::IamEntityprincipal.id 属性には、呼び出し元の IAM ARN が含まれます。

引き受けた IAM ロールを介して認証する発信者の場合、 principal.idおよび Cedar エンティティ ID は次の形式を使用します。

arn:aws:sts::<account-id>:assumed-role/<role-name>

たとえば、呼び出し元がロール を引き受ける場合MyServiceRole、Cedar エンティティ ID は次のようになります。

AgentCore::IamEntity::"arn:aws:sts::123456789012:assumed-role/MyServiceRole"

この形式は呼び出し間で安定しているため、 を使用してprincipal ==正確なロールマッチングを行うことができます。

とのパターンマッチング like

ワイルドカードで like演算子を使用して、より広範なマッチングを行うこともできます。

// Match any role in a specific account principal.id like "arn:aws:sts::123456789012:assumed-role/*" // Match specific AWS account (any ARN format) principal.id like "*:123456789012:*" // Match a specific IAM role name across any account principal.id like "arn:aws:sts::*:assumed-role/AdminRole"

論理演算子

論理演算子を使用して複数の条件を結合します。

  • && - AND (すべての条件が true である必要があります)

  • || - OR (少なくとも 1 つの条件が true である必要があります)

  • ! - NOT (条件を無効にします)

例:

principal.hasTag("username") && // User must have username tag principal.getTag("username") == "refund-agent" && // Username must be "refund-agent" context.input.amount < 500 // Amount must be less than $500