7midPointにおける「エンタイトルメント管理」「ポリシーとロール管理」実践編OSSIGAmidPointIDMはじめにmidPointアドベントカレンダー7日目は昨日の記事で紹介された「エンタイトルメント管理」「ポリシーとロール管理」について、実際のmidPointでの設定方法をご紹介します。具体的には、ポリシーに基づきロールがユーザに自動でアサインされるように設定をする方法をご紹介します。PeopleレイヤとResourceレイヤの考え方に基づき、リソース(プロビジョニング先システム)のアクセス権限を管理する設定もご紹介します。ポリシーやロール、Peopleレイヤ、Resourceレイヤなどの詳細は昨日の記事をご参照ください。Hubリポジトリで公開されているバージョン4.0.1のevolveum/midpoint:4.0.1を使用しています。ロールのアサインポリシーの設定midPointにおける、ロールをアサインするためのポリシーの設定方法は、大きく分けて2つあります。1つ目は、ロール自体にそのロールをアサインする条件を設定する方法です。「正社員」ロールに対して、この「正社員」ロールをユーザ情報の雇用形態情報が「正社員」となっているユーザに割り当てる、といったポリシーを設定する形になります。一つの方法は、オブジェクトテンプレートを作成する方法です。midPointではユーザや組織、ロール、リソースなどのmidPoint内でデータとして保持するものをオブジェクトと呼びます。オブジェクトテンプレートとは、ユーザなどのオブジェクトの設定に関してのルールを保持するものです。オブジェクトテンプレートでの設定の場合は、ロールにアサインポリシーを設定する方法に比べ、柔軟な設定ができます。ユーザの雇用形態情報に格納されている情報と同じ名前のロールをそのユーザにアサインするといったルールでオブジェクトテンプレートを作成します。すると、雇用形態情報が「正社員」となっているユーザには「正社員」ロールを、「インターン」となっているユーザには「インターン」ロールをアサインするといった動作の設定が一括でできます。ロールにアサインポリシーを設定する方法で同様の動作を実現するには、「正社員」ロールと「インターン」ロールのそれぞれに設定を加える必要があります。本記事では両方の設定方法を説明していきます。ロール自体にアサインポリシーを設定するここから、具体的な設定方法を説明していきます。ロールにアサインポリシーを設定する方法です。自動アサインの有効化ロールのアサインポリシーでの自動アサインには、システム設定の自動アサインを有効にする必要があります。ロール管理)の自動アサインが有効をTrueとすることで、自動アサインが有効となります。次に、ポリシーを設定するロールを作成します。今回はemployeeというロールを作成します。作成したロールにポリシーを設定します。この設定は、「RAWデータの編集」と呼ばれるロール定義のXMLを直接編集する方法で設定します。先程作成したemployeeロールの画面の右下の「RAWデータの編集」を押下します。編集エディタにて、roleタグ内に以下の定義を追加します。</autoassign>今回はサブタイプ属性を雇用形態情報の属性として利用することにしています。ため、サブタイプをemployeeとしたユーザを作成してみます。保存後、作成したユーザの詳細画面に行くと、employeeロールが自動でアサインされていることが確認できます。サブタイプの値がemployee以外になると自動的にemployeeロールのアサインも外れます。アサインポリシーを設定したオブジェクトテンプレートを作成する次に、オブジェクトテンプレートでロールのポリシーを設定する方法です。ポリシーを設定したオブジェクトテンプレートの作成オブジェクトテンプレートでアサインポリシーを設定する場合は、まずオブジェクトテンプレートを作成します。オブジェクトテンプレートは「オブジェクトのインポート」から、「組み込みエディター」を選択し、下記のXMLをインポートすることで作成してください。Templateという名前のオブジェクトテンプレートで、サブタイプと同じ名前のロールがある場合にそのロールをアサインするという設定がされた状態です。次にこのオブジェクトテンプレートをユーザオブジェクトに適用する設定をします。オブジェクトポリシー)を下記の設定で新規作成します。ユーザーこれで設定は完了です。動作確認オブジェクトテンプレートの適用まで完了すると、ユーザのサブタイプにロール名を指定することで、指定したロールがアサインされます。以下はinternという名前のロールを新規に作成し、サブタイプをinternとしたユーザを作成した際にinternロールがアサインされていることを確認した結果となります。サブタイプが変更されると、ロールのアサインも自動で対応するものに変更されます。今回ご紹介した2つの設定方法について、ロールのアサインポリシーの設定のはじめで、オブジェクトテンプレートで設定する方法のほうが柔軟性がある点に触れていました。その他に、性能の面でもオブジェクトテンプレートでの設定の方が有利です。公式のガイドでも、ロールにアサインポリシーを設定する方法では数十ロールまでは問題ないがそれを超えるとパフォーマンスに影響が出てくるといった旨が記載されています。本格的な運用を見据えると、オブジェクトテンプレートで設定する方がおすすめできるかと思います。PeopleレイヤとResourceレイヤ昨日の記事で説明されている通り、ロールはPeopleレイヤとResourceレイヤに分けて階層的に管理することが推奨されています。ロールのアサインポリシーの設定の中で作成しユーザにアサインした雇用形態を表すロールはPeopleレイヤに分類することができます。ここでは、リソースのアクセス権限を表すResourceレイヤのロールを設定し、そのリソースへのアクセスを許可する雇用形態に対して、そのロールを紐付けます。これにより、間接的にリソースの権限をユーザに割り当てます。今回はリソースとしてmidPoint自体を対象に説明していきます。Resourceレイヤロールの設定リソースへの権限を指定したResourceレイヤロールの作成まず、Resourceレイヤのロールとしてidm-userというロールを作成します。userロールをインデュースメントします。Confluence)。midPointでは、このインデュースメントやアサインを多段に設定することで、PeopleレイヤとResourceレイヤといったロールの階層管理が実現できます。上記のインデュースメント設定で、midPointへのアクセス権限を設定したResourceレイヤのロールが完成しました。この時点では、まだユーザにこのロールを紐付けていないため、ユーザはmidPointへログインすることができません。試しに、ロールのアサインポリシーの設定で作成したtestユーザにパスワードを設定しログインしてみると下記のようにエラーとなります。今回はemployeeロールを持つユーザにはmidPointのアクセスを許可することにします。employeeロールの設定にてidm-userロールをインデュースメントします。これで、employeeロールを持つtestユーザもmidPointへのアクセス権限を得た形になります。user権限でログインできることが確認できます。おわりに今回は、midPointでのロールやポリシーの設定をご紹介しました。midPointでは、アサインやインデュースメントによりロールを柔軟に管理する仕組みや、アサインポリシーに従いロールを自動でアサインする機能を提供しており、「エンタイトルメント管理」「ポリシーとロール管理」といったIDの権限管理を十分に実現できます。Resourceレイヤのロールの設定に関して、本記事ではResourceレイヤのロールにmidPointの権限ロールを紐付けていますが、リソースを指定することで、そのロールを持つユーザを、指定されたリソースにプロビジョニングするといった設定ができます。プロビジョニング(フルフィルメント)については本アドベントカレンダーの10日目から12日目で紹介される予定です。Entitlementsという仕組みを使うことで、プロビジョニングするかしないかだけではなく、権限情報をプロビジョニングすることも可能です。LDAPへのプロビジョニングで、midPointで管理している権限をLDAPグループの所属情報として連携するといったことができます。基盤サービス」の4事業でお客様のビジネスや快適な社会、暮らしを支えています。※各記事の内容は個人の見解であり、所属する組織の公式見解ではありません。upLoginユーザーは見つかりませんでした。