Amazon Bedrock AgentCore のリソースベースのポリシー
Amazon Bedrock AgentCore のリソースベースのポリシーを使用すると、どのプリンシパル (AWS アカウント、IAM ユーザー、または IAM ロール) が Amazon Bedrock AgentCore リソース (現在、ランタイム、ゲートウェイ、メモリでサポートされています) を呼び出して管理できるかを制御できます。IAM スタイルのポリシーをリソースに直接アタッチして、ランタイムセッションの開始、ゲートウェイの呼び出し、メモリへのアクセス、またはその他の管理および呼び出しアクションを実行できるユーザーに関するルールを定義できます。
リソースベースのポリシーは、アイデンティティベースの IAM ポリシーと組み合わせて動作し、Amazon Bedrock AgentCore リソースのアクセスコントロールを提供します。ID ベースのポリシーは IAM ID にアタッチされ、実行できるアクションを指定しますが、リソースベースのポリシーはリソースに直接アタッチされ、それらにアクセスできるユーザーを指定します。
トピック
サポートされているリソース
Amazon Bedrock AgentCore は、次のリソースのリソースベースのポリシーをサポートしています。
-
エージェントランタイムとエージェントエンドポイント - エージェントの呼び出しと管理オペレーションへのアクセスを制御します。
-
ゲートウェイ - ゲートウェイ呼び出しオペレーションへのアクセスを制御する
-
メモリ - メモリオペレーションへのアクセスを制御する
リソースベースのポリシーの仕組み
アイデンティティベースのポリシーとリソースベースのポリシー
| 側面 | アイデンティティベースのポリシー | リソースベースのポリシー |
|---|---|---|
|
添付ファイル |
IAM ユーザー、ロール、またはグループにアタッチ |
Amazon Bedrock AgentCore リソースに直接アタッチ |
|
管理 |
IAM AWS による管理 |
Amazon Bedrock AgentCore APIsを使用して管理 |
|
指定 |
アクションとリソース (プリンシパルは暗黙的) |
プリンシパル、アクション、および条件 (リソースは暗黙的) |
|
ユースケース |
ID ができることを定義する |
リソースにアクセスできるユーザーを定義する |
ポリシーの評価
Amazon Bedrock AgentCore リソースに対してリクエストが行われると、 はアイデンティティベースのポリシーとリソースベースのポリシーの両方 AWS を評価します。次の表は、さまざまなポリシーの組み合わせがアクセスにどのように影響するかを示しています。
| IAM ポリシー | リソースポリシー | 結果 |
|---|---|---|
|
アクセスを付与します |
サイレント |
許可されています |
|
アクセスを付与します |
アクセスを付与します |
許可されています |
|
アクセスを付与します |
アクセスを拒否する |
拒否 |
|
サイレント |
サイレント |
拒否 |
|
サイレント |
アクセスを付与します |
許可されています |
|
サイレント |
アクセスを拒否する |
拒否 |
|
アクセスを拒否する |
サイレント |
拒否 |
|
アクセスを拒否する |
アクセスを許可する |
拒否 |
|
アクセスを拒否する |
アクセスを拒否する |
拒否 |
主な原則:
-
明示的な拒否 : アクションを明示的に拒否するポリシーがある場合、他のポリシーに関係なくアクセスは拒否されます。
-
Policy Can Allow : アイデンティティベースまたはリソースベースのポリシーで アクションが許可されている場合 (ポリシーが拒否しない場合)、アクセスは許可されます。
-
デフォルトの拒否: アクションを明示的に許可するポリシーがない場合、アクセスは拒否されます
エージェントランタイムとエンドポイントの階層認可
エージェントエンドポイントは、エージェントのランタイムの特定のバージョンへのアドレス可能なアクセスポイントです。各エンドポイントはランタイム設定の特定のバージョンを指し、DEFAULT エンドポイントは自動的に最新バージョンにルーティングされます。InvokeAgentRuntime や などのランタイム API InvokeAgentRuntimeCommand オペレーションを承認すると、 はエージェントランタイムと呼び出されるエージェントエンドポイントの両方について、アイデンティティベースのポリシーとリソースベースのポリシーの両方 AWS を評価します。
リクエストを承認するには、次の条件を満たす必要があります。
-
呼び出し元のプリンシパルにアタッチされたアイデンティティベースのポリシーは、エージェントのランタイムリソースとエージェントエンドポイントリソースの両方で アクションを許可する必要があります。
-
エージェントランタイムのリソースベースのポリシーは、 アクションを許可する必要があります (ポリシーが存在する場合)
-
エージェントエンドポイントのリソースベースのポリシーは、 アクションを許可する必要があります (ポリシーが存在する場合)
重要
プリンシパルにクロスアカウントアクセスを提供するには、エージェントランタイムとエージェントエンドポイントの両方へのアクセスを許可するリソースベースのポリシーを作成する必要があります。いずれかのリソースがアクセスを拒否するか、明示的な許可ステートメントがない場合、リクエストは拒否されます。
例: クロスアカウントアクセスを許可するには、両方のリソースにポリシーが必要です。
// Policy for Agent Runtime (attached to // arn:aws:bedrock-agentcore:us-west-2:111122223333:runtime/AGENTID) { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:role/CrossAccountRole" }, "Action": "bedrock-agentcore:InvokeAgentRuntime", "Resource": "arn:aws:bedrock-agentcore:us-west-2:111122223333:runtime/AGENTID" } ] } // Policy for Agent Endpoint (attached to // arn:aws:bedrock-agentcore:us-west-2:111122223333:runtime/AGENTID/endpoint/ENDPOINTID) { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:role/CrossAccountRole" }, "Action": "bedrock-agentcore:InvokeAgentRuntime", "Resource": "arn:aws:bedrock-agentcore:us-west-2:111122223333:runtime/AGENTID/endpoint/ENDPOINTID" } ] }
認証タイプの考慮事項
リソースベースのポリシーの記述方法は、エージェントランタイムまたはゲートウェイ用に設定された認証タイプによって異なります。
- SigV4 認証
-
Principal要素で特定の AWS プリンシパル (IAM ユーザー、ロール、またはアカウント) を使用します。例:"Principal": {"AWS": "arn:aws:iam::123456789012:role/MyRole"}。ポリシーは、呼び出し元の IAM アクセス許可と組み合わせて評価されます。AgentCore Gateway によってのみ呼び出されるランタイムを制限する例については、「ゲートウェイへの IAM (SigV4) インバウンド呼び出しを制限する」を参照してください。 - OAuth 認証
-
ポリシーステートメントでは、ワイルドカードプリンシパル (「プリンシパル」:「*」) を使用する必要があります。OAuth トークンは、ポリシー評価の前に AWS Identity Service によって検証されます。登録された ID プロバイダー (IdP) から有効な JWT トークンを持つ認証された OAuth ユーザーのみがリソースを呼び出すことができます。匿名または認証されていないリクエストは、ポリシー評価の前に拒否されます。条件キーを使用してアクセスを制限します (例:
aws:SourceVpc、aws:SourceVpce)。
重要
エージェントランタイムまたはゲートウェイは、作成時に SigV4 または OAuth 認証のいずれかでのみ設定でき、両方を同時に設定することはできません。つまり、1 つのリソースベースのポリシーは 1 つの認証タイプにのみ適用されます。
ポリシーの構造
リソースベースのポリシーは、次の構造を持つ JSON ドキュメントです。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "StatementId", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::account-id:role/role-name" }, "Action": "bedrock-agentcore:ActionName", "Resource": "arn:aws:bedrock-agentcore:region:account-id:resource-type/resource-id", "Condition": { "ConditionOperator": { "ConditionKey": "ConditionValue" } } } ] }
重要
ポリシードキュメントの Resourceフィールドには、ポリシーがアタッチされているリソースの正確な ARN が含まれている必要があります。「リソース」:「*」の使用はサポートされていないため、検証エラーが発生します。
サポートされているアクション
エージェントランタイムアクション
-
bedrock-agentcore:InvokeAgentRuntime- エージェントランタイムを呼び出す -
bedrock-agentcore:InvokeAgentRuntimeForUser- X-Amzn-Bedrock-AgentCore-Runtime-User-Id ヘッダーを使用してエージェントランタイムエンドポイントを呼び出す -
bedrock-agentcore:InvokeAgentRuntimeCommand- アクティブなランタイムセッションでシェルコマンドを実行する -
bedrock-agentcore:InvokeAgentRuntimeCommandShell- アクティブなランタイムセッションでインタラクティブな WebSocket シェルセッションを開く -
bedrock-agentcore:InvokeAgentRuntimeWithWebSocketStream- WebSocket ストリームを使用してエージェントランタイムを呼び出す -
bedrock-agentcore:InvokeAgentRuntimeWithWebSocketStreamForUser- X-Amzn-Bedrock-AgentCore-Runtime-User-Id ヘッダーを使用して WebSocket ストリームでエージェントランタイムを呼び出す -
bedrock-agentcore:StopRuntimeSession- アクティブなランタイムセッションを停止する -
bedrock-agentcore:GetAgentCard- エージェントカード情報を取得する
ゲートウェイアクション
-
bedrock-agentcore:InvokeGateway- ゲートウェイを呼び出す
メモリアクション
-
bedrock-agentcore:GetMemory- メモリリソースを取得する -
bedrock-agentcore:UpdateMemory- メモリリソースを更新する -
bedrock-agentcore:DeleteMemory- メモリリソースを削除する -
bedrock-agentcore:CreateEvent- メモリリソースにイベントを作成する -
bedrock-agentcore:GetEvent- メモリリソースからイベントを取得する -
bedrock-agentcore:DeleteEvent- メモリリソースからイベントを削除する -
bedrock-agentcore:ListEvents- メモリリソースからのイベントを一覧表示する -
bedrock-agentcore:ListActors- メモリリソースからアクターを一覧表示する -
bedrock-agentcore:ListSessions- メモリリソースからのセッションを一覧表示する -
bedrock-agentcore:GetMemoryRecord- メモリリソースからメモリレコードを取得する -
bedrock-agentcore:ListMemoryRecords- Memory リソースからのメモリレコードを一覧表示する -
bedrock-agentcore:RetrieveMemoryRecords- Memory リソースからメモリレコードを検索する -
bedrock-agentcore:DeleteMemoryRecord- メモリリソースからメモリレコードを削除する -
bedrock-agentcore:BatchCreateMemoryRecords- メモリリソースでメモリレコードをバッチ作成する -
bedrock-agentcore:BatchUpdateMemoryRecords- メモリリソースのメモリレコードをバッチ更新する -
bedrock-agentcore:BatchDeleteMemoryRecords- メモリリソース内のメモリレコードをバッチ削除 -
bedrock-agentcore:StartMemoryExtractionJob- メモリリソース内で抽出ジョブを開始する -
bedrock-agentcore:ListMemoryExtractionJobs- メモリリソース内の抽出ジョブを一覧表示する
条件キー
条件キーを使用して、ポリシーのアクセスコントロールをさらに絞り込むことができます。使用可能な条件キーの完全なリストについては、「Bedrock AgentCore 条件キー」とAWS 「グローバル条件コンテキストキー」を参照してください。
一般的なユースケースと例
このセクションでは、一般的なシナリオのリソースベースのポリシーの実用的な例を示します。各例の Resourceフィールドには、ポリシーがアタッチされているリソースの正確な ARN が含まれている必要があります。サンプル ARNs を実際のリソース ARNs。
別の AWS アカウントでロールを許可する
別の AWS アカウントの特定のロールへの API アクセスを付与します。
// Policy attached to arn:aws:bedrock-agentcore:us-west-2:111122223333:runtime/AGENTID { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::123456789012:role/DeveloperRole", "arn:aws:iam::123456789012:role/AdminRole" ] }, "Action": "bedrock-agentcore:InvokeAgentRuntime", "Resource": "arn:aws:bedrock-agentcore:us-west-2:111122223333:runtime/AGENTID" } ] }
送信元 IP アドレスに基づいてトラフィックを拒否する
特定の IP アドレス範囲からの受信トラフィックをブロックします。
// Policy attached to arn:aws:bedrock-agentcore:us-west-2:111122223333:runtime/AGENTID { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:role/ApplicationRole" }, "Action": "bedrock-agentcore:InvokeAgentRuntime", "Resource": "arn:aws:bedrock-agentcore:us-west-2:111122223333:runtime/AGENTID" }, { "Effect": "Deny", "Principal": { "AWS": "arn:aws:iam::123456789012:role/ApplicationRole" }, "Action": "bedrock-agentcore:InvokeAgentRuntime", "Resource": "arn:aws:bedrock-agentcore:us-west-2:111122223333:runtime/AGENTID", "Condition": { "IpAddress": { "aws:SourceIp": [ "192.0.2.0/24", "198.51.100.0/24" ] } } } ] }
特定の VPC からのトラフィックのみを許可する
特定の VPC からのリクエストへのアクセスを制限します。
// Policy attached to arn:aws:bedrock-agentcore:us-west-2:111122223333:runtime/AGENTID { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:role/ApplicationRole" }, "Action": "bedrock-agentcore:InvokeAgentRuntime", "Resource": "arn:aws:bedrock-agentcore:us-west-2:111122223333:runtime/AGENTID" }, { "Effect": "Deny", "Principal": { "AWS": "arn:aws:iam::123456789012:role/ApplicationRole" }, "Action": "bedrock-agentcore:InvokeAgentRuntime", "Resource": "arn:aws:bedrock-agentcore:us-west-2:111122223333:runtime/AGENTID", "Condition": { "StringNotEquals": { "aws:SourceVpc": "vpc-1a2b3c4d" } } } ] }
VPC 制限による OAuth 認証
エージェントランタイムまたはゲートウェイが OAuth 認証で設定されている場合は、ワイルドカードプリンシパルを使用する必要があります。この例では、OAuth 認証リクエストを特定の VPC に制限します。
// Policy attached to arn:aws:bedrock-agentcore:us-west-2:111122223333:runtime/AGENTID { "Version": "2012-10-17", "Statement": [ { "Sid": "AllowOAuthFromVPC", "Effect": "Allow", "Principal": "*", "Action": "bedrock-agentcore:InvokeAgentRuntime", "Resource": "arn:aws:bedrock-agentcore:us-west-2:111122223333:runtime/AGENTID", "Condition": { "StringEquals": { "aws:SourceVpc": "vpc-1a2b3c4d" } } } ] }
重要
OAuth 認証には、ワイルドカードプリンシパル (「プリンシパル」:「*」) が必要です。OAuth トークンは、ポリシー評価の前に AWS Identity Service によって検証されます。登録された ID プロバイダーから有効な JWT トークンを持つユーザーのみがリソースにアクセスできます。匿名または認証されていないリクエストは、ポリシー評価に達する前に拒否されます。条件キー (、 aws:SourceVpc など) aws:SourceVpce を使用してアクセスをさらに制限する
リソースポリシーの管理
次のいずれかの方法を選択します。
例
セキュリティのベストプラクティス
最小特権アクセス許可を適用する
ユースケースに必要な最小限のアクセス許可のみを付与します。
// Policy attached to arn:aws:bedrock-agentcore:us-west-2:111122223333:runtime/AGENTID { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ApplicationRole" }, "Action": "bedrock-agentcore:InvokeAgentRuntime", "Resource": "arn:aws:bedrock-agentcore:us-west-2:111122223333:runtime/AGENTID" } ] }
混乱した代理の防止
AWS サービスへのアクセスを許可するときは、常に条件キーを使用してください。
// Policy attached to arn:aws:bedrock-agentcore:us-west-2:111122223333:gateway/GATEWAYID { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "lambda.amazonaws.com" }, "Action": "bedrock-agentcore:InvokeGateway", "Resource": "arn:aws:bedrock-agentcore:us-west-2:111122223333:gateway/GATEWAYID", "Condition": { "StringEquals": { "aws:SourceAccount": "111122223333" }, "ArnEquals": { "aws:SourceArn": "arn:aws:lambda:us-west-2:111122223333:function/SpecificFunction" } } } ] }
重要なコントロールに明示的な拒否を使用する
セキュリティクリティカルな制限には、明示的な拒否ステートメントを使用します。
// Policy attached to arn:aws:bedrock-agentcore:us-west-2:111122223333:runtime/AGENTID { "Version": "2012-10-17", "Statement": [ { "Sid": "DenyAllExceptVPC", "Effect": "Deny", "Principal": "*", "Action": "bedrock-agentcore:InvokeAgentRuntime", "Resource": "arn:aws:bedrock-agentcore:us-west-2:111122223333:runtime/AGENTID", "Condition": { "StringNotEquals": { "aws:SourceVpc": "vpc-12345678" }, "Bool": { "aws:ViaAWSService": "false" } } } ] }
トラブルシューティング
アクセス拒否エラー
「アクセスが拒否されました」というエラーが表示された場合:
-
両方のポリシーを確認する: ID ベースポリシーとリソースベースのポリシーの両方を検証する
-
明示的な拒否を探す: すべての許可を上書きするポリシーでの明示的な拒否
-
プリンシパル ARN の検証: ポリシーのプリンシパル ARN が発信者と一致することを確認します。
-
チェック条件 : すべての条件キーが true に評価されることを確認する
-
SCPs の確認: 組織のサービスコントロールポリシーはリソースポリシーを上書きできます
ポリシー検証エラー
一般的なポリシー検証エラー:
-
無効な JSON: ポリシーが有効な JSON であることを確認します
-
無効な ARN 形式: すべての ARNs が正しい形式に従っていることを確認します
-
サポートされていないアクション: リソースタイプですべてのアクションがサポートされていることを確認します
-
必須要素がない: バージョン、ステートメント、効果、プリンシパル、アクションが存在することを確認する