ワークロード ID 別に認証情報プロバイダーへのアクセスをスコープダウンする
IAM ポリシーを使用して、特定の認証情報プロバイダーにアクセスできるワークロード ID を制御できます。これにより、きめ細かなアクセスコントロールが可能になり、承認されたエージェントのみが特定のサービスの認証情報を取得できるようになります。
注記
エージェントに割り当てる IAM ロールは、エージェントが呼び出すことができる認証情報プロバイダーを制御します。このサービスは、同じアカウントのワークロード ID と認証情報プロバイダーの間に追加のバインドを適用しません。最小特権のプラクティスに従うには、 を使用するのではなく、IAM ポリシーResourceブロックを特定のワークロードアイデンティティと認証情報プロバイダーARNs にスコープします*。
認証情報プロバイダーへの呼び出しが成功しても、認証情報が自動的に返されるわけではありません。ワークロードが取得する認証情報は、ワークロードアクセストークンのユーザー ID に限定されます。OAuth2 (3LO) プロバイダーの場合、エンドユーザーは、そのワークロード ID とユーザーの組み合わせに対して取得する認証情報が存在する前に、認可を完了している必要があります。
アクセスコントロールメカニズム
-
ワークロードアイデンティティベースの制限 – 認証情報プロバイダーのアクセスを特定のワークロードアイデンティティに制限する
-
リソースレベルのアクセス許可 — ARN ベースのポリシーを使用して、個々の認証情報プロバイダーへのアクセスを制御します。
-
ディレクトリレベルのコントロール – ワークロード ID ディレクトリレベルでアクセスを管理します。
-
認証情報プロバイダーのスコープ — ポリシー
Resourceブロックに認証情報プロバイダー ARNs を含めることで、ワークロード ID がアクセスできる認証情報プロバイダーを制限します。
IAM ポリシーの例
次の例は、ワークロード ID と認証情報プロバイダーに基づいて認証情報プロバイダーのアクセスを制限する IAM ポリシーを作成する方法を示しています。
特定の API キー認証情報プロバイダーへのアクセスを制限する
このポリシーにより、ワークロード ID は特定の認証情報プロバイダーからのみ API キーを取得できます。Resource ブロックの認証情報プロバイダー ARN は、そのプロバイダーへのアクセスを制限します。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "GetResourceApiKey", "Effect": "Allow", "Action": [ "bedrock-agentcore:GetResourceApiKey" ], "Resource": [ "arn:aws:bedrock-agentcore:us-east-1:<account_id>:workload-identity-directory/default", "arn:aws:bedrock-agentcore:us-east-1:<account_id>:workload-identity-directory/default/workload-identity/<workload-identity-name>", "arn:aws:bedrock-agentcore:us-east-1:<account_id>:token-vault/default", "arn:aws:bedrock-agentcore:us-east-1:<account_id>:token-vault/default/api-key/<provider-name>" ] } ] }
特定の OAuth2 認証情報プロバイダーへのアクセスを制限する
このポリシーにより、ワークロードアイデンティティは特定の OAuth2 認証情報プロバイダーからのみ OAuth2 トークンを取得できます。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "GetResourceOauth2Token", "Effect": "Allow", "Action": [ "bedrock-agentcore:GetResourceOauth2Token" ], "Resource": [ "arn:aws:bedrock-agentcore:us-east-1:<account_id>:workload-identity-directory/default", "arn:aws:bedrock-agentcore:us-east-1:<account_id>:workload-identity-directory/default/workload-identity/<workload-identity-name>", "arn:aws:bedrock-agentcore:us-east-1:<account_id>:token-vault/default", "arn:aws:bedrock-agentcore:us-east-1:<account_id>:token-vault/default/oauth2-credential-provider/<provider-name>" ] } ] }
複数のワークロード ID に認証情報プロバイダーへのアクセスを許可する
このポリシーでは、複数のワークロード ID が同じ認証情報プロバイダーから API キーを取得できます。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "GetResourceApiKeyMultipleIdentities", "Effect": "Allow", "Action": [ "bedrock-agentcore:GetResourceApiKey" ], "Resource": [ "arn:aws:bedrock-agentcore:us-east-1:<account_id>:workload-identity-directory/default", "arn:aws:bedrock-agentcore:us-east-1:<account_id>:workload-identity-directory/default/workload-identity/agent-1", "arn:aws:bedrock-agentcore:us-east-1:<account_id>:workload-identity-directory/default/workload-identity/agent-2", "arn:aws:bedrock-agentcore:us-east-1:<account_id>:workload-identity-directory/default/workload-identity/agent-3", "arn:aws:bedrock-agentcore:us-east-1:<account_id>:token-vault/default", "arn:aws:bedrock-agentcore:us-east-1:<account_id>:token-vault/default/api-key/<provider-name>" ] } ] }
特定の認証情報プロバイダーへのアクセスを拒否する
Deny ステートメントを使用して、特定の認証情報プロバイダーへのワークロード ID アクセスを明示的に拒否できます。拒否ステートメントは Allow ステートメントよりも優先されるため、ガードレールの作成に役立ちます。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "DenyAccessToSensitiveProvider", "Effect": "Deny", "Action": [ "bedrock-agentcore:GetResourceApiKey", "bedrock-agentcore:GetResourceOauth2Token" ], "Resource": [ "arn:aws:bedrock-agentcore:us-east-1:<account_id>:token-vault/default/api-key/<sensitive-provider-name>", "arn:aws:bedrock-agentcore:us-east-1:<account_id>:token-vault/default/oauth2-credential-provider/<sensitive-provider-name>" ] } ] }
認証情報プロバイダーごとに個別のワークロード ID を使用する
異なるエージェントが異なる認証情報プロバイダーにアクセスする必要がある場合は、個別の IAM ロールを使用して個別のワークロード ID を作成します。各 IAM ロールは、エージェントが必要とする認証情報プロバイダーのみを対象としています。
たとえば、エージェント A がプロバイダー X にのみアクセスし、エージェント B がプロバイダー Y にのみアクセスする場合:
-
ワークロードアイデンティティ
agent-aとワークロードアイデンティティを作成するagent-b -
プロバイダー X へのアクセスのみを許可するポリシー
AgentARoleを使用して IAM ロールを作成する -
プロバイダー Y へのアクセスのみを許可するポリシー
AgentBRoleを使用して IAM ロールを作成する -
各ワークロード ID を対応する IAM ロールに関連付ける
エージェント A の IAM ポリシー (プロバイダー X のみにアクセス)
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AgentAAccessProviderX", "Effect": "Allow", "Action": [ "bedrock-agentcore:GetResourceApiKey" ], "Resource": [ "arn:aws:bedrock-agentcore:us-east-1:<account_id>:workload-identity-directory/default", "arn:aws:bedrock-agentcore:us-east-1:<account_id>:workload-identity-directory/default/workload-identity/agent-a", "arn:aws:bedrock-agentcore:us-east-1:<account_id>:token-vault/default", "arn:aws:bedrock-agentcore:us-east-1:<account_id>:token-vault/default/api-key/provider-x" ] } ] }
エージェント B の IAM ポリシー (プロバイダー Y のみにアクセス)
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AgentBAccessProviderY", "Effect": "Allow", "Action": [ "bedrock-agentcore:GetResourceApiKey" ], "Resource": [ "arn:aws:bedrock-agentcore:us-east-1:<account_id>:workload-identity-directory/default", "arn:aws:bedrock-agentcore:us-east-1:<account_id>:workload-identity-directory/default/workload-identity/agent-b", "arn:aws:bedrock-agentcore:us-east-1:<account_id>:token-vault/default", "arn:aws:bedrock-agentcore:us-east-1:<account_id>:token-vault/default/api-key/provider-y" ] } ] }
実装手順
認証情報プロバイダーのワークロードアイデンティティベースのアクセスコントロールを実装するには:
-
ワークロード ID を特定する – アカウント内のすべてのワークロード ID
aws bedrock-agentcore-control list-workload-identitiesを一覧表示するために使用します。ワークロード ID の作成と管理の詳細については、AgentCore Identity を使用したワークロード ID の管理」を参照してください。 -
認証情報プロバイダーARNs – アクセスを制御する特定の認証情報プロバイダーを特定します。認証情報プロバイダー ARNs形式に従います。
-
arn:aws:bedrock-agentcore:<region>:<account_id>:token-vault/default/api-key/<provider-name> -
arn:aws:bedrock-agentcore:<region>:<account_id>:token-vault/default/oauth2-credential-provider/<provider-name>
-
-
IAM ポリシーの作成 – どのワークロード ID がどの認証情報プロバイダーにアクセスできるかを指定する IAM ポリシーを記述する
-
ロールにポリシーをアタッチする – エージェントまたはアプリケーションで使用される IAM ロールにポリシーをアタッチします。
-
アクセスコントロールのテスト – 許可されたワークロード ID のみが指定された認証情報プロバイダーにアクセスできることを確認します。
ベストプラクティス
-
ワークロード ID にわかりやすい名前を使用してポリシー管理を容易にする
-
アカウント内のすべてのプロバイダーへのアクセスを許可するのではなく、特定のプロバイダーへのアクセスをスコープする認証情報プロバイダー ARNs を
Resourceブロックに含める -
異なるエージェントが異なる認証情報プロバイダーにアクセスする必要がある場合は、個別のワークロード ID と IAM ロールを使用する
-
明示的な
Denyステートメントを使用して、他のポリシーに関係なく、機密認証情報プロバイダーへのアクセスを禁止するガードレールを作成する -
アクセスポリシーを定期的に監査してレビューし、セキュリティ要件に準拠していることを確認します。
-
時間、IP アドレス、またはその他の要因に基づいて、追加のアクセスコントロールに IAM ポリシー条件を使用することを検討してください。
-
本番環境のワークロードに適用する前に、開発環境でポリシーをテストする