midPointとは

## はじめに
　近年、情報セキュリティの確保は企業の社会的責任と認知されており、クラウドサービス利用の促進、デバイスの多様化が進む中、各企業でのIT統制の実現は経営課題となりつつあります。IT統制の実現において、適切に利用者のIDを管理することはこれまで以上に重要な位置付けとなっています。

　昨今ではIDを適切に管理する「アイデンティティ管理（Identity Management）」だけでなく、**IDを適切に統制する「IDガバナンス&管理（Identity Governance & Administration）」**という概念が提唱されています。（以下、`IDM`、`IGA`と記載する）
![midpoint-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/207022/f9a2a7ca-3d67-0237-fd9f-166dc7e1e66d.png)
　OpenStandiaチームがお送りする今年のアドベントカレンダーは、「[midPoint by OpenStandia Advent Calendar 2019](https://qiita.com/advent-calendar/2019/midpoint-by-openstandia)」と銘を打ちまして、この**`IGA`を実現するオープンソースソフトウェア「midPoint」をテーマに執筆していきたいと思います**。はじめての方でも分かりやすく解説していきますので、25日間、最後までどうぞよろしくお願いします！

## まず「IGA」を知る
　「midPoint」の解説に入る前に、簡単に「`IGA`」について解説します。
### 「IGA」とは
 「`IGA`」は、**従来の`IDM`に加えて「IDガバナンス（ID統制）」が強化されたソリューション**です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/207022/9a50cdd9-83ca-b905-2799-b157a61a3217.png)

<center><table><tr><th>:information_source:　IDガバナンス（ID統制）とは</th></tr><tr><td>一般的に「企業のID活用を適正に監視・規律すること、または、その仕組み」を指します。具体的には、IDの利用状況や資格情報を、モニタリング、レポート作成、棚卸、および修正を自動化することで、継続的なコンプライアンスの維持を期待されます。
</td></tr></table></center>

### 「IGA」の主な役割
 「`IGA`」の主な役割として、**人に対してシステム上のIDおよび権限を割り当てる「プロセスの統制や自動化」を担います**。また、プロセスの統制とは、下図に示します基本サイクルに乗せることです。
![midpoint-3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/207022/514fa83f-227b-880d-0751-35ddab83390a.png)

### 「IGA」の主要な要素
　Gartner社による定義では、「`IGA`」は以下の**１０の主要要素で構成されます**。従来の`IDM`と重複するものがありますが、一番のポイントは**「IDガバナンス(ID統制)」をより重視して、IDの有効性や権限の付与を「徹底的に自動化・極小化」する**ところにあります。

1. IDライフサイクル管理（Identity Life Cycle Management）
* 権限管理（Entitlement Management）
* アクセス要求（Access Requests）
* ワークフロー（Workflow）
* ポリシー・ロール管理（Policy and Role Management）
* アクセス認定（Access Certification）
* フルフィルメント（Fulfillment）
* パスワード管理（Password Management）
* 監査（Auditing）
* レポーティング・分析（Reporting and Analytics）

※ Gartnerによる定義：「Gartner, Definition: Identity Governance and Administration, Felix Gaehtgens, Refreshed 11 September 2019, Published 7 August 2018」より引用。

## 「midPoint」を知る
　前述を踏まえまして、本題midPointについて解説します。
### 「midPoint」とは
　「midPoint」は、Evolveum社（本社：スロバキア、CEO：Igor Farinic氏）から**オープンソースソフトウエア(`OSS`)として提供される`IGA`プロダクト**です。（以下、`OSS`と記載する）**`OSS`でありながら、充実した「IDガバナンス（ID統制）」機能を備えた注目度の高いプロダクト**になっています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/207022/5742f6aa-104f-45ae-329e-dd37adb3d09e.png)

