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

midPointにおける「アクセス要求」「ワークフロー」実践編

はじめに

midPointアドベントカレンダー9日目は昨日の記事で紹介された「アクセス要求」「ワークフロー」について、実際のmidPointでの設定方法をご紹介します。

紹介する設定は、ユーザが必要なロールを自ら要求しアサインできるようにする設定や、ロールに対して承認者を設定しておき、ロールの要求後、その承認者による承認操作をもって要求したユーザにロールをアサインできるようにするといった内容になります。

また、ロールを管理する機能についても紹介します。

「アクセス要求」や「ワークフロー」の詳細については昨日の記事をご参照ください。

また、昨日の記事中でも触れられていますが、midPointではユーザの要求ベースのロールアサインの他に、予め定めておいたポリシー(アサインルール)に基づいて自動でロールを割当てる機能もあります。この機能については本アドベントカレンダーの6日目7日目のmidPointにおける「エンタイトルメント管理」「ポリシーとロール管理」の記事をご参照ください。

今回、midPointはmidPointの公式Docker Hubリポジトリで公開されているバージョン4.0.1の evolveum/midpoint:4.0.1 を使用しています。

アクセス要求とワークフローの基本設定

アクセス要求設定

昨日の記事でも触れられていますが、midPointではアサイン要求はロールの要求という名前の機能で実現されています。

まずは単純に、ユーザがロールを要求し、その要求をもってそのユーザにロールをアサインできるようにする設定を説明します。

設定

はじめに、ロール要求を行うための、midPointへのアクセス権限をもつユーザを作成します。

1-1testuser1.png
1-1testuser2.png

End userロールは、midPointにデフォルトで用意されているmidPointの一般ユーザロールです。このロールをアサインすることで、midPointへのログインが可能となります。

次に、ユーザに要求を許可するロールを作成します。

1-2role.png

要求可能trueとすることで、ユーザからの要求ができるロールとなります。

要求可能なロールの準備はこれで完了です。

動作確認

先程作成したtestユーザで、実際にロール要求をして動作確認をしてみます。現時点ではtestユーザにアサインされているロールはEnd userのみです。

1-3assign.png

ロール要求はロールの要求から行います。

1-4requestrole.png
1-5requestrole.png
1-5requestrole2.png

先程作成したProjectA userロールが表示されていますので、選択しロールを要求します。ロール要求はECサイトでの買い物を模しており、選択したロールはショッピングカートに入り、ショッピングカートから要求を確定するというUIになっています。なお、ショッピングカートへ行くボタンだけではなくショッピングカートアイコンからでも新規アサインの一覧(ショッピングカートの中身)に遷移できます。

ロール要求が完了すると、割当はすぐに使用できます。となっているように、そのままtestユーザにProjectA userロールがアサインされます。これは、現時点では承認が必要な設定をしていないためです。

ユーザプロファイルのアサイン画面でアサインされていることが確認できます。

1-6role.png

ワークフローの設定

承認が不要なロールであれば上記のアクセス要求設定の手順で設定できますが、承認者による承認を必要とするようにしたい場合も多いかと思います。ここでは、そのような承認が必要な要求可能ロールを作成する手順を説明します。

設定

設定方法を説明していきます。まず、承認者となるユーザを作成しておきます。

2-1testuser1.png
2-1testuser2.png

承認者には、End userロールに加え、Approver(承認者)ロールをアサインしておきます。Approverロールをアサインすることで下記のキャプチャのように、End userロールだけの場合と違い、左部にケースというメニューが表示されるようになります。

2-2testuser.png

承認者ユーザの用意ができたので、ロールを作成します。ロールは前述のアクセス要求設定と同じように作成します。

2-3role.png

次に、作成したロールの承認者を設定します。承認者に設定したいユーザに承認者としてロールをアサインすることで、ロールの承認者として設定することができます。

2-4assignrole.png

これで設定は完了です。

動作確認

