View a markdown version of this page

ゲートウェイのアウトバウンド認可を設定する - Amazon Bedrock AgentCore

ゲートウェイのアウトバウンド認可を設定する

アウトバウンド認可により、Amazon Bedrock AgentCore ゲートウェイは、インバウンド認可中に認証および承認されたユーザーに代わってゲートウェイターゲットに安全にアクセスできます。

AgentCore Gateway は、次のタイプのアウトバウンド認可をサポートしています。

  • 認可なし (非推奨) – 一部のターゲットタイプでは、アウトバウンド認可をバイパスするオプションが提供されます。この安全性の低いオプションはお勧めしません。

  • IAM ベースのアウトバウンド認可ゲートウェイサービスロールを使用して、AWS 署名バージョン 4 (Sig V4) でゲートウェイターゲットへのアクセスを認証します。

  • 発信者 IAM 認証情報 – ゲートウェイは、発信者の IAM 認証情報を使用してターゲットへのリクエストに署名します。ゲートウェイは、フェデレーティッドアクセスサービス (FAS) を使用して発信者に代わってロールを引き受け、発信者の ID を使用してアウトバウンドリクエストに署名します。これは、ターゲットサービスがゲートウェイサービスロールではなく、元の発信者の ID に基づいて を承認する必要がある場合に便利です。

  • OAuth – クライアントアプリケーションがリソースにアクセスできるようにするオープン認可フレームワーク。OAuth は、組み込み ID プロバイダーまたはカスタム ID プロバイダーで使用できます。詳細については、OAuth 2.0」を参照してください。次のタイプの OAuth 認可許可を使用できます。

    • クライアント認証情報の付与 – Machine-to-machine認証 (2 レッグ OAuth とも呼ばれます)。クライアントアプリケーションは、ユーザーの代わりにではなく、アプリケーションに代わってリソースにアクセスします。

    • 認可コードの付与 – ユーザー委任アクセス (3 レッグ OAuth とも呼ばれます)。ユーザーは、クライアントアプリケーションがユーザーに代わって リソースにアクセスすることに同意します。

    • トークン交換許可 (On-behalf-of) – ゲートウェイは、インバウンドユーザーのアクセストークンを、ダウンストリームリソースをターゲットとする新しいスコープ付きアクセストークンと交換します。交換されたトークンは、ユーザーの ID とエージェントの ID の両方を保持し、ダウンストリームサービスが追加の同意フローをトリガーすることなく、すべてのホップできめ細かな認可を適用できるようにします。詳細については、「トークン交換On-behalf-of」を参照してください。

  • トークンパススルー – ゲートウェイは、インバウンド認可トークンを変更せずにターゲットに直接渡します。ターゲットサービスはトークンの検証を担当します。これには、ゲートウェイがAUTHENTICATE_ONLYインバウンド認可を使用して、トークンが検証されても転送用に保持されるようにする必要があります。

  • API キー – AgentCore サービスを使用して API キーを生成し、ゲートウェイターゲットへのアクセスを認証します。

設定できるアウトバウンド認可のタイプは、アクセスを許可するゲートウェイターゲットタイプによって異なります。

対象タイプ 認可なし ゲートウェイサービスロール 発信者 IAM 認証情報 OAuth (クライアントの認証情報) OAuth (認可コード) OAuth (トークン交換) トークンパススルー API キー

API Gateway のステージ

はい

はい

いいえ

いいえ

いいえ

いいえ

なし

はい

Lambda 関数

いいえ

はい

いいえ

いいえ

いいえ

いいえ

いいえ

いいえ

MCP サーバー

はい

はい

いいえ

はい

はい

はい

いいえ

はい

OpenAPI スキーマ

はい

はい

いいえ

はい

はい

はい

いいえ

はい

Smithy スキーマ

いいえ

はい

いいえ

はい

いいえ

いいえ

いいえ

いいえ

AgentCore ランタイム (HTTP)

いいえ

はい

はい

はい

いいえ

なし

はい

いいえ

注記

統合プロバイダーテンプレートをターゲットとして使用する場合は、統合プロバイダーの組み込みテンプレートをターゲットとして、さまざまなテンプレートでサポートされている認可タイプを確認してください。

ゲートウェイにターゲットを追加する前に、サポートされている方法のいずれかを使用してそのターゲットの認可を設定する必要があります。

注記

AWS マネジメントコンソールまたは AgentCore CLI を使用してゲートウェイを作成する場合は、この前提条件をスキップできます。これらのツールのいずれかを使用すると、AgentCore がターゲットにアクセスするために必要なアクセス許可を持つサービスロールを自動的に作成できます。ターゲットを追加するたびに、必要なアクセス許可がサービスロールに自動的にアタッチされます。

トピックを選択して、そのタイプの認可を設定する方法について説明します。

ゲートウェイサービスロールを使用して IAM ベースのアウトバウンド認可を設定する