### 「midPoint」の客観的特徴
* midPointのCTOであるRadovan氏はIDMに関する造詣が非常に深く、業界全体に関する様々な情報を発信しています。下記は、IDMの歴史、ベンダ動向について書かれたものですが、**IDMに関する深い知見**を伺い知ることができます。
[Evolveum HP - The Old IDM Kings Are Dead. Long Live the New Kings.](https://evolveum.com/old-idm-kings-dead-long-live-new-kings/)

* 「IDガバナンス(ID統制)」や「GDPR」などの国際標準仕様が定っていないような**最新の情報セキュリティへの取り組みにも非常に積極的です**。今すぐに対応できないものも、現状の見解が記載され、Featuresにプロットされます。
[midPoint Wiki - Identity Governance](https://wiki.evolveum.com/display/midPoint/Identity+Governance)
[midPoint Wiki - Consent Management (GDPR)](https://wiki.evolveum.com/pages/viewpage.action?pageId=24675082)

* 現状、ヨーロッパ企業がほとんどですが、**「導入実績」のある企業の数が着実に伸びてきています**。（日本企業にはNRIがあります）
[Evolveum HP - Our happy clients](https://evolveum.com/about-us/references/) ※ 世界中の企業に導入されている
[Evolveum HP - find-a-partner](https://evolveum.com/partners/find-a-partner/) ※ 世界中にパートナー企業がいて導入支援をやっている

* 現状、外部の人も含めたコミュニティ活動は「活発である」とまではいえない印象ですが、**プロダクトの更新頻度は高く、機能の強化が継続して行われています**。（NRIもソースコードのコントリビュートをしています）
[GitHub - Evolveum/midpoint](https://github.com/Evolveum/midpoint/)
[JIRA - midpoint](https://jira.evolveum.com/) ※ 30～40件/月程度の課題解決や新機能チケットが追加されている
[Mailing Lists - midpoint](https://wiki.evolveum.com/display/midPoint/Mailing+Lists) ※ 数十件/月程度の投稿があり
[Identity Connectors - midpoint](https://wiki.evolveum.com/display/midPoint/Identity+Connectors) ※ いくつかはコミュニティがコネクターを開発されたケースもあり

* ドキュメントの多くはwiki形式で提供されています。内容に濃淡があったり、閲覧に少々慣れが必要ですが、**`OSS`の世界の中では充実しているほう**だと思います。また、「midPoint」自体の多言語対応も**日本語を含む17つの言語に対応**しており、非常に充実しています。（NRIも日本語訳のコントリビュートをしています）
[midPoint Wiki](https://wiki.evolveum.com/)
[Trunsifex - midpoint](https://www.transifex.com/evolveum/midpoint/)
[Practical Identity Management with MidPoint](https://evolveum.com/midpoint/midpoint-guide-about-practical-identity-management/)　※「mitPoint」を利用した実用的なID管理の概要を解説されており、導入序段にありがちな、「midPoint」で何が出来るの？「midPoint」でどうすればいいの？を解決してくれます

### 「midPoint」の主要な機能
　「midPoint」には、前記「`IGA`の主要な要素」で紹介した**各要素に対応する機能を搭載しており、それぞれ適切に導入を行うことで「IDガバナンス(ID統制)」の実現が可能**となります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/207022/55814f87-34bb-3248-4780-b352e68d3fe3.png)

|機能|機能説明|
|---|---|
|IDライフサイクル管理（Identity Life Cycle Management）|登録から破棄までのIDのライフサイクルを管理します。従業員の入社から退職までの一連のイベントに伴うID更新までも管理可能です。この間に発生する異動・昇進に伴う役割の変更も自動的に反映し、人とIDとシステムを繋げます。また、柔軟な組織構造モデルにより、あらゆるビジネスシーンに適合可能です。 (マルチテナントや兼務も表現可能)|
|権限管理（Entitlement Management）|権限情報（役割や組織に伴う資格）を管理します。連携先システムでどのような権限を割り当てるかを定義します。|
|アクセス要求（Access Requests）|従業員からのアクセス権限やユーザー情報変更が要求できます。ここでは定量的な自動付与出来ない、例外的な割り当てを制御します。|
|ワークフロー（Workflow）|適切な上長の承認が必要なワークフローが自動的に実施されます。承認されると、自動的に関連システムに反映されます。汎用的なワークフロープロセスが用意されているため、新たなワークフロープロセスのモデリングはほとんど必要ありません。|
|ポリシー・ロール管理（Policy and Role Management）|ロールベースアクセスコントロール（RBAC）を拡張したアクセス権限制御や、ルールに基づいた自動的な割り当てを行います。|
|アクセス認定（Access Certification）|棚卸機能により、システム管理者の負担を軽減し、アクセス権の見直しや不要ID削除により、セキュリティリスクを低減します。|
|フルフィルメント（Fulfillment）|標準搭載のコネクタにより、システムとID情報を同期連携します。万が一、対応していない連携先システムがある場合には、カスタムコネクターを作成可能です。|
|パスワード管理（Password Management）|各種パスワード管理機能が利用可能です。<BR>・パスワードの配布<BR>・パスワードポリシー（複雑さ）<BR>・パスワード保存ポリシー（有効期限）<BR>・ユーザー自身で変更可能なパスワード管理<BR>・選択可能な保存オプション（暗号化、ハッシュ）<BR>・新しいアカウントのパスワードのメールベースの初期化|
|レポーティング・分析（Reporting and Analytics）|レポート機能で、IDの管理状態や記録された監査ログを様々な形式（PDF、Word、PowerPoint、HTML、CSVなど）で出力することができ、適切なコンプライアンスチェックを行うことが可能です。|
|監査（Auditing）|IDに関する証跡（いつ、誰が、どこから、何を、どうしたか等）を、適切に記録します。|

## 「midPoint」を選ぶ理由
　なぜ「midPoint」を選ぶのか？を解説します。

### 完成度の高い「IGA」プロダクト
* 「midPoint」は、データモデル、ワークフロー、管理画面、各種コネクタなど、「`IGA`」に必要な機能が標準で組み込まれており、ほとんどが**インストール直後から利用可能**となります。（Zipを解凍するだけですぐに動作する「Out-of-the-box」なプロダクト）
* 「midPoint」の思想から大きく外れた要件がなければ、**カスタマイズ開発なしで多くのユースケースをカバーすることが可能**になります。（導入コストの抑制、高い保守性を確保）
* 各種コネクタにおいては、CSV、LDAP、Active Directoryなどの**メジャーなIDプロビジョニング先に標準で対応**しています。
* 類似`OSS`プロダクト中でも珍しい**「棚卸機能」を標準搭載**しています。これまで、高額な追加ライセンス料金が発生したり、大掛かりなカスタマイズ開発が必要になったりしましたが、midPointの設定で「棚卸機能」を実現することができます。

### 類似する「IGA」プロダクト比較で優位
　類似する`IGA`プロダクトには、「ForgeRock OpenIDM(現ForgeRock Identity Management)」「Apache Syncope」などがありますが、現状、`OSS`の`IGA`プロダクト自体少ないです。Gartner社が「[Options for Open-Source Identity and Access Management: 2017 Update](https://www.gartner.com/doc/3633317/options-opensource-identity-access-management)」の最新版を準備しているようですが、ここでは「midPoint」とOpenStandiaでも取り扱いのある「ForgeRock OpenIDM」で、特徴や機能を独自に比較してみます。

|分類|比較項目|midPoint|ForgeRock OpenIDM<BR>(現 ForgeRock Identity Management)|
|---|---|---|---|
|全体|開発ポリシー|オープン|~~オープン~~　→　クローズド|
||プロダクトの特徴|非常に豊富な機能セットを備える実用的なプロダクト|軽量なアプローチと優れた柔軟性を備えるプロダクト|
||提供範囲|IDMおよびIGA範囲のみを提供<BR>(KeycloakなどのAMプロダクトとの組み合わせが可能)|AM、IDMを含んだForgeRock Identity Platformとして広範囲を提供|
||得意とするID分野|エンタープライズID向き|カスタマーID向き|
||導入アプローチ|プリインストールから設定ベース|カスタマイズ開発ベース|
||拡張性|カスタマイズ開発ポイントに制限|カスタマイズ開発ポイント多数|
|機能（主要）|IDライフサイクル管理|標準搭載|要カスタマイズ開発|
||エンタイトルメント管理|標準搭載|標準搭載|
||ポリシー・ロール管理|標準搭載|要カスタマイズ開発|
||アクセス要求|標準搭載|要カスタマイズ開発|
||ワークフロー|標準搭載|要カスタマイズ開発|
||フルフィルメント（プロビジョニング）|標準搭載|標準搭載|
||アクセス認定（ID棚卸）|標準搭載|要カスタマイズ開発|
||監査|標準搭載|要カスタマイズ開発|
||レポーティング・分析|標準搭載|要カスタマイズ開発|
||パスワード管理|標準搭載|標準搭載|
|非機能|耐障害（信頼性）|考慮されている|考慮されている|
||冗長化|可能|可能|
||運用・保守|設定ベースなので、保守がしやすく、ほとんどが管理コンソールからオンラインでメンテナンス可能|カスタマイズした分だけ、保守が複雑になり、オンラインでメンテナンスできるものに制限|
|その他|多言語化|標準搭載|要カスタマイズ開発|
||ドキュメント・マニュアル|充実している|充実している|
||コミュニティ|MLは数十件/月、コミュニティで開発されたコネクターいくつかあり<BR>※ 外部の人も含めたコミュニティ活動の活発さは今後に期待|フォーラムやメーリングリストはオープン時より存在するが、クローズドになってから、閑散としている|

## 「midPoint」の利用シーン
　「midPoint」の有効と思われる利用シーンを解説します。

### 老朽化した「IDMシステム」を「IGAシステム」にアップグレードする
　老朽化した「`IDM`システム」は、プロダクトの`EOL`に始まり、ビジネスの変化に伴う従業員や組織の増大、関連システムの多様化、アクセス権限の統制に関わるガバナンス強化といった「時代の変化」に直面していますが、柔軟に追従することは非常に困難になってきています。

　このような老朽化した「`IDM`システム」を「midPoint」にリプレイスすることにより、現状の「`IDM`システム」が提供する機能を維持しつつ「`IGA`システム」にアップグレードします。これにより、**今の時代にあった「IDガバナンス(ID統制)」を実現することが可能**になります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/207022/251077b0-0520-f6c9-e8ae-eab11ac94365.png)

### 「midPoint」+「Keycloak」を組み合わせ、強力な「統合認証基盤（IAM）」を実現する
　情報セキュリティの界隈では、「アイデンティティ/アクセス管理（Identity and Access Management）」を略して「`IAM`」呼ぶことが一般的ですが、アイデンティティ管理の「midPoint」とアクセス管理の「Keycloak」を組み合わせて、**大手IDクラウドサービス（`IDaaS`）以上の「統合認証基盤（`IAM`）」を実現することが可能**になります。

※大手IDクラウドサービス（`IDaaS`）の`IGA`の取り込みはこれからといった印象です
※必ずしも「Keycloak」である必要性はないのですが、`OSS`のメリットを最大限に引き出せます
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/207022/3fe236b7-547c-391b-cd5c-d8f30d6fb3bd.png)

## まとめ
　「midPoint」の概要はご理解いただけましたでしょうか。**「midPoint」は、「`IGA`」の分野において非常に強力な「`OSS`」**です。2日目以降は、「`IGA`」の主要な要素別に「midPoint」が搭載する機能とその設定方法について解説していきます。具体的にその強力な部分をご理解いただけると思いますので、乞うご期待！また、実績や実例に関する内容の日も予定していますので、合わせてお楽しみください！

※ カレンダーはこちら「[midPoint by OpenStandia Advent Calendar 2019](https://qiita.com/advent-calendar/2019/midpoint-by-openstandia)」

---
## 参考
[Evolveum社サイト](https://evolveum.com/)
※ Evolveum社の公式HP

[Practical Identity Management with MidPoint](https://evolveum.com/midpoint/midpoint-guide-about-practical-identity-management/)
※ 「mitPoint」を利用した実用的なID管理の概要が記載されています(midPointを知るにはまずこれを読もう！)

[midPoint Wiki](https://wiki.evolveum.com/display/midPoint/Home)
※ マニュアルも兼ねたwikiサイト

[GitHub - Evolveum/midpoint](https://github.com/Evolveum/midpoint)
※ ソースコード管理はこちらで行われています

[Jira - midPoint](https://jira.evolveum.com/)
※ インシデントや機能改善や新機能に関するチケットはこちらで管理されています