midPointを使った「エンタイトルメント」管理による権限制御の自動化の基本midPointで学ぶIDガバナンス&管理(IGA)の基礎(4)

「IDガバナンス&管理」(IGA)についてOSS「midPoint」を利用したハンズオンで学ぶ連載。今回は、「エンタイトルメント」管理による権限制御の自動化の基本を解説します。

» 2023年03月07日 05時00分 公開
[高井真人株式会社日立製作所]

この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。

 オープンソースソフトウェア(OSS)でありながら「IDガバナンス&管理」(Identity Governance and Administration:IGA)機能を備えた「midPoint」を使って、ハンズオン的にIGAについて学ぶ本連載『midPointで学ぶ「IDガバナンス&管理」(IGA)の基礎』。第3回では、さまざまなIDリソースとの連携を設定し、手動でIDをプロビジョニングすることで各システムへのアクセス権限を付与しました。

 今回はIDライフサイクルにおける人事異動のユースケースを取り扱い、ロールを利用したプロビジョニングによって人事異動に伴うアクセス権限変更を自動化します。

エンタイトルメントとは

 「エンタイトルメント」とは役割や組織に伴う資格情報を示します。具体的にはリソースに対するアクセス権限やIDリソース側で管理されるロールやグループとして表現します。

 ハンズオンで考えるExample社には全社認証基盤(LDAP)および全社研修システム(CSV)と開発ツール(PostgreSQL)が存在します。このとき、Example社の全社員が共通ロールを介して認証基盤と研修システムにプロビジョニングされ、各システムへのアクセス権限が与えられます。

 一方で、開発ツールは開発部の社員だけが利用できるので、運用部の社員は開発ツールのPostgreSQLにプロビジョニングされません。開発部の社員のみがアサインされる開発ロールによってプロビジョニングされます。また、開発ツールではアクセスレベルの情報を持ち、こちらもmidPointのロールを介してプロビジョニングされたユーザーの権限を管理しています。

 このように、今回はロールを利用し、各システムに自動的にプロビジョニングすることでエンタイトルメントを管理します。

エンタイトルメント管理

Example社におけるロールの構成例

 第3回では各システムに手動でプロビジョニングしましたが、今回はロールを利用してユーザーが各システムに自動的にプロビジョニングされるように設定します。本連載のシナリオに沿って設計したロール構成を図示します。

ロール構成

 今回の例では3つのロールを作成します。組織にひも付く「全社共通アプリケーション」ロールと「開発アプリケーション」ロール、およびユーザーにひも付く「開発マネージャー」ロールです。

 全社共通アプリケーションロールは認証基盤と研修システムのリソースと関連付けられており、ユーザーをLDAPおよびCSVにプロビジョニングします。また、ユーザーが所属する組織情報からLDAPのアカウントとグループをひも付けます。開発アプリケーションロールは開発ツールのリソースと関連付けられており、開発者権限のアクセスレベルでPostgreSQLにプロビジョニングします。加えて、開発マネージャーロールは開発ツールにおけるアクセスレベルを管理者権限に設定します。

 全社共通アプリケーションロールは全ての組織とひも付けられており、開発アプリケーションロールは開発部/課にひも付けられます。開発マネージャーロールは開発部/課の係長、課長、部長の役職を持つユーザーにひも付けられます。

 なお、今回は簡単にするために全ての組織(部および課)に関連するリソースのロールを関連付けていますが、上位組織(部)にのみロールをひも付けて、ロールによるプロビジョニングの効果を下位の組織(課)に波及させる方法もあります。一例として「orderConstraints」によって下位組織に「inducement」を適用する方法があります。現時点でGUIの設定がサポートされていませんが、パフォーマンスオーバーヘッドが小さく効率が良い方法です(参考)。

ロールによるエンタイトルメント管理のハンズオン

前回アサインしたリソースの削除

 第3回で手動アサインを実施した方はリソースを削除しましょう。midPointの管理画面から「ユーザー」→「すべてのユーザー」を選択し、ユーザーの詳細画面から「アサイン」→「リソース」を選択して各リソースの行の右にあるアサイン解除ボタン(−)をクリックして保存します。

リソースアサインの削除

