4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

midPoint by OpenStandiaAdvent Calendar 2024

Day 2

midPoint をデモ環境で試してみよう(その1)

Last updated at Posted at 2024-12-01

はじめに

midPoint by OpenStandia Advent Calendar 2024 の2日目は、開発元であるEvolveum社が提供するmidPointのデモ環境を紹介します。デモ環境は以下からアクセスできます。

本記事では、デモ環境の簡単な解説を行い、midPoint初心者の方でもイメージしやすいよう、画面キャプチャを交えながら midPointの基本機能について紹介します。

本記事の内容は、2024年12月1日時点のデモ環境に基づいています。デモ環境は今後、midPoint本体のバージョンアップや設定変更に伴い、内容が変更される可能性がありますのでご注意ください。

デモ環境の構成

IGA/IDMは他システムとの連携が基本ですので、単体の環境だけで触っても、中々イメージしづらい部分があるかもしれません。うれしいことにこのデモ環境は、ユーザー情報の源泉となるHRシステム(人事システム)や、連携先システム(RDBMSとLDAP、それらを認証・認可に使用する簡易Webアプリ)も含めて提供されています。下図は公式ドキュメントから引用したデモ環境の構成図です(2024年12月1日時点)。

image.png

出所: https://docs.evolveum.com/midpoint/demo/

図の中央の黄色の大きい箱がmidPointになります。同じく黄色のデータベース「MidPoint native repository(PostgreSQL)」の箱は、midPointの各種データが格納されるRDBMSです。ここにはmidPointの設定情報だけでなく、管理するユーザーやロール、組織といったIGA/IDMで管理すべき情報も格納されます。

図の下にある青い箱「Tomcat」はダミーのWebアプリが2つ稼働しているWebアプリケーションサーバであり、1つは「HR」システム、もう1つは「Addressbook」システムになります。この「HR」システムから源泉データとなるCSVファイルをNFS(共有ディスク)に出力し、midPointはそれを読み込んでユーザーの登録を自動的に行います。

図の右側にある「OpenLDAP」と「PostgreSQL Table」は連携先となるシステムです。midPointに登録されたユーザーは、これらのシステムにアカウントとしてプロビジョニングされます。また、「OpenLDAP」に登録された情報は、「phpLDAPadmin」というWebベースのLDAP管理ツールを使って確認ができるようになっています。

図の右上にある「Apache Web Server」で静的コンテンツを表示するだけのWebサイトですが、このサイトの表示の認証・認可に「OpenLDAP」を利用しています。つまり、midPointに登録されたユーザーでないと参照できないようにアクセスコントロールが行われています。

一方、「PostgreSQL Table」にプロビジョニングされた情報は、前述の「Addressbook」システムで使用されています。

本記事執筆時点だと、「Addressbook」システムにアクセスしてもうまくログインができず、プロビジョニングされた内容を確認することができません。この問題については、以下のmidPointのチケット管理システムに報告しています。開発者から反応がありましたので、いずれ対応はされるかと思います。
https://support.evolveum.com/projects/midpoint/work_packages/10241

デモ環境を使う上での注意点

このデモ環境は一般公開されている誰でも利用可能な共用環境ですので、いくつか注意事項があります。

  • この環境は毎日(CET:Central European Timeの深夜AM1時頃(日本時間AM9時頃))、元の状態に復元されます
  • この環境はすべてのユーザーで共有されているため、他の人の作業を邪魔しないよう、マナーを守って利用する必要があります
  • 自身のユーザー、アカウント、ロールなどを作成するようにし、既存のユーザー、ロール、リソースを大幅に変更しないようにと、注意事項に記載があります
  • この環境はヨーロッパ地域で稼働しており、日本からのアクセスでは時間がかかる場合があります

デモ環境へのアクセスとログイン

  1. https://demo.evolveum.com にアクセスします
  2. 表示されるログインページに「デモ環境のログイン情報」も記載されていますが、以下の情報を使ってシステム管理者としてログインできます
    • ユーザー名administrator
    • パスワードIGA4ever

実際に操作してみよう

midPointにはたくさんの画面がありますが、本記事ではまずは主要な箇所であるユーザー、ロール、組織、リソース、タスクに絞って解説します

