Microsoft Entra ID認証 SDK (サイドカー) を使用した認証

Microsoft Entra ID認証 SDK (サイドカー) は、AI エージェントの認証とトークン操作を処理します。 これは、クライアント資格情報の交換、代理フロー、トークン ライフサイクル管理を処理する、エージェントの隣の 2 番目のコンテナーとして実行されます。 この記事では、Microsoft Entra ID認証 SDK (サイドカー) の設計パターン、動作方法、および関係する ID オブジェクトについて説明します。

Microsoft Entra ID認証 SDK (サイドカー) を使用する理由

AI エージェントはダウンストリーム API を呼び出すために認証情報を必要としますが、エージェント認証に対する一般的なアプローチは十分ではありません。

  • エージェント コードでハードコーディングされたシークレット: すべてのエージェント イメージには、アプリの client_secretのコピーが保持されます。 脆弱性の悪用、ログの漏洩、または忘れたファイル .env が Git にコミットされると、完全なテナントが露呈します。
  • すべての委任されたユーザー トークン: エージェントは、人間が存在する場合にのみ動作できます。 すべての呼び出しが同じサービス プリンシパルとして扱われるため、個別の監査ができなくなります。

Microsoft Entra エージェント IDは、各エージェントに独自の ID を付与します。 サイドカー パターンでは、すべての資格情報処理をエージェント コードの外部に保持することで、その ID を簡単に使用できます。

Microsoft Entra ID認証 SDK (サイドカー) のしくみ

Microsoft Entra ID Auth SDK (サイドカー) は、ポッドローカル ネットワーク上の HTTP エンドポイントを公開するコンテナーとして実行されます。 次の責任を担います。

  • クライアント資格情報を login.microsoftonline.comと交換します。
  • 自律フロー内のエージェント ID のクライアント資格情報またはフェデレーション ID 資格情報 (FIC) を使用してトークンを取得します。
  • ユーザー コンテキスト呼び出しの代理 (OBO) フローを処理します。
  • トークンをキャッシュし、更新と有効期限を管理します。
  • 資格情報ソースを抽象化します。開発には ClientSecret を使用し、同じ API を使用したAzureデプロイには SignedAssertionFromManagedIdentity を使用します。

次の表は、エージェントとサイドカーの間の認証アクションのフローをまとめたものです。

エージェント (あなたのコード) Microsoft Entra ID 認証 SDK (サイドカー)
API を呼び出すタイミングを決定する 適切なトークンを取得してキャッシュする
HTTP 要求をビルドする クライアント資格情報と OBO 交換を実行する
OBO のユーザートークンを通過させる ユーザー アサーションの検証と転送
ビジネス ロジックの処理 login.microsoftonline.comと通信を行う

セキュリティ境界は明示的です。サイドカーにはホスト ポートがありません。 同じネットワーク内のサービス (エージェント コンテナーなど) のみがトークンを要求できます。

サイドカー パターンの ID オブジェクト

次の表では、サイドカー パターンのMicrosoft Entra オブジェクトについて説明します。

オブジェクト 役割 Location
ブループリント アプリケーション エージェント ID を作成して発行するテンプレート。 クライアント資格情報 (シークレットまたはフェデレーション) を保持します。 あなたの Microsoft Entra テナント
エージェント ID 個々の AI エージェント。 一意のアプリ ID、アクセス許可の付与、監査証跡があります。 あなたの Microsoft Entra テナント
クライアント シングルページ アプリケーション (SPA) (OBO のみ) ユーザーをサインインさせ、ユーザーのトークンを彼らに代わってエージェントトークンと交換するWeb UI。 あなたの Microsoft Entra テナント
サイドカー コンテナー クライアント資格情報と OBO フローを実行します。 ブループリント資格を保持します。 エージェントの横
エージェント コンテナー アプリケーション コード。 サイドカーから承認ヘッダーを要求します。 ポッド、Compose サービス、または App Service

ブループリントとエージェント ID の詳細については、「 エージェント ID ブループリントとエージェント ID参照してください。

資格情報ソースの抽象化

サイドカーは、エージェント コードから資格情報ソースを抽象化します。 開発中は、利便性のために ClientSecret を使用できます。 運用環境のAzure展開では、エージェント コードを変更することなく、マネージド ID によってサポートされるフェデレーション ID 資格情報である SignedAssertionFromManagedIdentity に切り替えることができます。

サイドカーの構成によって、使用する資格情報ソースが決まります。 認証メカニズムに関係なく、エージェントは引き続き同じ /AuthorizationHeader エンドポイントを呼び出します。

サイドカー サンプル シナリオ

Microsoft Entra エージェント IDサイドカーのサンプルは、次の概念を示しています。

  • ブループリントとエージェント ID の違い、およびエージェントが独自の ID を必要とする理由。
  • サイドカーが /AuthorizationHeader (トークンの取得) エンドポイントと /DownstreamApi (トークン + プロキシ呼び出し) エンドポイントを公開する方法。
  • サイドカーがサインインしているユーザーのトークンを転送し、Microsoft Entra ID Auth SDK (サイドカー) が OBO 経由でエージェントの代理ユーザー トークンを作成する方法。
  • ダウンストリーム API が、署名、発行者、 xms_par_app_azp、対象ユーザーを含むエージェント トークンを検証する方法。
  • エージェント コードを変更せずに、ClientSecret (開発) から SignedAssertionFromManagedIdentity (Azure デプロイ) にスワップする方法。