本記事はAIを利用して作成した技術解説・実装例です。掲載するコードや手順は一次情報を基に構成していますが、筆者による実機での動作確認は行っていません。環境やバージョンによって動作が異なる場合があります。
How to Carry User Identity Across Federated Kubernetes and AI Platformsを公式情報から確認する
現代のAIプラットフォームや分散型データ基盤では、単一のログイン画面の背後にあるひとつのアプリケーションだけでなく、複数のクラスターやクラウド環境にまたがるワークフローを統合することが求められています。ユーザーは中央ポータルからデータを参照し、ノートブックを起動し、さらに別のクラスター上のサービスを呼び出すAIアシスタントを利用します。このとき、コントロールプレーンとデータプレーンの境界をまたいでユーザーのアイデンティティ(身元)を安全かつ確実に持ち運ぶ方法が必要になります。 、NVIDIA Technical Blogに掲載された「How to Carry User Identity Across Federated Kubernetes and AI Platforms」の一次情報を基に、分散型KubernetesおよびAIプラットフォームにおけるユーザーアイデンティティ伝播の課題と、それを解決する中央集約型アイデンティティゲートウェイパターンについて整理します。
一次情報から確認できる背景と課題
モダンなAIワークフローでは、データやコンピュートリソースが生成・保存・ガバナンスされる場所に近接して配置されます。ワークフローが複数のリージョンクラスター、異なるクラウド、オンプレミス、あるいは専用の実行プレーンに分散していても、ユーザーはノートブック、カタログ、クエリツール、ダッシュボード、AIアシスタントにわたって一貫したプラットフォーム体験を期待します。
従来のシングルサインオン(SSO)は入り口での認証には有効ですが、データプレーンや分散環境にコンテキストをそのまま持ち込むには不十分な点が生じます。SSOトークンをすべてのアプリケーションへ生で転送すると、認証情報の露出範囲が広がり、失効処理が複雑化し、各クラスターが個別にアイデンティティプロバイダー(IdP)連携を実装する負担を強いられます。
以下に、分散セッション所有モデルで発生する構造的な問題を示します。
sequenceDiagram
participant User as ユーザー
participant GW1 as リージョンGateway A
participant GW2 as リージョンGateway B
participant IdP as Identity Provider
User->>GW1: ツールAへアクセス
GW1->>IdP: 独立したOIDCリダイレクト・ログイン
IdP-->>GW1: トークン発行・セッションA作成
User->>GW2: ツールBへアクセス
GW2->>IdP: 再度独立したOIDCリダイレクト・ログイン
IdP-->>GW2: 別途トークン発行・セッションB作成
分散セッション所有モデルの課題
セッションの分断: トークンを発行したゲートウェイの外ではその状態が認識されず、プラットフォーム全体ではなくサービスごとに再認証が発生する。
ログアウトの局所性: 1つのツールからサインアウトしても、他の場所でアクティブなセッションが残り、セキュリティリスクや混乱を招く。
トークン更新の非同期: 各ゲートウェイが上流のIdPと個別に更新処理を行い、負荷増大と状態の不一致を引き起こす。
一貫性のないアイデンティティ文脈: 下流サービスごとにトークンの解釈や認証ロジックが重複・分散する。
拡張性の欠如: 新しいツールを追加するたびに同様の認証基盤の統合をやり直す必要がある。
2つのアイデンティティパターンの比較
一次情報では、 federated プラットフォームにおけるアイデンティティ構造として「分散セッション所有(Distributed session ownership)」と「中央集約型セッション所有(Centralized session ownership)」の2つを比較しています。
| 設計上の選択肢 | 分散セッション所有 | 中央集約型セッション所有 |
|---|---|---|
| ログイン体験 | ツールやゲートウェイごとに再ログインが必要になる場合がある | プラットフォームセッションごとに1回のログイン |
| ログアウト動作 | サービスやクラスターごとに局所的 | 単一のセッションレコードを通じてプラットフォーム全体に波及 |
| トークン更新 | 各ゲートウェイが独立して反復処理する | 中央ゲートウェイが協調して管理する |
| 上流IdPへの負荷 | ユーザー、ツール、クラスターの数に応じてスケールする | 主にアクティブユーザー数に応じてスケールする |
| 下流アイデンティティ | 重複しやすく一貫性に欠ける場合がある | 信頼されたヘッダーやクレームを通じて標準化される |
| 運用モデル | 初期はシンプルだが大規模化で複雑化する | 中央サービスが必要になるが、新しいツールの追加はシンプルになる |
中央集約型パターンはすべてのアプリケーションに必須ではありませんが、ユーザーが1つのワークフロー内で複数のツールやクラスター、リージョンを移動し、それらが単一のプラットフォームとして動作することを期待する場合に高い価値を発揮します。
中央集約型アイデンティティゲートウェイパターンの構成要素
一次情報で解説されている中央集約型アイデンティティゲートウェイパターンは、セッション所有権とリクエスト強制(エンフォースメント)を分離するアーキテクチャです。
このパターンは、以下の主要な構成要素と役割で成り立っています。
1. 単一のセッション所有者(Central Identity Gateway)
プラットフォーム全体のセッションを作成・管理します。OIDC(OpenID Connect)の認可コードフローを処理し、取得したセッションを有効期限(TTL)付きでRedisなどの共有ストアに格納します。
2. 最小限の検証エンドポイント(/gateway/userinfo)
各リージョンのデータプレーンゲートウェイが、ユーザーの身元を問い合わせるための軽量なサイドコール用APIです。生トークンの転送を避け、セッションの有効性を一元的に確認します。
3. ステートレスなリージョンゲートウェイ(Stateless Regional Gateways)
各クラスターに配置され、セッション検証自体は中央ゲートウェイに委譲しつつ、ローカルなポリシーの適用や、検証済みの信頼できるアイデンティティヘッダーのインジェクションを行います。
4. 共有セッションストアとブラウザCookie
プラットフォームドメインにスコープされたセキュアなHTTP専用(HttpOnly)Cookieを用いてセッションIDを保持し、バックエンドのRedis等でセッション状態を共有します。
5. プラットフォーム全体のシングルログアウト
中央アイデンティティゲートウェイ側でセッションレコードを削除することで、次回のリクエスト時にすべてのリージョンゲートウェイが即座に無効なセッションを検知し、アクセス拒否や再ログイン誘導を行います。
リクエストフローの仕組み
中央集約型ゲートウェイにおける基本的なリクエスト処理フローは、ログイン、検証、トークン更新・ログアウトの3つに分類されます。
ログインフロー: 有効なプラットフォームセッションを持たないユーザーがリージョンゲートウェイにアクセスすると、中央アイデンティティゲートウェイへリダイレクトされます。中央ゲートウェイがIdPとのOIDCフローを完結させ、Redisにセッションを保存した上でHTTP-onlyのセッションCookieを発行します。
検証フロー(Per-request validation): 以降のリクエストでは、リージョンゲートウェイがセッションCookieを
/gateway/userinfoへ送信し、中央ゲートウェイがセッションをルックアップしてユーザーID、メール、グループ、ロールなどのクレームを返却します。リージョンゲートウェイはこれを基に標準化されたアイデンティティヘッダーを下流サービスに付与します。トークン更新とログアウト: アクセストークンの期限が近づくと、中央ゲートウェイが保持するリフレッシュトークンを用いて更新を行い、共有ストア上の状態を同期します。ログアウト時は中央のセッションレコードが削除され、全ゲートウェイで即時無効化されます。
セキュリティと信頼性のガードレール
アーキテクチャを中央集約する場合、アイデンティティゲートウェイ自体が極めて重要なコンポーネントとなるため、一次情報では以下のセキュリティおよび信頼性のガードレールが示されています。
サービス間認証: リージョンゲートウェイと中央アイデンティティゲートウェイの間で、相互TLS(mTLS)、ワークフロースティティ、または署名付き内部トークンを利用し、不正な呼び出し元からの検証エンドポイントへのアクセスを防止する。
ヘッダーのサニタイジング: クライアントから送信されたインバウンドのアイデンティティヘッダーを必ず破棄し、ゲートウェイ層で信頼されたヘッダーのみを新たに注入する。
セッションストアの保護: プラットフォームに必要な最小限の情報のみをセッションレコードに格納し、アクセストークンの短寿命化、明示的なセッションTTL、転送時の暗号化、適切なアクセス制御を適用する。
障害時の挙動の定義: アイデンティティゲートウェイやセッションストアが利用できない場合の振る舞いを明確にする(全リクエストを拒否するフェイルクローズ設計、またはレジリエンスのための短命なキャッシュ検証の導入など)。
監査ログの記録: 検証、リフレッシュ、ログアウトの各イベントを一元的に記録し、誰がどのサービスにアクセスしたかの信頼性の高い監査証跡を生成する。
プラットフォーム開発への適用とメリット
NVIDIAの内部開発プラットフォーム(AWSやOCIにまたがるKubernetesクラスター)における実装では、このアプローチによって繰り返されるログインイベントが55%削減されたと記載されています。
このパターンを適用することで、以下のような効果や利点が得られます。
上流IdPへの負荷軽減: ユーザー・ツール・クラスターの組み合わせ数ではなく、アクティブなユーザー数に比例したスケーラビリティを実現する。
AIおよびデータワークフローの統合: 統合されたプラットフォームシェルや、委任されたユーザーアイデンティティで動作するAIアシスタントの基盤を構築できる。AIアシスタントがバックエンドツールを呼び出す際に、ユーザーのRBAC(ロールベースアクセス制御)スコープをそのまま継承させることが可能になる。
段階的な移行モデル: 一度にすべてのシステムを変更するのではなく、1つずつゲートウェイやサービスを移行していくことが可能である。

コメント