コントロールプレーン
idp-serverのコントロールプレーンの概念と役割について説明します。
参考: コントロールプレーンとアプリケーションプレーンの一般的な概念については、AWS SaaS アーキテクチャの基礎 - コントロールプレーンとアプリケーションプレーンを参照してください。
コントロールプレーンとは
コントロールプレーン(Control Plane) とは、システムの設定・管理を行う制御層です。認証・認可処理を実行するアプリケーションプレーンとは明確に責務が分離されています。
アプリケーションプレーンとの違い
| 層 | 役割 | 利用者 | 例 |
|---|---|---|---|
| Control Plane | 設定・管理 | 管理者 | テナント作成、クライアント登録、認証設定 |
| Application Plane | 認証・認可実行 | 一般ユーザー | ログイン、トークン発行、ユーザー情報取得 |
なぜ分離するのか
- セキュリティ: 管理操作と認証処理の攻撃面を分離
- スケーラビリティ: アプリケーションプレーンを認証負荷に応じて独立スケール可能
- 責務分離: 管理者権限と一般ユーザー権限を明確に分離
idp-serverにおけるコントロールプレ ーン
idp-serverでは、コントロールプレーンをAPIの契約定義層として設計しています。
設計思想
idp-server-control-plane (契約定義)
↓ 実装
idp-server-use-cases (EntryService)
idp-server-control-plane: Management APIの契約定義(インターフェー ス)のみを提供idp-server-use-cases: EntryServiceパターンで実装
この設計により:
- 契約と実装の分離: API仕様と実装を独立して管理
- 拡張性: 新しい管理機能を契約として定義し、後から実装
- テスト容易性: 契約に基づいたテスト設計
管理できること
idp-serverのコントロールプレーンでは、以下の設定・管理が可能です。
1. テナント管理
- テナントの作成・更新・削除
- テナント属性の管理
- 詳細: マルチテナント
2. 組織管理
- 組織の作成・更新・削除
- 組織階層の管理
- 組織-テナント関係の管理
- 詳細: マルチテナント
3. クライアント設定
- OAuth/OIDCクライアントの登録
- リダイレクトURI、スコープ等の設定
- クライアント認証方式の設定
4. 認可サーバー設定
- トークン有効期限の設定
- サポートするスコープの設定
- OIDC Discovery メタデータの設定
- 詳細: トークン管理
5. フェデレーション設定
- 外部IdP(Google, Azure AD等)との連携設定
- 属性マッピングの定義
- 詳細: ID管理