IAM ベースのアウトバウンド認可では、ゲートウェイサービスロールの IAM 認証情報を使用して、AWS 署名バージョン 4 (Sig V4) で を認可できます。このオプションを使用すると、Amazon Bedrock AgentCore サービスはゲートウェイ発信者に代わってゲートウェイターゲットを認証できます。

このオプションを使用する場合は、ゲートウェイサービスロールに bedrock-agentcore:InvokeGateway アクセス許可があることを確認します。ゲートウェイは、呼び出し中の認証にサービスロール認証情報を使用します。

MCP サーバーと OpenAPI ターゲットの追加設定

MCP サーバーまたは OpenAPI ターゲットで IAM ベースのアウトバウンド認可を使用する場合は、SigV4 署名の追加設定を指定する必要があります。に、次のフィールドiamCredentialProviderを持つ credentialProviderConfigurations を含めます。

  • service (必須) – SigV4 署名に使用される AWS サービス名。例えば、Amazon Bedrock AgentCore でホストされている MCP サーバーbedrock-agentcoreの場合です。

  • region (オプション) – SigV4 署名の AWS リージョン。リージョンを指定しない場合、ゲートウェイは独自のリージョンを使用します。

Lambda、API Gateway、および Smithy ターゲットの場合は、 iamCredentialProviderフィールドを含めないでください。これらのターゲットタイプは、 credentialProviderTypeを使用した基本GATEWAY_IAM_ROLE設定のみをサポートします。認証情報プロバイダー設定の指定の詳細については、AgentCore Gateway サービスロール (IAM) 認可」を参照してください。

IAM ベースのアウトバウンド認可のセキュリティのベストプラクティス

ゲートウェイ実行ロールは、 で設定されたすべてのターゲットで共有されますGATEWAY_IAM_ROLE。そのアクセス許可は、許可された発信者がゲートウェイを通じて実行できる上限です。露出を制限するには、次のベストプラクティスに従います。

  • 実行ロールを最小限のアクセス許可にスコープする – 設定されたすべてのターゲットに必要なアクセス許可のみを付与します。広範なカードActionResourceワイルドカードは避けてください。

  • 異なる信頼境界に別々のゲートウェイを使用する – ターゲットの機密性レベルが異なる場合、または異なるワークロードを処理する場合は、異なる実行ロールを持つ別々のゲートウェイの後ろにデプロイします。

  • ポリシーエンジンを使用して発信者アクセスを制限する – 共有ゲートウェイでは、ポリシーエンジンを使用して、どの発信者がどのターゲットを呼び出すことができるかを制御し、単一の発信者のアクセス許可の爆発半径を制限します。

OAuth クライアントを使用してアウトバウンド認可を設定する

OAuth クライアントでアウトバウンド認可を設定するには、AgentCore Identity サービスを使用し、組み込み ID プロバイダー (「プロバイダーのセットアップと設定」または「カスタム ID プロバイダー」を参照してください。

OAuth クライアントを使用してアウトバウンド認可を設定するには

  1. サポートされているサードパーティープロバイダーにクライアントアプリケーションを登録します。

  2. クライアント ID、クライアントシークレット、およびアウトバウンド認可を設定するときに参照するその他の値を受け取ります。

  3. 要件に応じて、次のいずれかのステップに従います。

  4. 生成された認証情報 ARN ( API credentialProviderArnでは ) と AWS Secrets Manager シークレット ARN ( API secretArnでは ) を書き留めます。これらの値は、ゲートウェイターゲットを作成するときに使用します。

  5. (カスタムゲートウェイサービスロールを使用している場合) ゲートウェイサービスロールに次のアイデンティティベースのポリシーをアタッチします。

    { "Version": "2012-10-17", "Statement": [ { "Sid": "GetWorkloadAccessToken", "Effect": "Allow", "Action": [ "bedrock-agentcore:GetWorkloadAccessToken", ], "Resource": [ "arn:aws:bedrock-agentcore:us-east-1:123456789012:workload-identity-directory/default", "arn:aws:bedrock-agentcore:us-east-1:123456789012:workload-identity-directory/default/workload-identity/GatewayName-*" ] }, { "Sid": "GetResourceOauth2Token", "Effect": "Allow", "Action": [ "bedrock-agentcore:GetResourceOauth2Token", ], "Resource": [ "arn:aws:bedrock-agentcore:us-east-1:123456789012:token-vault/TokenVaultId/oauth2credentialprovider/CredentialName" ] }, { "Sid": "GetSecretValue", "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue", ], "Resource": [ "arn:aws:secretsmanager:us-east-1:123456789012:secret:SecretId" ] } ] }

    次のフィールドの値を置き換えます。

    • GetWorkloadAccessToken ステートメントで、Resourceリストの GatewayName をゲートウェイの名前に置き換えます。

    • GetResourceOauth2Token ステートメントで、Resourceリストの値を、先ほど生成した認証情報の ARN に置き換えます。

    • GetSecretValue ステートメントで、 Resourceリストの値を、認証情報の生成時にレスポンスで返された AWS シークレットの ARN に置き換えます。

