ゲートウェイのアウトバウンド認可を設定する
アウトバウンド認可により、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。そのアクセス許可は、許可された発信者がゲートウェイを通じて実行できる上限です。露出を制限するには、次のベストプラクティスに従います。
-
実行ロールを最小限のアクセス許可にスコープする – 設定されたすべてのターゲットに必要なアクセス許可のみを付与します。広範なカード
ActionやResourceワイルドカードは避けてください。 -
異なる信頼境界に別々のゲートウェイを使用する – ターゲットの機密性レベルが異なる場合、または異なるワークロードを処理する場合は、異なる実行ロールを持つ別々のゲートウェイの後ろにデプロイします。
-
ポリシーエンジンを使用して発信者アクセスを制限する – 共有ゲートウェイでは、ポリシーエンジンを使用して、どの発信者がどのターゲットを呼び出すことができるかを制御し、単一の発信者のアクセス許可の爆発半径を制限します。
OAuth クライアントを使用してアウトバウンド認可を設定する
OAuth クライアントでアウトバウンド認可を設定するには、AgentCore Identity サービスを使用し、組み込み ID プロバイダー (「プロバイダーのセットアップと設定」または「カスタム ID プロバイダー」を参照してください。
OAuth クライアントを使用してアウトバウンド認可を設定するには
-
サポートされているサードパーティープロバイダーにクライアントアプリケーションを登録します。
-
クライアント ID、クライアントシークレット、およびアウトバウンド認可を設定するときに参照するその他の値を受け取ります。
-
要件に応じて、次のいずれかのステップに従います。
-
組み込み ID プロバイダーを使用してコンソールでアウトバウンド認可を設定するには、「組み込みプロバイダーを使用して OAuth クライアントを追加する」の手順に従います。
-
カスタム ID プロバイダーを使用してコンソールでアウトバウンド認可を設定するには、「カスタムプロバイダーを使用して OAuth クライアントを追加する」の手順に従います。
-
API を使用してアウトバウンド認可を設定するには、いずれかの AgentCore コントロールプレーンエンドポイント を使用して CreateOauth2CredentialProvider を送信します。例については、OAuth クライアント認可の設定例」を参照してください。
注記
oauth2ProviderConfigInputフィールドがマッピングされる JSON オブジェクトの形状は、使用するプロバイダーによって異なり、指定したcredentialProviderVendor値と一致する必要があります。さまざまな認証情報プロバイダーのさまざまな設定の例を確認するには、プロバイダーのセットアップと設定で、選択した認証情報プロバイダーのアウトバウンド認可の例を参照してください。
-
-
生成された認証情報 ARN ( API
credentialProviderArnでは ) と AWS Secrets Manager シークレット ARN ( APIsecretArnでは ) を書き留めます。これらの値は、ゲートウェイターゲットを作成するときに使用します。 -
(カスタムゲートウェイサービスロールを使用している場合) ゲートウェイサービスロールに次のアイデンティティベースのポリシーをアタッチします。
{ "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 クライアントを介して認可を設定する方法を示しています。
例
API キーを使用してアウトバウンド認可を設定する
API キーを使用してアウトバウンド認可を設定するには、AgentCore Identity サービスを使用し、サポートされている ID プロバイダーから受け取る API キーを指定します。
OAuth クライアントを使用してアウトバウンド認可を設定するには
-
サポートされているサードパーティープロバイダーにクライアントアプリケーションを登録します。
-
プロバイダーのサービスの API キーを設定します。ゲートウェイターゲットを追加するときに指定する次の値を書き留めます。
-
認証情報の場所 – API キーを ヘッダーに配置するか、クエリパラメータとして配置するか。
-
認証情報プレフィックス – 認証情報のプレフィックス (例: ベアラー)。
-
-
要件に応じて、次のいずれかのステップに従います。
-
AgentCore コンソールで API キーを作成するには、「API キーの追加」の手順に従って、API キーの値を指定します。
-
AgentCore API を使用して API キーを作成するには、AgentCore コントロールプレーンエンドポイントのいずれかを使用して CreateApiKeyCredentialProvider リクエストを送信し、
apiKeyフィールドに API キーの値を指定します。例については、「API キーの設定例」を参照してください。
-
-
ゲートウェイターゲットを追加するときに指定する次の値を書き留めます。
-
認証情報プロバイダー ARN – 認証情報プロバイダー用に生成された Amazon リソースネーム (ARN)。
-
名前 – API キーに付けた名前。
-
シークレット ARN – API キー用に生成された AWS Secrets Manager シークレット ARN。
-
-
(カスタムゲートウェイサービスロールを使用している場合) ゲートウェイサービスロールに次のアイデンティティベースのポリシーをアタッチします。
{ "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 キーを設定する方法を示しています。