ロールの登録

 先ほどの構成に従って設計したロールをmidPointに登録します。

 本手順は第3回で構築および設定した環境を前提としています。今回利用するファイルをリポジトリ(https://github.com/Hitachi/midpoint-sample-configuration.git)から取得して更新してください。

$ cd midpoint-sample-configuration
$ git pull

 今回利用するロール定義は「https://github.com/Hitachi/midpoint-sample-configuration/blob/main/roles/chapter-4/roles.xml」に格納されています。midPoint管理画面の「オブジェクトのインポート」から「ファイルの選択」をクリックし、roles.xmlを選択して“オブジェクトのインポート」をクリックしてください。

オブジェクトのトインポート

 インポートしたロールはmidPoint管理コンソールの「ロール」→「すべてのロール」から確認できます。

リソース定義の修正とリコンサイル

 ここではロールを組織やユーザーとひも付けるために人事システムから取り込まれるリソース定義を修正します。

 初めに、ユーザーのリソース定義を修正します。midPoint管理画面の「リソース」→「リソース定義のインポート」を選択してください。

 画面上部の「既存オブジェクトの上書き」のチェックボックスにチェックを入れ、「https://github.com/Hitachi/midpoint-sample-configuration/blob/main/resources/chapter-4/resource-csv-hr.xml」のファイルを選択して「オブジェクトのインポート」をクリックしてください。

 次に、組織のリソースを修正します。先ほどと同様にmidPoint管理画面の「リソース」→「リソース定義のインポート」を選択してください。

 画面上部の「既存オブジェクトの上書き」のチェックボックスにチェックを入れ、「https://github.com/Hitachi/midpoint-sample-configuration/blob/main/resources/chapter-4/resource-csv-org.xml」をファイル選択して「オブジェクトのインポート」をクリックしてください。

 midPoint管理画面の「組織構造」→「すべての組織」を選択し、選択した状態でリコンサイルを実行してください。

 これでエンタイトルメント管理が準備できました。

組織のリコンサイル

人事異動に伴うプロビジョニングの確認

 Example社における以下の人事異動のユースケースを例に、エンタイトルメント管理の自動化を試してみましょう。

旧所属と役職 新所属と役職
従業員番号 氏名 所属 役職 所属 役職
006 本田文之 開発1課(1210) 一般社員 運用1課(1310) 一般社員
026 神田善 運用2課(1320) 一般社員 開発1課(1210) 係長

 人事異動後の人事情報は「https://github.com/Hitachi/midpoint-sample-configuration/blob/main/data/midpoint/chapter-4」の「hr.csv」に格納しています。「HR System(従業員情報)」の詳細画面の「コネクター設定」の「File path」を「/opt/midpoint/var/resources/chapter-4/hr.csv」に変更してください。

人事システムのリソース定義

 midPoint管理画面の「ユーザー」→「すべてのユーザー」画面に遷移し、各ユーザー行の右のメニューボタン(▼)でメニューを開き、リコンサイルをクリックしてください。

 従業員番号006(本田文之)と026(神田善)の詳細画面から「アサイン」→「組織」をクリックして確認すると、人事情報の変更に従ってアサインされる組織が自動的に変更されていることを確認できます。

 詳細画面から「プロジェクション」をクリックすると、異動後の所属情報に従ってそれぞれ下表のようにリソースにプロビジョニングされていることを確認できます。

従業員番号 氏名 プロビジョニング先
006 本田文之 人事システム、全社認証基盤、研修システム
026 神田善 人事システム、全社認証基盤、研修システム、開発ツール

 PostgreSQLを確認してみると、開発1課に異動するとともに係長に昇進した神田さんは開発マネージャーロールによってアクセスレベルがManager(一般社員のアクセスレベルはDeveloper)になっていることを確認できます。

従業員番号026(神田善)の異動前のプロビジョニング先一覧

従業員番号026(神田善)の異動後のプロビジョニング先一覧

PostgreSQLにプロビジョニングされた従業員番号026(神田善)の情報確認

 midPointではこれらのプロビジョニング操作に対するログも逐次保存されており、例えばmidPoint管理画面の「レポート」→「監査ログビューアー」から確認できます。

次回は、ワークフローを使ったアクセス要求

 今回はmidPointを利用したエンタイトルメント管理を紹介しました。人事異動のユースケースを基にロールを使った自動的なプロビジョニングによるアクセス権限制御をハンズオンで試し、管理効率を向上できることを示しました。

 次回は、今回のようなルールに基づくアクセス権限制御の自動化が難しいユースケースに対する、ワークフローを使ったアクセス要求について解説します。

Copyright © ITmedia, Inc. All Rights Reserved.

スポンサーからのお知らせPR

注目のテーマ

Microsoft & Windows最前線2025
AI for エンジニアリング
ローコード/ノーコード セントラル by @IT - ITエンジニアがビジネスの中心で活躍する組織へ
Cloud Native Central by @IT - スケーラブルな能力を組織に
システム開発ノウハウ 【発注ナビ】PR
あなたにおすすめの記事PR

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。