トップページ(ホーム画面)

デモ環境にadministratorでログインすると、トップページは以下のようになります。

image.png

「ホーム」というページが初期表示画面で、ここはログインユーザ向けの個人ダッシュボード画面になっています。自身のアクセス権、自身の連携先システムのアカウント一覧、自身のアクセス要求の一覧、自身が承認する必要のある作業アイテムがデフォルトで表示されるようになっています。

画面左側にはサイドメニューがたくさん並んでいますが、これはadministratorでログインしているためです。midPoint:superuserというロールをこのユーザーは持っており、すべてのメニューが表示され操作もできる権限があります。

ユーザーの管理

IGA/IDMの管理対象の基本である、ユーザーについて画面から確認してみましょう。

ユーザーの一覧

画面左メニューから、「ユーザー > すべてのユーザー」をクリックします。

image.png

そうすると、ユーザー一覧のページに遷移します。

image.png

ユーザーの詳細

次にユーザー1名の詳細情報を確認してみます。名前部分がリンクになっており、クリックすると詳細画面に遷移します。例として、「leonardo」をクリックします。

image.png

「leonardo」ユーザーの詳細画面に遷移します。左側にメニューが縦に並んでいるので、それを切り替えて色々情報を参照・更新することができます。初期表示は「基本情報」メニューであり、ここではユーザーの基本属性情報を参照・更新できます。

image.png

ユーザーのプロジェクション一覧

「プロジェクション」メニューをクリックして切り替えてみましょう。

image.png

このユーザーのプロジェクションの一覧が表示されます。

プロジェクションはmidPoint特有の用語で、初めての方には聞き慣れないかもしれません。少し補足すると、プロジェクション(投影)は、midPoint内で管理する「ユーザー」などのオブジェクトと、外部リソース(連携先システム)の「アカウント」などを結びつける概念を指します。

プロジェクションは、midPoint内部のデータ(ユーザーや組織、ロールなど)を中心に、これと接続された外部システムのアカウントやグループ情報などのデータを表現しています。この中には、源泉システムのデータと、情報を反映させる連携先システムのデータの両方が含まれます。

プロジェクション(投影)という言葉は、midPoint内部のデータが、外部システムに映し出される(反映される)と同時に、外部システムのアカウント情報がmidPointの一部として認識され、表示されるという状態を表現しています。以下はThe Bookからの引用ですが、光がスクリーンに映像を投影するイメージに例えて、このような用語を使っています。

The user in midPoint is known as focus in midPoint terminology. The accounts are known as projections. You can imagine a light projector that sends many light beams from its focal point to create a projection on the screen. This is the metaphor that we have chosen when developing midPoint. For the lack of better words, this terminology remains in use even today. We will get back to the concept of focus and projections many times in this book. For now, you just need to remember that projection means an account.
(出所)https://docs.evolveum.com/book/practical-identity-management-with-midpoint.html#_hub_and_spoke

このプロジェクション一覧は、該当ユーザーの外部システムにおけるデータを表しています。今見ているのはユーザーですから、このユーザーに関する外部システムのアカウント一覧になります。注意点として、ここには連携先のデータだけでなく、源泉システムのデータも表示されます。例えば、キャプチャ画像でいうとリソース列が「HR Feed」の行は、源泉システムである「HR」システムが出力したCSVファイルの1レコードに対応しています。「Addressbok」、「LDAP Server (OpenLDAP)」の行は、プロビジョニング先である連携先システムのアカウントになります。

image.png

ユーザーのプロジェクション詳細

各プロジェクションの詳細を見ることもできます。リンク箇所をクリックします。例として、「HR Feed」の行の「1」の箇所をクリックします。

image.png

そうするとプロジェクションの詳細画面が開きます。この例だと、CSVファイルの該当の1レコードの情報が表示されています。実はこのとき、実際に繋がっている外部システムへの参照処理が行われ、現在の値が表示されています。というのもmidPointでは、プロジェクションの情報はデータベースに保存されているものの、デフォルトではキー情報など特定の属性しか保存していないためです(追加設定を行うことで、他の属性もキャッシュデータとしてmidPoint内に保持させることもできます)。

image.png

もう1つ、プロジェクションの詳細を見てみましょう。「LDAP Server (OpenLDAP)」の行の「uid=leonardo,ou=people,dc=example,dc=com」の箇所をクリックします。

image.png

そうすると今度は、連携先であるLDAP内のユーザー情報が表示されます。

image.png

こちらは、「アソシエーション」というセクションに「Group Membership」が表示されていることが確認できます。これは、このユーザーが所属しているLDAPグループを表しています。この中の「cn=P0001,ou=Projects,dc=example,dc=com」は、midPoint内で管理している組織に対応したLDAPグループとなっており、midPointからLDAPグループの所属を制御しています。このような外部システムのメンバーシップ関係を連携できることも、midPointの特徴の1つです。

ユーザーのアサイン一覧

次に、「アサイン > すべて」メニューをクリックし、アサイン一覧を表示してみましょう。

image.png

このユーザーのアサイン一覧が表示されます。「すべて」を選択したため、組織やロールなど種類に関係なくすべてのアサインが表示されます。

midPointでは、ユーザー以外のオブジェクトとしてロールや組織、サービスというものがあります。これらをユーザーに関連付ける=アサインすることで、該当ユーザーに対して様々な処理を適用することが可能です。

たとえば、あるロールをユーザーにアサインすることで、外部システムにアカウントとしてプロビジョニングさせ、逆にロールのアサインを解除すると、プロビジョニング済みのアカウントを削除する(デプロビジョニング)といった制御が可能です。これを、ロールベースプロビジョニングと一般的には呼びます。

image.png

ロールの管理

ユーザーは一旦これくらいにして、次にロールについて画面から確認してみましょう。

ロールの一覧

画面左メニューから、「ロール > すべてのロール」をクリックします。

image.png

そうすると、ロール一覧のページに遷移します。

image.png

ロールの詳細

次にロールの詳細情報を確認してみます。名前部分がリンクになっており、クリックすると詳細画面に遷移します。例として、「full time employee」をクリックします。

image.png

「full time employee」ロールの詳細画面に遷移します。左側にメニューが縦に並んでいるので、それを切り替えて色々情報を参照・更新することができます。初期表示は「基本情報」メニューであり、ここではロールの基本属性情報を参照・更新できます。

image.png

ロールのメンバー

「メンバー」メニューをクリックすると、そのロールをアサインしているメンバー一覧を参照することができます。この画面から、まとめて複数のユーザーなどにロールをアサイン、または解除することもできます(逆に、アサインされた側、例えばユーザーの詳細画面からでは、そのユーザーに限定してまとめてロールなどのアサインを追加、または解除が可能なUIになっています)。

image.png

組織の管理

続いて、組織について画面から確認してみましょう。他のIDM/IGAプロダクトでは、組織を個別に管理することが意外とできない印象です。midPointでは、ロールとは区別して組織を管理することができます。また、組織の親子関係を表現することもできます。

組織の一覧(ツリー表示)

画面左メニューから、「組織 > 組織ツリー」をクリックします。

image.png

組織はロールと異なり、親子関係を持つことができるオブジェクトになっています。以下のようなツリー表示が可能です。

image.png

また、「Leonardo's Workshop」と「Projects」の2つのタブが並んでいます。タブをクリックすることで、表示するツリーを切り替えることができます。このように、複数のツリー構造をmidPoint内に持つことが可能です。これにより、例えば会社組織と組織横断的なプロジェクトやタスクフォースといった異なるレベルの組織を分けてmidPoint内で管理することもできます。

image.png

組織の一覧

組織をロールなどと同じように、リスト表示するビューもあります。画面左メニューから、「組織 > すべての組織」をクリックします。

image.png

こちらの画面では、フラットに組織の一覧を参照することができます。

image.png

組織の詳細

同じように組織の詳細情報を確認してみます。名前部分がリンクになっており、クリックすると詳細画面に遷移します。例として、「F0100」をクリックします。

image.png

「F0100(Department of Arts)」組織の詳細画面に遷移します。左側にメニューが縦に並んでいるので、それを切り替えて色々情報を参照・更新することができます。初期表示は「基本情報」メニューであり、ここでは組織の基本属性情報を参照・更新できます。

image.png

組織のプロジェクション一覧

「プロジェクション」メニューをクリックして切り替えてみましょう。

image.png

この組織のプロジェクションの一覧が表示されます。

image.png

先ほど、ユーザーの詳細画面でもプロジェクションの一覧を確認しました。その際は、そのユーザーの外部システムのおけるアカウント一覧を表現していると説明しました。一方、組織の場合は通常、アカウントではなく外部システムにおけるエンタイトルメントを表すデータとなる場合が多いです。デモ環境の場合は、この組織はLDAPに対して「OU(Organizational Unit)」をプロビジョニングしています。

同様に、組織一覧から「P0001(Projects)」組織の詳細画面を開いてプロジェクションの一覧を参照すると、こちらは「OU」ではなくて「LDAPグループ」をプロビジョニングしていることが分かります。デモ環境では、「Leonardo's Workshop」をルートとするツリーと「Projects」をルートとするツリーがあります。前者の組織ツリーは「OU」として、後者の組織ツリーは「LDAPグループ」としてプロビジョニングするように設定が行われています。

image.png

組織のプロジェクション詳細

同様にプロジェクションのリンク箇所をクリックすることで、プロジェクションの詳細画面が開きます。この例だとLDAPのOUの内容を参照することができます。

image.png

組織のアサイン一覧

「F0100(Department of Arts)」組織の「アサイン > すべて」メニューをクリックし、アサイン一覧を表示してみましょう。

image.png

組織は親子関係を持てると先ほど述べましたが、それは組織に親組織をアサインすることで実現しています。つまり、ここで表示されている「Leonardo's Workshop」組織は親組織ということになります。

一方、この組織には「LDAP Orgs MetaRole」ロールもアサインされています。midPointでは、ロールなどを対象にアサインすることで何らかの処理を施す、という制御を全体的に行う仕組みになっています。この「LDAP Orgs MetaRole」には、アサイン対象に対して、LDAPにOUをプロビジョニングするための設定が含まれています。つまり「F0100(Department of Arts)」組織は、このロールを持つことでLDAPに対してOUをプロビジョニングするよう制御されています。

組織のメンバー

ロールと同様に、「メンバー」メニューをクリックすると、その組織をアサインしているメンバー一覧を参照することができます。

image.png

リソースの管理

リソースはmidPoint用語で、コネクターを通じて接続する外部システムを表します。源泉データを取得する先、プロビジョニング先の外部システムどちらもリソースとなります。

コネクターは、実際に外部システムのプロトコルに合わせてCRUD操作を行う独立したコンポーネントです。midPointで利用可能なコネクター一覧は以下で紹介されています。必要に応じてコネクターを入手し、インストールして利用します。

https://docs.evolveum.com/connectors/connectors/

また、コネクターを自前で開発することもできます。以下でコネクターの開発ガイドが提供されています。

https://docs.evolveum.com/connectors/connid/1.x/connector-development-guide/

リソースの一覧

画面左メニューから、「リソース > すべてのリソース」をクリックします。

image.png

そうすると、リソース一覧のページに遷移します。デモ環境の構成で説明したとおり、外部システムはHR(CSV)、Addressbook(RDBMS)、LDAPの3つですので、ここには3つのリソースが登録されています。

image.png

リソースの詳細

例として源泉データを管理している「HR」システムを表す「HR Feed」をクリックし、リソースの詳細画面に遷移します。

image.png

左側にメニューが縦に並んでいるので、それを切り替えて色々情報を参照・更新することができます。

image.png

コネクター設定

「コネクター設定」メニューをクリックして切り替えてみましょう。ここでは、コネクター固有の設定を行うことができます。「HR Feed」にはCSVコネクターを使用して接続していますので、どのパスにあるCSVファイルを参照するか、CSVファイルの文字コードは何とするかなどを設定しています。

image.png

アカウント

「アカウント」メニューをクリックすると、このリソースに関するアカウント一覧が表示されます。つまり、この例だとCSVファイル内に記載されているアカウント一覧が表示されます。

「オーナー」列にはこのアカウントと関連付けられているmidPoint内のオブジェクトが表示されます。先ほどユーザーのプロジェクション一覧を確認しましたが、あそこに表示されているということは、このアカウントに対してオーナーが設定されているということになります。

image.png

ここで表示しているアカウント一覧は、厳密にはmidPoint内で管理されているShadowオブジェクトの一覧を表示しています。ShadowオブジェクトはmidPoint用語であり、プロジェクションにより表現された外部システムのアカウントやエンタイトルメントなどのオブジェクトを表すものです。プロジェクションの実体は、midPoint内ではShadowオブジェクトというもので保存されています。

アカウントの「名前」箇所がリンクになっていますが、ここをクリックするとShadowオブジェクトの詳細を参照できます。この時、プロジェクションの詳細と同じように、外部システムのアカウント詳細を参照することができます。つまり、コネクターを通じて外部システムへの参照処理が行われています。

image.png

「エンタイトルメント」「ジェネリックス」メニューでも同様に、種別が異なるだけで、このリソースに関するプロジェクション(Shadowオブジェクト)の一覧を参照することができますが、CSVコネクターでは1種類(アカウント)しか扱うことができないため、表示されません。

一方、「LDAP Server (OpenLDAP)」リソースの詳細を開くと、LDAPコネクターでは複数の種別に対応しているため、参照することができます。「エンタイトルメント」には「LDAPグループ」が、「ジェネリックス」には「OU」を表すShadowオブジェクトの一覧が表示されます。

image.png

image.png

リソース・オブジェクト

「リソース・オブジェクト」メニューをクリックすると、このリソース(外部システム)内のデータであるリソースオブジェクトの一覧画面が開きます。

image.png

「アカウント」、「エンタイトルメント」、「ジェネリックス」メニューと違う点は、この画面を開いた際には、外部システム対して一覧取得の操作が行われ、結果が表示される点です。こちらのビューで表示されるオブジェクトは、外部システムのデータそのものを表しています。例えば、削除すると外部システムからも削除されることになりますので、注意してください。

なお、リソースオブジェクトの実体としては、ShadowオブジェクトとしてmidPoint内に保存されます。「名前」箇所がリンクになっていますが、ここをクリックすると、「アカウント」、「エンタイトルメント」、「ジェネリックス」メニューにおける詳細画面と同じように、そのShadowオブジェクトの詳細を参照できます。

タスクの管理

midPointには定期・不定期に特定の処理を実行するタスク実行基盤が備わっています。例えば、源泉システムからのデータの取り込み処理を毎晩AM1時に定期実行する、といった制御が可能です。また、midPointを複数ノード構成でデプロイすることができるのですが、その際にタスクの実行処理を複数ノードで分散処理させ効率を上げることも可能になっています。

タスクの一覧

画面左メニューから、「サーバー・タスク > すべてのタスク」をクリックします。

image.png

そうすると、全種類のタスク一覧のページに遷移します。その他のメニューは、タスク種別ごとの一覧画面になります。

image.png

「再び開始する予定」列をみると、定期実行が予定されているものが分かります。この予定日時になると該当タスクが自動実行されます。実行開始日時を待たずに、個別に手動で強制実行させることも可能です。

タスクの詳細

名前のリンク部分をクリックするとそのタスクの詳細画面に遷移します。例として、「HR import」をクリックします。

image.png

「HR import」タスクの詳細画面に遷移しますこの画面で、タスクの各種設定や統計情報を参照することができます。

image.png

「HR import」タスクは「インポートタスク」という種類のタスクになっています。これは、特定のリソースからデータをまとめてインポートするときに利用するタスク種類です。「アクティビティ > Work」メニューを開くと、「HR import」タスクは「HR Feed」リソースと関連付けられていることが分かります。つまり、このタスクを起動すると、「HR Feed」リソースであるCSVファイルからアカウントをmidPointにまとめてインポートする動きになります。

image.png

おわりに

midPointのデモ環境を利用することで、特に何も準備することなく、midPointの基本的な操作をお手軽に体験できます。今回はユーザー、ロール、組織、リソース、タスクに絞って簡単にですが解説しました。明日の3日目の記事では、このデモ環境を利用して実際にユーザーの追加などを試したいと思います。

何か質問やフィードバックがあれば、コメントで教えていただければ幸いです。

4
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?