アクセス要求設定の動作確認と同じように動作を確認していきます。アクセス要求設定で作成したtestユーザで先ほど作成したProjectB userロールを要求してみます。

2-5requestrole.png
2-5requestrole2.png
2-5requestrole3.png

今度はアクセス要求設定の際とは違い、要求しただけではロールがアサインされず、進行中といったメッセージが表示されました。

承認者に設定したtestapproverユーザでログインしてみます。

2-6approver.png

midPointでは承認タスクは作業アイテムと言う名前で扱われます。トップページにて、承認依頼として作業アイテムが来ていることやメニューのケースにバッチがついていることが確認できます。作業アイテムの名前を選択すると、詳細が確認できます。なお、ケースからでも作業アイテム画面に行くことができます。

2-7approve.png

先ほどtestユーザで要求したロールの承認依頼であることが確認できますので、承認します。

再度testユーザでログインすると、ProjectB userがアサインされていることが確認できます。

2-8role.png

アクセス要求対象のロールの管理

ここまでで、アクセス要求(ロールの要求)とワークフローの基本的な設定をご紹介しました。

しかし、ここまでの設定内容だけでは、ロールが横並びとなってしまい、ロール数が増えると管理が難しくなります。また、ロール要求をするユーザも要求したいロールをロールの要求画面から探すのが大変です。

ここでは、要求可能なロールを管理するための機能を少し説明します。

ロールカタログ設定

1つ目はロールカタログです。ロールカタログは、ロールを階層管理する機能です。

rolecatalog.png

midPointでは、組織構造として、組織を階層管理する機能があります。ロールの管理においては、その組織にロールを割り当てることでロールの階層管理が実現できます。これをロールカタログと呼んでいます。

設定

ロールカタログの設定方法を見ていきます。まず、ロールカタログとする組織を作成します。

3-1rolecatalog.png

子組織としてアクセス要求設定ワークフロー設定で作成したロール用の組織を作ります。

3-2childorg.png
3-2childorg2.png

同様の手順でProjectB user用の組織も作成しました。

3-2childorg4.png

作成したProjectAProjectA userロールを割り当てます。

3-3prja.png

メンバー内のタイプロールまたはすべてにすることで、割り当てたロールが確認できます。

3-3prja2.png

同様にProjectBProjectB userロールを割り当てました。

3-4prjb.png

次に作成した組織をロールカタログに指定する設定です。ロール管理(システム > ロール管理)のロール・カタログへの参照を先ほど作成したロールカタログ組織にします。

3-5rolecatalog.png

これで、ロールカタログの設定は完了です。

動作確認

ロールカタログの確認をします。

ただし、midPointのデフォルトのEnd userロールでは組織(OrgTypeオブジェクト)の参照権限がないため、階層化されたロールカタログが参照できません。

そのため、End userロールに権限を付けておきます。End userロールの編集画面のRAWデータの編集を選択してください。XMLのroleタグ内に下記のOrgType参照権限設定を追加します。

3-6enduser.png
3-7orgread.png

組織参照権限設定
    <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ユーザのロールの要求画面に行くと、設定したロールカタログが確認できます。

3-8orgcatalog.png

ロールの要求画面カスタマイズ

最後にロールの要求画面のカスタマイズ方法をご紹介します。

先程説明したロールカタログの表示もロールの要求画面のカスタマイズの一つですが、その他にロールの要求画面上部のすべてのロールの表示などが表示されているタブも表示内容が変えられます。

設定はシステムRAWデータの編集から行います。XMLのroleタグ内のroleManagementタグ内で以下の設定を行います。ロールカタログ設定を行っている場合は、roleManagementタグはすでにあるかと思いますので、そこを編集してください。ない場合はroleManagementタグを追加してください。

4-1raw.png
4-2requestroleraw.png

ロールの要求画面の設定
        <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ユーザでロールの要求画面を確認すると以下のように想定どおりとなっていることが確認できます。

4-3requestrole.png

その他のタブを含むタブの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

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
ユーザーは見つかりませんでした