はじめに
midPointアドベントカレンダー3日目はmidPointを利用する場合のID管理システムの構成例をご紹介します。
midPointはDBとしてH2 Databaseを内包しており、単体でも利用可能です。今回のmidPointアドベントカレンダーの中で紹介していくmidPointの機能群を試す程度であれば、フルフィルメント(プロビジョニング)を行う場合は連携するRDBやLDAP等を用意する必要はありますが、基本的に2日目の記事を参考にインストールしたもので十分です。
しかし、実際に運用していくうえでは性能や可用性を考慮する必要があります。本記事では、midPointを実際に運用する上での基本的な構成をご紹介します。また、midPointとアクセス管理プロダクトを組み合わせた統合的な認証基盤として運用するような構成もご紹介します。
単体利用
上述の通り、midPointは単体でもIDライフサイクル管理やポリシー管理、プロビジョニングといったアドベントカレンダー1日目で触れているような機能が一通り利用可能です。プロビジョニングする周辺システムも含めた簡単な図は以下のとおりです。
単体では、IDを保管するIDリポジトリとして、内包しているH2 Databaseを利用しています。
実運用を想定した構成
データベース
実際にmidPointを運用していく場合、H2 Databaseでは性能的に不利であったり、可用性向上のためにDBの冗長構成を取りたいといった目的で、基本的にH2 Database以外のDBを利用することになるかと思います。外部のDBを使う場合の構成例は以下のとおりです。
上図ではPostgreSQLとしていますが、midPointでは様々なDBプロダクトに対応しています。公式に対応がうたわれているDBプロダクトは以下の表のとおりです。
DB | 備考 |
---|---|
H2 Database | midPointに内包しているデフォルトで利用するDB |
PostgreSQL | |
MariaDB | 公式にテストされているのはVer 10.0.28 |
MySQL | Ver 5.6.4以降に対応 |
Oracle Database 12c | |
SQL Server 2008, 2014, 2016 |
PostgreSQLやMariaDB、MySQLに対応しているため、Amazon RDSなどのマネージドサービスも利用可能です。
冗長構成
midPointは冗長構成を取ることもできます。
冗長構成とした場合は、タスク(プロビジョニング等のジョブ実行)も分散実行されます。また、万が一タスク実行中のノードがダウンしたような場合でも、残りのノードでそのタスクを実行するといった動作をすることで可用性が確保されています。タスク定義はDBに格納されており、このタスク実行機能は内部的にはJavaのジョブスケジューリングライブラリのQuartzが利用されています。
なお、冗長構成時のDBとしてH2 Databaseも利用することは可能ですが、非推奨とされています。
統合認証基盤
最後にmidPointにアクセス管理プロダクトを組み合わせることで統合認証基盤として活用する構成をご紹介します。ここでは、アクセス管理プロダクトはNRI OpenStandiaとして採用事例の多いKeycloakを例にしています。
Keycloakを組み合わせることでID管理だけでなく、SSOも実現することができます。midPoint自体も、Spring Securityによるリクエストヘッダ情報での認証に対応しているので、Keycloak GatekeeperやApache HTTP Server+mod_auth_openidcなどのリバプロ型のOIDC/SAMLのクライアントプロキシを利用することによりSSOに対応することができます。
Keycloakについては、OpenStandiaの過去のアドベントカレンダーのKeycloak by OpenStandia Advent Calendar 2017などをご参照ください。
おわりに
以上、midPointを利用したID管理システムの構成のご紹介でした。
midPointは各種DBプロダクトに対応しており、冗長構成も取れ、非機能面でもID管理システムとしての採用に足るプロダクトです。また、Keycloakなどのアクセス管理プロダクトと組み合わせることで統合認証基盤として活用することができます。