midPointとIGA

今年もこの季節がやってまいりました。本年もOpenStandiaでAdvent Calendarを書いていきます。今年は特にテーマは決めずOpenStandiaのメンバが興味のある技術について25日間書いていきますのでよろしくお付き合いください！

# midPointについて
ということで、1日目はmidPointの話題です。midPointについては、一昨年のAdvent Calendar、昨年のAdvent Calendar、その他、折に触れて、OpenStandiaメンバが記事投稿しているのでご存知の方も多いかもしれません。

2019年のAdvent Calendar
https://qiita.com/advent-calendar/2019/midpoint-by-openstandia

2020年のAdvent Calendar
https://qiita.com/advent-calendar/2020/nri-openstandia

また、最近ですと、クラウドネイティブさん主催の須藤あどみん対談でご紹介させてもらって知って頂いた方もいるかもしれません。

2021年10月29日公開　midPoint VS 須藤あどみん
https://www.youtube.com/watch?v=Bd4tRJz9vjI

# IGAについて
midPointの説明をする際に、`オープンソースのIGAプラットフォームである`という言葉をよく使います。IGAという言葉もこの1年ですごく広まったような実感がありますが、
・これまでのID管理と何が違うの？
・実際の製品の機能なの？
という疑問がわくこともあると思います。

OpenStandiaチームではよく下記のようなベン図を使ってIGAの概念を説明しています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/208260/bf0f467f-ef5e-1245-c35b-0856f3e84f13.png)

# Evolveum社から見たIGA

midPointの開発元であるEvolveum社は最近ドキュメントの整備に力を入れており、各種技術ドキュメントを以下のページに集約しています。
https://docs.evolveum.com/

上記の中でIGAの説明、midPointの説明についてわかりやすい解説ページを公開していますのでここで紹介させて頂きます。
https://docs.evolveum.com/iam/iga/

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/208260/a52e4665-ff84-7709-58f6-de9a05828eee.png)

このページをご一読と頂くとIGAって何なの？がさらに少しすっきりするかもしれません（少なくとも私はふむふむとなりました）。ここでは`Architecture`セクションを抜粋して日本語訳にて内容をご紹介したいと思います。

> Identity governance and administration (IGA) systems are part of IT infrastructure layer. They provide essential services, managing and monitoring identity-related information in applications and identity data stores. IGA systems are policing identity data, making sure that they are up-to-date and consistent, applying policies, detecting identity-related security issues, assessing identity-related risk and provide essential visibility and analytics functions.

（日本語訳）
IDガバナンス＆管理（IGA）システムは、ITインフラストラクチャ層の一部です。 これらは重要なサービスを提供し、アプリケーションおよびIDデータストア内のID関連情報を管理および監視します。IGAシステムは、IDデータのポリシー定義を可能にします。IDデータが最新で一貫していることを確認し、ポリシー適用し、ID関連のセキュリティ問題を検出し、ID関連のリスクを評価し、必要不可欠な可視性と分析機能を提供します。

> IGA platform has two primary functions, which result in two primary data flows:

（日本語訳）
IGAプラットフォームには2つの主要な機能があり、その結果、2つの主要なデータフローを実現します。

> Identity administration (identity management) is focused on management of user accounts and entitlements, often based on authoritative data, such as data from the human resource (HR) system. In order to fulfill this function, IGA platform has to read data from source systems (e.g. HR), process them, and write data to target systems (e.g LDAP, Active Directory and applications).

（日本語訳）
ID管理は、ユーザーアカウントと資格の管理に重点を置いており、多くの場合、人事（HR）システムからのデータなどの信頼できるデータに基づいています。この機能を実行するために、IGAプラットフォームは、源泉システム（HRなど）からデータを読み取り、それらを処理し、ターゲットシステム（LDAP、Active Directory、アプリケーションなど）にデータを書き込む必要があります。

> Identity governance is focused on application of policies on identity data, driving identity-related processes, gathering identity and entitlement information, analyzing it, assessing the risks and suggesting policy improvements. In order to fulfill this function, IGA platform needs (direct) read access to all connected systems, retrieving and analysing all identity-related data (accounts, groups, roles and other entitlements, organizational structures and so on). IGA platform occasionally writes the information, e.g. in order to remedy policy violations (e.g. disabling access for orphaned account).

（日本語訳）
IDガバナンスは、IDデータへのポリシーの適用、ID関連のプロセスの推進、IDおよび資格情報の収集、分析、リスクの評価、およびポリシーの改善の提案に重点を置いています。この機能を実行するために、IGAプラットフォームは、接続されているすべてのシステムへの（直接）読み取りアクセス、すべてのID関連データ（アカウント、グループ、役割、その他の資格、組織構造など）の取得と分析を必要とします。 IGAプラットフォームは上記を実現するため情報を書き込むことがあります（例、孤立したアカウントへのアクセスを無効にするなどポリシー違反を修正するため）。

いかがでしょうか？IGAが従来のID管理にガバナンス面の考え方をアドオンして整理された概念であることがわかりやすく記述されているかと思います。

あともう1つID管理とIDガバナンスの違いを表形式でシンプルに説明したページがあるのでこちらもご紹介させて頂きます。

https://docs.evolveum.com/iam/iga/what-is-identity-governance/

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/208260/c8e63a89-df5a-7dae-8598-72df67d54ebc.png)

ID管理、IDガバナンスをターゲットレイヤ（テクノロジー v.s. ビジネス）やターゲットユーザなどの観点で端的に整理した非常にわかりやすい表現だなと思っています。


# IGAを実現するmidPointの機能について

昨今、様々なベンダからIGAに対応したサービスやソリューション、プロダクトが提供されています（もちろんmidPointもその1つです）。この種の製品群の比較をするにあたり比較軸に困ることが多いと感じていました。IGAの10要素を機能比較軸にすればどの製品にも"○"がついてよくわからないという話です。Evolveum社もこのことは理解していて、IGA⇒IGAを実現する仕組み（いわゆる製品機能）は1対1でマッピングできるようなものではないと説明しています。

> IGA capabilities described above provide "tangible" functions, functionality that is obvious to users of the system. However, there are many mechanisms and underlying infrastructure that is used to implement such functions. Following mechanisms are difficult to categorize to any specific capability, as they are almost always reused by many capabilities.

（日本語訳）
IGA機能は、システムユーザーにとって明らかに「具体的な」機能を提供します。 そして、IGAを実装するために、多くのメカニズムと基盤となるインフラストラクチャが存在します。これらのメカニズムは多くの機能で再利用されるため、特定の機能に分類するのは困難です。

midPointでは下記の仕組みを使ってIGA機能群を実装しています。これらの仕組みについてこれまでのQiita投稿でご紹介できている部分もあればまだ全くご紹介できていない部分もあります。今年のアドベントカレンダーなどでもいくつかご紹介できるかもしれませんので楽しみにしてください！

+ Generic Mechanisms and Infrastructure
  + Attribute mapping
  + Expressions
  + Schema management
  + Identity connectors
  + Customization mechanisms
  + Services (API) and integration
  + Logging and diagnostics
+ Related Capabilities
  + Access control evaluation and enforcement
  + Organizational structure management
  + Personal data protection

# 最後に
それでは25日間、よろしくお願いいたします！