Agent Development Kit(ADK)エージェントは、 Google Cloudの外部にある外部サービスとやり取りします。エージェント ID と Identity and Access Management(IAM)の両方で、 Google Cloudサービスを使用して認証できます。ただし、Google の ID 連携をサポートしていない外部プラットフォームに対して ID を証明することはできません。
ADK エージェントは、MCP サービス、ADK ツール、API などの外部エンティティとやり取りするために、さまざまな認証情報へのアクセスを必要とします。一般的な例は次のとおりです。
- 決済処理プラットフォームの API キー
- 以前のオンプレミス データベースのユーザー名とパスワードの組み合わせ
- 相互 TLS(mTLS)接続の秘密鍵
google.adk.integrations.secret_manager.secret_client パッケージ内に SecretManagerClient モジュールを提供します。このモジュールは、エージェントが実行時に Secret Manager からシークレットを取得するための標準インターフェースを提供します。このドキュメントでは、Secret Manager を使用して ADK の外部サービスのシークレットを管理する方法について説明します。ADK で Secret Manager を使用するメリット
シークレットを手動で管理すると、セキュリティ リスクが生じ、デベロッパーのトイルが増加する可能性があります。Secret Manager は、次の方法でこれらの問題の解決に役立ちます。
- シークレットをエージェント コードに埋め込むと、重大なセキュリティ リスクが生じます。この方法では、本番環境システムへの不正アクセスにつながる可能性があります。Secret Manager を使用すると、ソースコードから機密データが削除されます。これにより、アプリケーションのセキュリティが強化されます。
- 環境変数を使用して静的シークレットを埋め込むと、認証情報のローテーションが複雑になります。更新を適用するには、デプロイ コンテナを再起動する必要があります。Secret Manager は実行時に認証情報を動的に取得するため、システムのダウンタイムなしで更新できます。
- ツールごとにカスタム
SecretManagerServiceClientボイラープレート コードを作成すると、デベロッパーのトイルが増え、エラーのリスクが高まります。標準化された ADK 統合により、認証情報を取得するためのクリーンで再利用可能なアプローチが提供されます。
始める前に
Secret Manager を ADK と統合する前に、次の操作を行います。
- ADK を使用してエージェントを設定します。この機能には、Python 用の ADK バージョン 1.29 以降が必要です。
- エージェント ID に
Secret Manager Secret AccessorIAM ロールを付与します。このロールにより、エージェントは実行時にシークレットを取得できます。 - Secret Manager で シークレットを作成し、API キーなどのシークレット バージョンを追加します。
ADK エージェントがランタイムにシークレットを取得する方法
secret_client.SecretManagerClient モジュールは、実行時に Python エージェント コードのロジックに認証情報を取得します。エージェント オーケストレーション ロジックは、実行するツールを決定するために大規模言語モデル(LLM)にプロンプトを送信しますが、システムはシークレットを LLM に送信しません。
エージェントは、ランタイム フェーズで次の手順を実行します。
- ADK エージェントがサードパーティ ツールを呼び出す前に、エージェントは
SecretManagerClientモジュールを初期化し、get_secret()関数を呼び出します。 - ADK エージェントは、エージェント ID を使用して Secret Manager で認証を行います。
SecretManagerClientモジュールは、平文のシークレットを ADK エージェントに返します。- ADK エージェントは、このシークレットを使用してサードパーティ製ツールへの認証済み呼び出しを行います。
実行時に ADK エージェント内のシークレットを取得する
次のコードサンプルは、SecretManagerClient モジュールを使用して ADK エージェント内でシークレットを安全に取得する方法を示しています。エージェントは、機密性の高い認証情報が LLM のコンテキスト ウィンドウや会話履歴に公開されないように、シークレットを内部的に取得します。
Python
このコードを実行するには、まず Python 開発環境を設定し、Secret Manager Python SDK をインストールします。Compute Engine または GKE では、cloud-platform スコープを使用して認証する必要があります。
次のステップ
- Agent Development Kit を確認する。