AgentCore 支払いの IAM ロール
ロールの概要
AgentCore 支払いでは、管理、管理、エージェント実行、サービスオペレーションを分離する 4 ロールの IAM モデルを使用します。ロールに一致するペルソナに基づいて IAM アクセス許可を設定します。
| ロール | 目的 |
|---|---|
|
管理者 (ControlPlaneRole) |
支払いマネージャー、コネクタ、認証情報プロバイダーを管理します |
|
エージェント開発者 (ManagementRole) |
支払い手段とセッションを管理し、支払いを実行できない |
|
支払い実行 (ProcessPaymentRole) |
エージェントに代わって支払いトランザクションを実行する |
|
サービスロール (ResourceRetrievalRole) |
認証情報を取得するために実行時に AgentCore 支払いによって引き受けられる |
ヒント
エージェント AWS ツールキットの AgentCore Payments スキルを使用して、このページのステップを自動化できます。このスキルは aws-agents プラグインの一部であり、AI コーディングエージェントが agentcore CLI を使用して Payment Manager、コネクタ、認証情報プロバイダー、支払い手段、セッションを作成し、x402 支払いツールをエージェントに追加できるようにします。詳細については、GitHub のクイックスタートとエージェントツールキットを参照してください。 AWS GitHub
ロールの分離が重要な理由
支払い管理と支払い実行を分離することで、侵害された単一の ID が無制限の予算でセッションを作成し、それらのセッションに対して支払いを実行することを防ぐことができます。管理ロールProcessPaymentの Denyに対する明示的な と実行ロールの狭い範囲は、この境界を適用します。これにより、監査証跡によって、支払いリソースを設定したユーザーとトランザクションを実行したユーザーを明確に区別できます。
管理者権限 (ControlPlaneRole)
支払いマネージャー、コネクタ、認証情報プロバイダーを管理する管理者の場合:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowPaymentManagerOperations", "Effect": "Allow", "Action": [ "bedrock-agentcore:CreatePaymentManager", "bedrock-agentcore:GetPaymentManager", "bedrock-agentcore:ListPaymentManagers", "bedrock-agentcore:DeletePaymentManager", "bedrock-agentcore:UpdatePaymentManager" ], "Resource": [ "arn:aws:bedrock-agentcore:*:111122223333:payment-manager/*" ] }, { "Sid": "AllowPaymentConnectorOperations", "Effect": "Allow", "Action": [ "bedrock-agentcore:CreatePaymentConnector", "bedrock-agentcore:GetPaymentConnector", "bedrock-agentcore:ListPaymentConnectors", "bedrock-agentcore:DeletePaymentConnector", "bedrock-agentcore:UpdatePaymentConnector" ], "Resource": [ "arn:aws:bedrock-agentcore:*:111122223333:payment-manager/*/connector/*" ] }, { "Sid": "AllowCredentialProviderOperations", "Effect": "Allow", "Action": [ "bedrock-agentcore:CreatePaymentCredentialProvider", "bedrock-agentcore:GetPaymentCredentialProvider", "bedrock-agentcore:ListPaymentCredentialProviders", "bedrock-agentcore:DeletePaymentCredentialProvider", "bedrock-agentcore:UpdatePaymentCredentialProvider" ], "Resource": [ "arn:aws:bedrock-agentcore:*:111122223333:token-vault/*/paymentcredentialprovider/*" ] }, { "Sid": "AllowVendedLogDelivery", "Effect": "Allow", "Action": [ "bedrock-agentcore:AllowVendedLogDeliveryForResource" ], "Resource": [ "arn:aws:bedrock-agentcore:*:111122223333:payment-manager/*" ] }, { "Sid": "AllowPassResourceRetrievalRole", "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::111122223333:role/AgentCorePaymentsResourceRetrievalRole", "Condition": { "StringEquals": { "iam:PassedToService": "bedrock-agentcore.amazonaws.com" } } } ] }
エージェント開発者のアクセス許可 (ManagementRole)
支払い手段とセッションを管理するが、支払いを直接実行しない決定論的/ヒューhuman-in-the-loop (HITL) コードの場合:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowPaymentManagement", "Effect": "Allow", "Action": [ "bedrock-agentcore:CreatePaymentInstrument", "bedrock-agentcore:GetPaymentInstrument", "bedrock-agentcore:ListPaymentInstruments", "bedrock-agentcore:DeletePaymentInstrument", "bedrock-agentcore:CreatePaymentSession", "bedrock-agentcore:GetPaymentSession", "bedrock-agentcore:ListPaymentSessions", "bedrock-agentcore:DeletePaymentSession" ], "Resource": [ "arn:aws:bedrock-agentcore:*:111122223333:payment-manager/*/instrument/*", "arn:aws:bedrock-agentcore:*:111122223333:payment-manager/*/session/*" ] }, { "Sid": "DenyProcessPayment", "Effect": "Deny", "Action": "bedrock-agentcore:ProcessPayment", "Resource": "*" } ] }
注記
このポリシーは、管理オペレーションと支払い実行の間の職務の分離ProcessPaymentを明示的に拒否します。これにより、決定論的なコードパスのみがコントロールプレーンオペレーションを設定でき、エージェント実行は予算を上書きしたり、これを回避する支払い手段を作成したりすることなく、支払いのみを処理できます。
支払い実行アクセス許可 (ProcessPaymentRole)
エージェントに代わって支払いトランザクションを実行する確定的なコードパスの場合:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowProcessPayment", "Effect": "Allow", "Action": "bedrock-agentcore:ProcessPayment", "Resource": [ "arn:aws:bedrock-agentcore:*:111122223333:payment-manager/*/session/*" ] }, { "Sid": "AllowPaymentReadOperations", "Effect": "Allow", "Action": [ "bedrock-agentcore:GetPaymentInstrument", "bedrock-agentcore:GetPaymentInstrumentBalance", "bedrock-agentcore:GetPaymentSession" ], "Resource": [ "arn:aws:bedrock-agentcore:*:111122223333:payment-manager/*/instrument/*", "arn:aws:bedrock-agentcore:*:111122223333:payment-manager/*/session/*" ] } ] }
重要
PaymentSession の書き込みアクセス許可 ( などCreatePaymentSession) と を同じロールProcessPaymentに含めないでください。含めない場合、呼び出し元は予算を引き上げた新しいセッションを作成することで支払い制限を回避できます。
サービスロールのアクセス許可 (ResourceRetrievalRole)
次のサービスロールは、認証情報を取得してワークロード ID を管理するために、実行時に AgentCore 支払いによって引き受けられます。人間のユーザーには割り当てられません。
信頼ポリシー
サービスロールはbedrock-agentcore.amazonaws.comサービスプリンシパルを信頼する必要があります。次の信頼ポリシーは、特定のアカウントと Payment Manager へのアクセスをスコープします。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "bedrock-agentcore.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount": "<account>" }, "ArnLike": { "aws:SourceArn": "arn:aws:bedrock-agentcore:<region>:<account>:payment-manager/<payment-manager-name>-*" } } } ] }
基本アクセス許可 ( Payment Manager の作成時にアタッチ)
Payment Manager が作成されると、次のアクセス許可がサービスロールにアタッチされます。これにより、Payment Manager はワークロード ID および支払いトークンオペレーションにアクセスできるようになります。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "WorkloadIdentityManagement", "Effect": "Allow", "Action": [ "bedrock-agentcore:CreateWorkloadIdentity", "bedrock-agentcore:DeleteWorkloadIdentity" ], "Resource": [ "arn:aws:bedrock-agentcore:<region>:<account>:workload-identity-directory/default", "arn:aws:bedrock-agentcore:<region>:<account>:workload-identity-directory/default/workload-identity/*" ] }, { "Sid": "WorkloadIdentityAccess", "Effect": "Allow", "Action": [ "bedrock-agentcore:GetWorkloadAccessToken" ], "Resource": [ "arn:aws:bedrock-agentcore:<region>:<account>:workload-identity-directory/default", "arn:aws:bedrock-agentcore:<region>:<account>:workload-identity-directory/default/workload-identity/<payment-manager-name>-*" ] }, { "Sid": "PaymentTokenBaseAccess", "Effect": "Allow", "Action": [ "bedrock-agentcore:GetResourcePaymentToken" ], "Resource": [ "arn:aws:bedrock-agentcore:<region>:<account>:token-vault/default", "arn:aws:bedrock-agentcore:<region>:<account>:workload-identity-directory/default", "arn:aws:bedrock-agentcore:<region>:<account>:workload-identity-directory/default/workload-identity/<payment-manager-name>-*" ] } ] }
コネクタごとのアクセス許可
Payment Manager に支払いコネクタが追加されるたびに、以下のアクセス許可がサービスロールに追加されます。これらは、特定の支払い認証情報プロバイダーとそのバッキングシークレットへのアクセスを許可します。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "PaymentTokenAccess", "Effect": "Allow", "Action": [ "bedrock-agentcore:GetResourcePaymentToken" ], "Resource": [ "<payment-credential-provider-arn>" ] }, { "Sid": "SecretsManagerAccess", "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue" ], "Resource": [ "<secret-arns>" ], "Condition": { "StringEquals": { "aws:ResourceAccount": "<account>" } } } ] }
既存のロールの使用
新しいサービスロールを作成する代わりに既存のサービスロールを使用する場合は、ロールに次のものがあることを確認してください。
-
上記の信頼ポリシー。 を信頼されたプリンシパル
bedrock-agentcore.amazonaws.comとして使用します。 -
ワークロードアイデンティティと支払いトークンアクセスの基本アクセス許可。
-
Payment Manager のコネクタが参照する各支払い認証情報プロバイダーのコネクタごとのアクセス許可。
注記
管理者、エージェントデベロッパー、および支払い実行ロールは、 arn:aws:iam::111122223333:rootがそれらを引き受けることを許可する標準アカウント信頼ポリシーを使用します。
IAM ポリシーの例については、「Amazon Bedrock AgentCore の Identity and Access Management」を参照してください。