OAuth クライアント認可の設定例

次の例は、ゲートウェイターゲットの OAuth クライアントを介して認可を設定する方法を示しています。

AgentCore CLI
  1. AgentCore CLI 認証情報コマンドは、既存のエージェントコアプロジェクト内で実行する必要があります。まだプロジェクトを作成していない場合は、まず を使用してプロジェクトを作成しますagentcore create

    agentcore add credential \ --name oauth-credential-provider \ --type oauth \ --discovery-url <DiscoveryUrl> \ --client-id <ClientId> \ --client-secret <ClientSecret> agentcore deploy
AWS CLI
  1. aws bedrock-agentcore-control create-oauth2-credential-provider \ --name oauth-credential-provider \ --credential-provider-vendor CustomOAuth2 \ --oauth2-provider-config-input '{ "customOAuth2ProviderConfig": { "oauthDiscovery": { "discoveryUrl": "<DiscoveryUrl>" }, "clientId": "<ClientId>", "clientSecret": "<ClientSecret>" } }'
Boto3
  1. import boto3 client = boto3.client("bedrock-agentcore-control") client.create_oauth2_credential_provider( name="oauth-credential-provider", credentialProviderVendor="CustomOAuth2", oauth2ProviderConfigInput={ "oauthDiscovery": { "discoveryUrl": "<DiscoveryUrl>" }, "clientId": "<ClientId>", "clientSecret": "<ClientSecret>" } )

API キーを使用してアウトバウンド認可を設定する

API キーを使用してアウトバウンド認可を設定するには、AgentCore Identity サービスを使用し、サポートされている ID プロバイダーから受け取る API キーを指定します。

OAuth クライアントを使用してアウトバウンド認可を設定するには

  1. サポートされているサードパーティープロバイダーにクライアントアプリケーションを登録します。

  2. プロバイダーのサービスの API キーを設定します。ゲートウェイターゲットを追加するときに指定する次の値を書き留めます。

    • 認証情報の場所 – API キーを ヘッダーに配置するか、クエリパラメータとして配置するか。

    • 認証情報プレフィックス – 認証情報のプレフィックス (例: ベアラー)。

  3. 要件に応じて、次のいずれかのステップに従います。

  4. ゲートウェイターゲットを追加するときに指定する次の値を書き留めます。

    • 認証情報プロバイダー ARN – 認証情報プロバイダー用に生成された Amazon リソースネーム (ARN)。

    • 名前 – API キーに付けた名前。

    • シークレット ARN – API キー用に生成された AWS Secrets Manager シークレット ARN。

  5. (カスタムゲートウェイサービスロールを使用している場合) ゲートウェイサービスロールに次のアイデンティティベースのポリシーをアタッチします。

    { "Version": "2012-10-17", "Statement": [ { "Sid": "GetWorkloadAccessToken", "Effect": "Allow", "Action": [ "bedrock-agentcore:GetWorkloadAccessToken", ], "Resource": [ "arn:aws:bedrock-agentcore:us-east-1:123456789012:workload-identity-directory/default", "arn:aws:bedrock-agentcore:us-east-1:123456789012:workload-identity-directory/default/workload-identity/GatewayName-*" ] }, { "Sid": "GetResourceApiKey", "Effect": "Allow", "Action": [ "bedrock-agentcore:GetResourceApiKey", ], "Resource": [ "arn:aws:bedrock-agentcore:us-east-1:123456789012:token-vault/TokenVaultId/apikeycredentialprovider/Name" ] }, { "Sid": "GetSecretValue", "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue", ], "Resource": [ "arn:aws:secretsmanager:us-east-1:123456789012:secret:SecretId" ] } ] }

    次のフィールドの値を置き換えます。

    • GetWorkloadAccessToken ステートメントで、Resourceリストの GatewayName をゲートウェイの名前に置き換えます。

    • GetResourceApiKey ステートメントで、Resourceリストの値を、先ほど生成した認証情報の ARN に置き換えます。

    • GetSecretValue ステートメントで、 Resourceリストの値を、認証情報の生成時にレスポンスで返された AWS シークレットの ARN に置き換えます。

API キーの設定例

次の例は、ゲートウェイターゲットの API キーを設定する方法を示しています。

AgentCore CLI
  1. AgentCore CLI 認証情報コマンドは、既存のエージェントコアプロジェクト内で実行する必要があります。まだプロジェクトを作成していない場合は、まず を使用してプロジェクトを作成しますagentcore create

    agentcore add credential \ --name api-key-credential-provider \ --type api-key \ --api-key <API_KEY_VALUE> agentcore deploy
AWS CLI
  1. aws bedrock-agentcore-control create-api-key-credential-provider \ --name api-key-credential-provider \ --api-key <API_KEY_VALUE>
Boto3
  1. import boto3 client = boto3.client("bedrock-agentcore-control") client.create_api_key_credential_provider( name="api-key-credential-provider", apiKey="<API_KEY_VALUE>" )