View a markdown version of this page

ワークロード ID 別に認証情報プロバイダーへのアクセスをスコープダウンする - Amazon Bedrock AgentCore

ワークロード 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 にのみアクセスする場合:

  1. ワークロードアイデンティティagent-aとワークロードアイデンティティを作成する agent-b

  2. プロバイダー X へのアクセスのみを許可するポリシーAgentARoleを使用して IAM ロールを作成する

  3. プロバイダー Y へのアクセスのみを許可するポリシーAgentBRoleを使用して IAM ロールを作成する

  4. 各ワークロード 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" ] } ] }

実装手順

認証情報プロバイダーのワークロードアイデンティティベースのアクセスコントロールを実装するには:

  1. ワークロード ID を特定する – アカウント内のすべてのワークロード ID aws bedrock-agentcore-control list-workload-identitiesを一覧表示するために使用します。ワークロード ID の作成と管理の詳細については、AgentCore Identity を使用したワークロード ID の管理」を参照してください。

  2. 認証情報プロバイダー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>

  3. IAM ポリシーの作成 – どのワークロード ID がどの認証情報プロバイダーにアクセスできるかを指定する IAM ポリシーを記述する

  4. ロールにポリシーをアタッチする – エージェントまたはアプリケーションで使用される IAM ロールにポリシーをアタッチします。

  5. アクセスコントロールのテスト – 許可されたワークロード ID のみが指定された認証情報プロバイダーにアクセスできることを確認します。

ベストプラクティス

  • ワークロード ID にわかりやすい名前を使用してポリシー管理を容易にする

  • アカウント内のすべてのプロバイダーへのアクセスを許可するのではなく、特定のプロバイダーへのアクセスをスコープする認証情報プロバイダー ARNs を Resourceブロックに含める

  • 異なるエージェントが異なる認証情報プロバイダーにアクセスする必要がある場合は、個別のワークロード ID と IAM ロールを使用する

  • 明示的なDenyステートメントを使用して、他のポリシーに関係なく、機密認証情報プロバイダーへのアクセスを禁止するガードレールを作成する

  • アクセスポリシーを定期的に監査してレビューし、セキュリティ要件に準拠していることを確認します。

  • 時間、IP アドレス、またはその他の要因に基づいて、追加のアクセスコントロールに IAM ポリシー条件を使用することを検討してください。

  • 本番環境のワークロードに適用する前に、開発環境でポリシーをテストする