midPointにおける「IDライフサイクル管理」

## ID（アイデンティティ）ライフサイクル管理

midPointアドベントカレンダー4日目は、IGAの主要な要素である**ID(identity)**の**ライフサイクル(lifecycle)**を**管理(management)**する機能、`Identity lifecycle management` について解説させて頂きます。

##IGAで定義されているIDライフサイクル管理

ガートナーではIGAにおけるIDライフサイクル管理を以下のように説明しています。

(日本語訳)
"組織に関連するデジタルアイデンティティとその属性を、作成から最終的にアーカイブされるまでのプロセス全体を保守します。ほとんどの組織には、従業員、請負業者、ビジネスパートナー、クライアント、学生、患者など、複数の異なるアイデンティティライフサイクルが存在しています。"

(原文)
Maintaining digital identities, their relationships with the organization and their attributes during the entire process, from creation to eventual archiving.Most organizations have multiple distinct identity life cycles, such as for employees,contractors, business partners, clients, students and patients.

※ 出典 Gartner社「Gartner, [Definition: Identity Governance and Administration](https://www.gartner.com/en/documents/3885381/definition-identity-governance-and-administration)」, Felix Gaehtgens, Refreshed 11 September 2019, Published 7 August 2018 (2018年9月の記事-閲覧は有料)

つまり、現実の変化に合わせて ID の登録から破棄（アーカイブ）されるまでのプロセス全体を保守するものということになります。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/227018/993603d0-7e25-aade-79c3-26b669dbe678.png" alt="iga-id-lifecycle" width="90%">


## IDライフサイクル

ID ライフサイクルの中で ID はどのように変化するのでしょうか、[ISO/IEC 24760 A framework for identity management] (https://www.iso.org/standard/57914.html) では、以下のように遷移するとされています。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/227018/96f0b468-5eaa-be9c-e0ef-0113b1b2c7e3.png" width="50%">
<center><table><tr><td>:information_source:引用元：[ISO/IEC 24760 A framework for identity management] (https://www.iso.org/standard/57914.html)</td></tr>
<tr><td>青文字の「The electronic version of this International Standard can be downloaded from the ISO/IEC Information Technology Task Force (ITTF) web site 」の「[download](https://standards.iso.org/ittf/PubliclyAvailableStandards/index.html)」リンクの先のページの「ISO/IEC 24760-1:2019」リンクからダウンロードできます。</td></tr></table>

矢印の部分はそれぞれ以下のようになります。

|処理              |説明         |
|:----------------|:------------|
|enrolment<br/>（登録） |IDを登録します。いわゆるユーザー登録です。|
|activation<br/>（アクティベーション）|登録されたユーザーを有効化します。登録と同時に行われる場合が多いです。|
|maintenance<br/>（メンテナンス）|IDの情報を更新します。異動、出向、昇進などに伴い、組織の変更、勤務先の変更、権限の付与などの情報が更新されることが該当します。|
|identity adjustment<br/>（ID調整）|IDの有効状態を調整します。例えば利用できる社内サービスの変更を行うような場合に発生します。|
|suspension<br/>（停止）|IDを一時的に使用できないようにします。|
|reactivation<br/>（再アクティベーション）|停止していたIDを再びアクティブな状態に戻します。|
|delete<br/>（削除）|IDを物理的に削除します。削除後はIDの情報を参照することは出来ません。|
|archive<br/>（アーカイブ）|IDを論理的に削除します。削除後もデータとしては残っているため参照することは可能です。|
|enrolment/restore<br/>（登録/復元）|アーカイブされたIDを復元して再利用します。|


状態はそれぞれ以下になります。

|状態|説明        |
|:---------------------------- |:----------|
|unknown<br/>（不明）|IDがシステムに存在しない状態|
|established<br/>（確立済）|IDの登録に必要な情報がシステムによりチェック済であり、登録可能な状態|
|active<br/>（アクティブ）|IDがシステム上に存在していて、組織内のリソースが使用できる状態|
|suspended<br/>（停止）|IDがシステム上に存在しているが、組織内のリソースは使用できない状態|
|archived<br/>（アーカイブ済）|IDは論理的に削除されているため、使用することができない状態|

## midPointにおけるIDライフサイクル

evolveum社のサイトでは[identity lifecycle](https://evolveum.com/glossary/identity-lifecycle/)について以下のように説明しています。

> アイデンティティライフサイクルとは、作成から非アクティブ化または削除までの一連のステージです。
> アカウントの作成、適切なグループと権限の割り当て、パスワードの設定とリセット、アカウントの非アクティブ化、削除までが含まれます。

![Identity Lifecycle](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/227018/423dcd95-2768-2a82-f397-f22d69a74efd.png)

引用元:[identity lifecycle](https://evolveum.com/glossary/identity-lifecycle/)

上記の図は、あくまでevolveum社で考えられた ID ライフサイクルの一例になりますが、それぞれの状態は、日本語にすると **登録、有効化**(`Provisioning`)、**配置転換**(`Career move`)、**移転**(`Location move`)、**ユーザ情報更新**(`Profile update`)、**新規事業**(`New project`)、**パスワード忘れ**(`Password loss`)、**パスワード期限切れ**(`Password expiration`)、**新しい要求**(`New requests`)、**停止、削除**(`Deprovisioning`)のようになります。

これらを ISO/IEC 24760 の分類に当てはめてみました。

|分類             |内容                                        |
|:------------------|:------------------------------------------|
|**登録/アクティベーション**|`Provisioning`（登録、有効化）、登録と有効化はまとめて行うことも、それぞれ別に行うことも可能です。|
|**メンテナンス**|`Profile update`（ユーザ情報更新）|
|**ID調整**|`Career move`（配置転換）、`Location move`（移転）、`New project`（新規事業）|
|**停止/削除/アーカイブ**|`Deprovisioning`（停止、削除）、停止のみ行うことも、削除までしてしまうことも、アーカイブ化しておくことも可能です。|

**その他**
`Password loss`（パスワード忘れ）、`Password expiration`（パスワード期限切れ）、`New requests`（新しい要求）は、ISO/IEC 24760 の分類にはあてはまらないようです。これらについては別途記事を書きますのでご参照下さい。

[midPoint by OpenStandia Advent Calendar 2019](https://qiita.com/advent-calendar/2019/midpoint-by-openstandia)
[midPointにおける「アクセス要求」「ワークフロー」](https://qiita.com/tama1/items/b1dde1573cd12810fb41):star: 8日目
[midPointにおける「パスワード管理」](https://qiita.com/tama1/items/60a50d8baf985b2c8e93):star: 17日目

## midPointをちょっと見てみる

それでは midPoint の画面での操作を見てみましょう、ここではブラウザでユーザーの追加、更新、削除を行っています。

<table><tr><th>:information_source:ノート</th></tr><tr><td>実際の運用でオペレーターが毎回ブラウザを使用して手動で操作を行うのは現実的ではないため、タスクにより自動化することになると思います。このようなことも出来るというイメージで見ていただければと思います。動画では組織への配属も手動で行っていますが、実運用では配属情報をCSVから取得して、自動的にアサインすることになります。</td></tr><table>

### ユーザーの追加
IDの登録およびアクティベーションに該当します。新入社員テスト花子さんを人事システムのCSVファイルから取り込み、開発第一グループに配属します。

![ユーザ取り込み.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/227018/0ca3c208-90cf-0dd3-1ede-02d75980da67.gif)

### ユーザーの変更
ID調整に該当します。テスト花子さんは開発第一グループから開発第二グループに異動になりました。

![ユーザ異動.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/227018/0d9e607b-c041-0d54-2e50-1dd1cbddf134.gif)

### ユーザーの削除
IDの停止／削除に該当します。テスト花子さんは退職したのでアカウントの削除を行います。

![ユーザ削除.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/227018/54b0dfa6-3500-aef6-668e-47523a2685c7.gif)


# まとめ
今回は、IDライフサイクルという難しい話を説明させて頂きましたが、いかがでしたでしょうか、midPoint は、多くのシナリオに対応可能な柔軟な作りになっていますので、日本でも多くの企業や組織で利用できると思います。明日はより具体的な設定方法について説明させて頂きたいと思います。