Help us understand the problem. What is going on with this article?

midPointで構築するシステムの構成例

はじめに

midPointアドベントカレンダー3日目はmidPointを利用する場合のID管理システムの構成例をご紹介します。

midPointはDBとしてH2 Databaseを内包しており、単体でも利用可能です。今回のmidPointアドベントカレンダーの中で紹介していくmidPointの機能群を試す程度であれば、フルフィルメント(プロビジョニング)を行う場合は連携するRDBやLDAP等を用意する必要はありますが、基本的に2日目の記事を参考にインストールしたもので十分です。

しかし、実際に運用していくうえでは性能や可用性を考慮する必要があります。本記事では、midPointを実際に運用する上での基本的な構成をご紹介します。また、midPointとアクセス管理プロダクトを組み合わせた統合的な認証基盤として運用するような構成もご紹介します。

単体利用

上述の通り、midPointは単体でもIDライフサイクル管理やポリシー管理、プロビジョニングといったアドベントカレンダー1日目で触れているような機能が一通り利用可能です。プロビジョニングする周辺システムも含めた簡単な図は以下のとおりです。

単体利用.png

単体では、IDを保管するIDリポジトリとして、内包しているH2 Databaseを利用しています。

実運用を想定した構成

データベース

実際にmidPointを運用していく場合、H2 Databaseでは性能的に不利であったり、可用性向上のためにDBの冗長構成を取りたいといった目的で、基本的にH2 Database以外のDBを利用することになるかと思います。外部のDBを使う場合の構成例は以下のとおりです。

データベース.png

上図では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は冗長構成を取ることもできます。

冗長構成.png

冗長構成とした場合は、タスク(プロビジョニング等のジョブ実行)も分散実行されます。また、万が一タスク実行中のノードがダウンしたような場合でも、残りのノードでそのタスクを実行するといった動作をすることで可用性が確保されています。タスク定義はDBに格納されており、このタスク実行機能は内部的にはJavaのジョブスケジューリングライブラリのQuartzが利用されています。

冗長構成-障害時.png

なお、冗長構成時のDBとしてH2 Databaseも利用することは可能ですが、非推奨とされています。

統合認証基盤

最後にmidPointにアクセス管理プロダクトを組み合わせることで統合認証基盤として活用する構成をご紹介します。ここでは、アクセス管理プロダクトはNRI OpenStandiaとして採用事例の多いKeycloakを例にしています。

統合認証基盤.png

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などのアクセス管理プロダクトと組み合わせることで統合認証基盤として活用することができます。

参考

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした