はじめに
midPointアドベントカレンダー9日目は昨日の記事で紹介された「アクセス要求」「ワークフロー」について、実際のmidPointでの設定方法をご紹介します。
紹介する設定は、ユーザが必要なロールを自ら要求しアサインできるようにする設定や、ロールに対して承認者を設定しておき、ロールの要求後、その承認者による承認操作をもって要求したユーザにロールをアサインできるようにするといった内容になります。
また、ロールを管理する機能についても紹介します。
「アクセス要求」や「ワークフロー」の詳細については昨日の記事をご参照ください。
また、昨日の記事中でも触れられていますが、midPointではユーザの要求ベースのロールアサインの他に、予め定めておいたポリシー(アサインルール)に基づいて自動でロールを割当てる機能もあります。この機能については本アドベントカレンダーの6日目、7日目のmidPointにおける「エンタイトルメント管理」「ポリシーとロール管理」の記事をご参照ください。
今回、midPointはmidPointの公式Docker Hubリポジトリで公開されているバージョン4.0.1の evolveum/midpoint:4.0.1 を使用しています。
アクセス要求とワークフローの基本設定
アクセス要求設定
昨日の記事でも触れられていますが、midPointではアサイン要求はロールの要求
という名前の機能で実現されています。
まずは単純に、ユーザがロールを要求し、その要求をもってそのユーザにロールをアサインできるようにする設定を説明します。
設定
はじめに、ロール要求を行うための、midPointへのアクセス権限をもつユーザを作成します。
End user
ロールは、midPointにデフォルトで用意されているmidPointの一般ユーザロールです。このロールをアサインすることで、midPointへのログインが可能となります。
次に、ユーザに要求を許可するロールを作成します。
要求可能
をtrue
とすることで、ユーザからの要求ができるロールとなります。
要求可能なロールの準備はこれで完了です。
動作確認
先程作成したtest
ユーザで、実際にロール要求をして動作確認をしてみます。現時点ではtest
ユーザにアサインされているロールはEnd user
のみです。
ロール要求はロールの要求
から行います。
先程作成したProjectA user
ロールが表示されていますので、選択しロールを要求します。ロール要求はECサイトでの買い物を模しており、選択したロールはショッピングカート
に入り、ショッピングカート
から要求を確定するというUIになっています。なお、ショッピングカートへ行く
ボタンだけではなくショッピングカートアイコンからでも新規アサインの一覧
(ショッピングカートの中身)に遷移できます。
ロール要求が完了すると、割当はすぐに使用できます。
となっているように、そのままtest
ユーザにProjectA user
ロールがアサインされます。これは、現時点では承認が必要な設定をしていないためです。
ユーザプロファイルのアサイン画面でアサインされていることが確認できます。
ワークフローの設定
承認が不要なロールであれば上記のアクセス要求設定の手順で設定できますが、承認者による承認を必要とするようにしたい場合も多いかと思います。ここでは、そのような承認が必要な要求可能ロールを作成する手順を説明します。
設定
設定方法を説明していきます。まず、承認者となるユーザを作成しておきます。
承認者には、End user
ロールに加え、Approver
(承認者)ロールをアサインしておきます。Approver
ロールをアサインすることで下記のキャプチャのように、End user
ロールだけの場合と違い、左部にケース
というメニューが表示されるようになります。
承認者ユーザの用意ができたので、ロールを作成します。ロールは前述のアクセス要求設定と同じように作成します。
次に、作成したロールの承認者を設定します。承認者に設定したいユーザに承認者
としてロールをアサインすることで、ロールの承認者として設定することができます。
これで設定は完了です。
動作確認
アクセス要求設定の動作確認と同じように動作を確認していきます。アクセス要求設定で作成したtest
ユーザで先ほど作成したProjectB user
ロールを要求してみます。
今度はアクセス要求設定の際とは違い、要求しただけではロールがアサインされず、進行中といったメッセージが表示されました。
承認者に設定したtestapprover
ユーザでログインしてみます。
midPointでは承認タスクは作業アイテム
と言う名前で扱われます。トップページにて、承認依頼として作業アイテム
が来ていることやメニューのケース
にバッチがついていることが確認できます。作業アイテム
の名前を選択すると、詳細が確認できます。なお、ケース
からでも作業アイテム
画面に行くことができます。
先ほどtest
ユーザで要求したロールの承認依頼であることが確認できますので、承認します。
再度test
ユーザでログインすると、ProjectB user
がアサインされていることが確認できます。
アクセス要求対象のロールの管理
ここまでで、アクセス要求(ロールの要求)とワークフローの基本的な設定をご紹介しました。
しかし、ここまでの設定内容だけでは、ロールが横並びとなってしまい、ロール数が増えると管理が難しくなります。また、ロール要求をするユーザも要求したいロールをロールの要求
画面から探すのが大変です。
ここでは、要求可能なロールを管理するための機能を少し説明します。
ロールカタログ設定
1つ目はロールカタログです。ロールカタログは、ロールを階層管理する機能です。
midPointでは、組織構造
として、組織を階層管理する機能があります。ロールの管理においては、その組織にロールを割り当てることでロールの階層管理が実現できます。これをロールカタログと呼んでいます。
設定
ロールカタログの設定方法を見ていきます。まず、ロールカタログとする組織を作成します。
子組織としてアクセス要求設定とワークフロー設定で作成したロール用の組織を作ります。
同様の手順でProjectB user
用の組織も作成しました。
作成したProjectA
にProjectA user
ロールを割り当てます。
メンバー
内のタイプ
をロール
またはすべて
にすることで、割り当てたロールが確認できます。
同様にProjectB
にProjectB user
ロールを割り当てました。
次に作成した組織をロールカタログに指定する設定です。ロール管理
(システム > ロール管理)のロール・カタログへの参照
を先ほど作成したロールカタログ
組織にします。
これで、ロールカタログの設定は完了です。
動作確認
ロールカタログの確認をします。
ただし、midPointのデフォルトのEnd user
ロールでは組織(OrgTypeオブジェクト)の参照権限がないため、階層化されたロールカタログが参照できません。
そのため、End user
ロールに権限を付けておきます。End user
ロールの編集画面のRAWデータの編集
を選択してください。XMLのrole
タグ内に下記のOrgType参照権限設定を追加します。
<authorization>
<name>orgtype-read</name>
<action>http://midpoint.evolveum.com/xml/ns/public/security/authorization-model-3#read</action>
<object>
<type>OrgType</type>
</object>
</authorization>
これで、権限設定は完了です。
アクセス要求設定で作成したtest
ユーザのロールの要求
画面に行くと、設定したロールカタログが確認できます。
ロールの要求画面カスタマイズ
最後にロールの要求
画面のカスタマイズ方法をご紹介します。
先程説明したロールカタログの表示もロールの要求
画面のカスタマイズの一つですが、その他にロールの要求
画面上部のすべてのロールの表示
などが表示されているタブも表示内容が変えられます。
設定はシステム
のRAWデータの編集
から行います。XMLのrole
タグ内のroleManagement
タグ内で以下の設定を行います。ロールカタログ設定を行っている場合は、roleManagement
タグはすでにあるかと思いますので、そこを編集してください。ない場合はroleManagement
タグを追加してください。
<roleCatalogCollections>
<collection>
<collectionUri>http://midpoint.evolveum.com/xml/ns/public/common/object-collections-3#roleCatalog</collectionUri>
</collection>
<collection>
<collectionUri>http://midpoint.evolveum.com/xml/ns/public/common/object-collections-3#allRoles</collectionUri>
</collection>
</roleCatalogCollections>
<defaultCollection>
<collectionUri>http://midpoint.evolveum.com/xml/ns/public/common/object-collections-3#roleCatalog</collectionUri>
</defaultCollection>
この設定は、ロールの要求
の上部のタブにロールカタログの表示
とすべとのロールの表示
を表示し、ロールの要求
へのアクセス時に表示する画面はロールカタログの表示
にするという設定内容になります。roleCatalogCollections
タグが上部のタブに表示するボタン群の設定で、defaultCollection
がロールの要求
へのアクセス時に表示する画面の設定です。
test
ユーザでロールの要求
画面を確認すると以下のように想定どおりとなっていることが確認できます。
その他のタブを含むタブのcollectionUri
の一覧は下記のとおりです。
collectionUrl | タブ名 |
---|---|
http://midpoint.evolveum.com/xml/ns/public/common/object-collections-3#roleCatalog |
ロールカタログの表示 |
http://midpoint.evolveum.com/xml/ns/public/common/object-collections-3#allRoles |
すべてのロールの表示 |
http://midpoint.evolveum.com/xml/ns/public/common/object-collections-3#allOrgs |
すべての組織の表示 |
http://midpoint.evolveum.com/xml/ns/public/common/object-collections-3#allServices |
すべてのサービスの表示 |
http://midpoint.evolveum.com/xml/ns/public/common/object-collections-3#userAssignments |
ユーザのアサイン |
参考: Role Request and Shopping Cart Configuration - midPoint - Evolveum Confluence
おわりに
今回は、アクセス要求とワークフローについて、midPointでの実際の設定方法をご説明しました。あわせて、要求可能とするロールを管理する機能にも触れました。
この他にも、midPointには、承認者に作業アイテム
が振られた際に、メールなどで通知する機能等もあり、ID管理におけるアクセス要求やワークフローの基本的な機能は揃っているものと思います。
また、少し高度な設定(※)が必要になりますが、ロール管理という視点では、ロールカタログの組織の管理者を、そのロールカタログ内のロールの承認者にするといった設定も可能です。これにより、ロールの管理がより効率的に行なえます。
※ midPointの設定の管理ファイルであるXMLを編集する必要がありますが、設定内にGroovyやJavaScriptといったスクリプトを利用することができます。midPointはそれにより柔軟に動作をカスタマイズすることができます。
なお、ロールカタログ以外のロールの管理機能として、本アドベントカレンダーの6日目の「midPointにおける「エンタイトルメント管理」「ポリシーとロール管理」を解説する」の「拡張されたロールベースアクセスコントロール(RBAC)」でも触れられているように、ロールをアサインする際に組織などのパラメータを付与する仕組みもあります。
ロールカタログでは管理すべきロールの数は、ロールカタログ設定中の図のように、組織(プロジェクト等)の数×権限ロール(一般ユーザ、管理者ユーザ等)の数から変わりません。しかし、上記の機能では組織(プロジェクト等)の数+権限ロール(一般ユーザ、管理者ユーザ等)ですむことになります。
参考
Approval - midPoint - Evolveum Confluence
Role Request and Shopping Cart - midPoint - Evolveum Confluence
Role Catalog - midPoint - Evolveum Confluence
Role Catalog Configuration - midPoint - Evolveum Confluence
Role Request and Shopping Cart Configuration - midPoint - Evolveum Confluence
Script Expression - midPoint - Evolveum Confluence