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 デプロイ) にスワップする方法。