AIエージェントは、アクセスできるツールによってのみ強力になります。CRMからの顧客データの取得、Slackへの更新の投稿、GitHubリポジトリへのクエリなど、エージェントは外部APIを呼び出す必要があり、実行時に安全に資格情報を渡すことが求められます。コードにシークレットをハードコードしたり、エージェントのプロンプトに露出したりすることなくそれを実現することは、本番環境対応のエージェントシステムを構築する上での重要な課題の1つです。
Amazon Bedrock AgentCore Identityは、資格情報プロバイダーとトークンボールトを通じてこの課題に取り組みます。これらは、アウトバウンド資格情報プロバイダーリソースごとに、お客様のアカウントのAWS Secrets Managerにシークレットを自動的に作成および管理します。このシークレットには、APIキーまたはクライアントシークレットと、外部IDプロバイダーのその他のメタデータが含まれます。AgentCore Identityはこれらのシークレットを完全に作成および管理しますが、お客様は作成時にカスタムタグ、ローテーションポリシー、またはお客様管理のAWS KMSキー暗号化を設定できませんでした。
本日、AgentCore IdentityでAWS Secrets Managerのシークレットを参照できる機能を発表できることを嬉しく思います。これにより、お客様はSecrets Managerから事前設定された独自のシークレットを参照し、その管理方法を完全に制御できます。この機能により、組織の既存のシークレットガバナンスプロセスをAgentCoreに拡張できます。資格情報プロバイダーリソースで使用するために、既存の事前設定されたAWS Secrets Managerシークレットを提供できます。暗号化設定、ローテーション、レプリケーション、タグ、リソースポリシーを、Secrets Managerで他のシークレットを管理するのと同様に完全に制御できます。また、同じAWSリージョン内の別のAWSアカウントからシークレットを選択することもできますが、クロスリージョンのシークレット共有はサポートされていません。これは、AWS Secrets Manager外部コネクタを介して取り込まれたシークレットもサポートし、サードパーティのシークレットマネージャーとの統合を可能にします。
この投稿では、ユースケースの例を確認し、既存のシークレットを使用して資格情報プロバイダーリソースを設定する方法を段階的に説明します。
ユースケースの例
以下はユースケースの例です:
- エージェントが、チームが既にシークレットを持っている外部APIにアクセスする:AgentCore Identityに新しいシークレットを作成させる代わりに、その既存のシークレットのARNを資格情報プロバイダーリソースに提供します。同じリージョン内の別のAWSアカウントのシークレットや、AWS Secrets Manager外部コネクタを介して取り込まれたシークレットも参照でき、サードパーティのシークレットマネージャーとの統合が可能です。
- セキュリティのベストプラクティスとしてシークレットをローテーションし、ローテーション中もエージェントが動作し続けるようにしたい:シークレット値をローテーションすると、AgentCore Identityは次の読み取り時に更新された値を取得します。資格情報プロバイダーリソースを更新または再作成する必要はありません。
- シークレットへのアクセスを意図したエージェントの使用に限定する:AWS Secrets Managerで直接シークレットのリソースポリシーを設定します。シークレットにアクセスできるAWS Identity and Access Management(IAM)プリンシパルを制御し、アクセス条件を設定できます。
- エージェントが規制環境で動作し、すべての資格情報をお客様管理のキーで暗号化する必要がある:AgentCore Identityにシークレットを提供する前に、お客様管理の暗号化キーを使用してシークレットを作成します。これは、組織がすべてのデータをお客様管理のCMKで暗号化することを要求するSCPやRCPを施行している場合に特に役立ちます。既存のシークレットを参照することで、暗号化設定が完全に保持されます。
- 組織でコスト配分、コンプライアンス追跡、またはガバナンス監査のためにシークレットにリソースタグが必要である:AgentCore Identityにシークレットを提供する前に、標準に従ってシークレットを作成しタグ付けします。
シークレット設定オプションの詳細については、『AWS Secrets Managerユーザーガイド』を参照してください。
前提条件
この手順を実行するには、以下が必要です:
- APIキーまたはOAuthクライアントシークレットを含む既存のAWS Secrets Managerシークレット。
- AgentCore Identityサービスプリンシパルにシークレットへのsecretsmanager:GetSecretValueアクセスを許可するIAM権限。
- お客様管理のAWS KMSキーを使用している場合は、そのキーに対するサービスプリンシパルのkms:Decrypt権限。
- Amazon Bedrock AgentCore IdentityコンソールまたはAWS Command Line Interface(AWS CLI)へのアクセス。
はじめに
AWS Secrets Managerのシークレットを参照するには、AgentCore Identity APIを介して資格情報プロバイダーリソースを作成する際に、シークレットARNとJSONキーを提供します。AgentCore Identityは、実行時に指定されたJSONキーから資格情報値を取得します。
以下のセクションでは、AWS Management Console、AWS CLI、またはAIエージェントを使用して、参照シークレットを使用して資格情報プロバイダーリソースを作成する方法を示します。
コンソールの使用
Amazon Bedrock AgentCore Identityコンソールで新しい資格情報プロバイダーリソースを作成するときに、参照シークレットを直接設定できます。この機能は、APIキーとOAuthクライアント資格情報の両方のタイプをサポートしています。
図1:AgentCore Identityコンソール、参照シークレットを使用したアウトバウンド認証リソースの作成。
A. 参照シークレットを使用したAPIキーの追加
参照シークレットを使用してAPIキーを追加するには、次の手順を実行します:
- Amazon Bedrock AgentCoreコンソールを開きます。
- 左側のナビゲーションペインで、[Identity]を選択します。
- [Outbound Auth]セクションで、[Add Outbound Auth]を選択します。
- [Add API key]を選択します。
- Outbound Authリソースの名前を入力します。
- [API key selection method]で、[Provide API key via Secrets Manager]を選択します。
- [Secrets Manager ARN]フィールドに、既存のシークレットのARNを入力または選択します。リストにはアカウントで利用可能なシークレットが表示されます。例:arn:aws:secretsmanager:us-east-1:123456789012:secret:myApiKeySecret-AbCdEf。
- [JSON key]フィールドに、APIキー値を含むシークレット内のキーを指定します。
- [Add]を選択します。
- 資格情報プロバイダーが作成されたことを確認するには、[Outbound Auth]リストに表示されていることを確認します。
図2:AgentCore Identityコンソール、Secrets ManagerからのAPIキーの追加。
B. 参照シークレットを使用したOAuthクライアントシークレットの追加
参照シークレットを使用してOAuthクライアントシークレットを追加するには、次の手順を実行します:
- [Identity]ページで、[Add Outbound Auth]を選択します。
- [Add OAuth client]を選択します。
- OAuthクライアントの名前を入力します(例:google-oauth-client-v5fz5)。
- [Provider]で、使用する組み込みまたはカスタムプロバイダーを選択します。
- アイデンティティプロバイダーから割り当てられたクライアントIDを入力します。
- [Client secret]で、[Provide Client secret via Secrets Manager]を選択します。
- [Secrets Manager ARN]フィールドに、OAuthクライアントシークレットを含むシークレットのARNを入力します。
- [JSON key]フィールドに、クライアントシークレット値を含むシークレット内のキーを指定します。
- [Add OAuth Client]を選択します。
- 資格情報プロバイダーが作成されたことを確認するには、[Outbound Auth]リストに表示されていることを確認します。
図3:AgentCore Identityコンソール、Secrets ManagerからのOAuthクライアントシークレットの追加。
AWS CLIの使用
AWS CLIからOAuthクライアントシークレット用の新しいアウトバウンド認証リソースを作成する際に、参照シークレットを設定できます。以下にコードを示します:
aws bedrock-agentcore-control create-oauth2-credential-provider \ --name "google-oauth-client-v5fz5" \ --credential-provider-vendor "GoogleOauth2" \ --oauth2-provider-config-input '{ "googleOauth2ProviderConfig": { "clientId": "", "clientSecretSource": "EXTERNAL", "clientSecretConfig": { "secretId": "arn:aws:secretsmanager:us-east-1:123456789012:secret:myGoogleKeySecret-AbCdEf", "jsonKey": "key" } } }'
デスクトップ上のAIエージェントの使用
AIコーディングエージェント(Kiroなど)を使用している場合、参照シークレットを直接設定するようにプロンプトできます:
「AWS Secrets ManagerにARN arn:aws:secretsmanager:us-east-1:123456789012:secret:my-api-keyの既存のシークレットがあります。Amazon Bedrock AgentCore Identityに<NAME>という名前のOAuth2資格情報プロバイダーを作成し、GoogleOauth2をベンダーとして使用します。クライアントIDは<CLIENT_ID>、クライアントシークレットソースはEXTERNAL、シークレットJSONキーはkeyです。」
注:<NAME>と<CLIENT_ID>は実際の値に置き換えてください。
重要:AgentCore Identityにシークレットの読み取り権限を付与するには、シークレットにリソースポリシーを追加し、サービスプリンシパルがsecretsmanager:GetSecretValueを呼び出せるようにします。シークレットがお客様管理のKMSキーで暗号化されている場合は、そのキーに対するサービスプリンシパルのkms:Decrypt権限も付与します。
結論
AWS Secrets Managerのシークレットを参照できる機能により、AgentCore Identityは、AIエージェントのアウトバウンド認証を設定する際に、既存のシークレットとシークレット管理プラクティスを使用する柔軟性を提供します。資格情報の暗号化、ローテーション、アクセス方法を完全に制御しながら、AgentCore Identityが実行時にそれらを取得する処理を行います。
開始するには、Amazon Bedrock AgentCore Identityドキュメントを参照してください。シークレット管理の詳細については、『AWS Secrets Managerユーザーガイド』を参照してください。
著者について