midPoint 最新情報 - 2024 Winter

# はじめに

[midPoint by OpenStandia Advent Calendar 2024](https://qiita.com/advent-calendar/2024/midpoint-by-openstandia) の最終日となる25日目は、 **「midPoint 最新情報 - 2024 Winter」** と題して、ここ数年のアップデート内容をまとめて紹介します。以前書いた同様の記事[「midPoint 最新情報 - 2021 Winter」](https://qiita.com/wadahiro/items/ae7f8ccc8cfb4ac4e0fd) から3年経ち、midPointにも多くの変化がありますので、あらためて最新情報を紹介します。

# リリース状況

2024年10月にリリースされたv4.9までのメジャーリリースについて記載しています。括弧内は各バージョンのサポート終了日になっています。

:::note info
実際は各メジャーバージョンごとに、メンテナンスリリースが行われています。詳細は [公式のリリースページ](https://docs.evolveum.com/midpoint/release/) を参照してください。
:::

* [midPoint 4.9](https://docs.evolveum.com/midpoint/release/4.9/): 2024/10/18 (〜2026/10/18)
* [midPoint 4.8](https://docs.evolveum.com/midpoint/release/4.8/): 2023/10/17 (〜2028/10/17) **LTS** :rocket:
* [midPoint 4.7](https://docs.evolveum.com/midpoint/release/4.7/): 2023/04/14 (〜2024/04/14)
* [midPoint 4.6](https://docs.evolveum.com/midpoint/release/4.6/): 2022/10/21 (〜2022/10/21)
* [midPoint 4.5](https://docs.evolveum.com/midpoint/release/4.5/): 2022/04/11 (〜2022/04/11)
* [midPoint 4.4](https://docs.evolveum.com/midpoint/release/4.4/): 2021/11/26 (〜2024/11/26) **LTS** :rocket:
* [midPoint 4.3](https://docs.evolveum.com/midpoint/release/4.3/): 2021/04/09 (〜2022/04/09)
* [midPoint 4.2](https://docs.evolveum.com/midpoint/release/4.2/): 2020/10/23 (〜2021/10/23)
* [midPoint 4.1](https://docs.evolveum.com/midpoint/release/4.1/): 2020/04/09 (〜2021/04/09)
* [midPoint 4.0](https://docs.evolveum.com/midpoint/release/4.0/): 2019/09/08 (〜2022/09/08) **LTS** :rocket:

v4.0〜v4.8までは、メジャーバージョンアップは半年に一度のペースで行われていました。ところがこのリリースサイクルポリシーがv4.8リリースの際に大きく変わりました。具体的には、以下のように変更となりました。

* メジャーバージョンのリリースサイクル： 半年 :arrow_forward: 1年
* メジャーバージョンのサポート期間： 1年 :arrow_forward: 2年
* メジャーバージョン（LTS）のサポート期間： 3年 :arrow_forward: 5年

1年に1回のメジャーバージョンリリースとなってしまいましたが、**サポート期間が＋1年（LTSの場合は＋2年）長くなり、これは実際に運用される方にとっては、非常にうれしいポイントかなと思います**。


:::note info
（少なくとも日本国内では）IDM/IGAシステムを頻繁にメジャーバージョンし続ける運用をしていくのは非常に大変、という話をこれまでEvolveum社にフィードバックしていましたので、このように改善されてことを大変ありがたく思います。また、これとは別に、NRI OpenStandiaとEvolveum社のパートナーシップ契約により、[日本向けの独自サブスクリプションモデルによる**10年サポート**も提供](https://openstandia.jp/oss_info/midpoint/)されています。
:::


# v4.5 〜 v4.8の新機能

v4.5 〜 v4.8 で追加された機能の中からピックアップしてここでは紹介します。現時点だとLTSであるv4.8を実際には導入するケースが多いと思いますので、一旦v4.8までに追加された機能に限定します。


## Identity Matching

https://docs.evolveum.com/midpoint/projects/idmatch/implementation/implementation/

日本語だと、「名寄せ」というと分かりやすいかもしれません。midPointが外部システムのデータと連携する場合、この名寄せが必要になるケースがあります。例えば以下のようなケースです。この時、midPointの中で管理しているユーザーと外部システム内のアカウントを何らかのロジックで名寄せして紐づける必要があります。

* 外部システムに既にアカウントが存在する中で、そのまま残しつつ、新たにmidPointからプロビジョニングするように連携したいケースで、その時、あるルールで名寄せを行い、midPoint内のユーザーと外部システムのアカウントを紐づけたい場合
* midPointで既にユーザーを管理している中で、新たに別の外部システムを源泉とし、追加の属性情報を取り込むようにしたいケースで、その時、あるルールで名寄せを行い、midPoint内のユーザーと外部システムのアカウントを紐づけたい場合

すべての外部システムが統一的にユニークで不変なユーザー名やメールアドレス、その他識別子などで管理されていれば、この名寄せは比較的容易です。しかし、そうではないシステムが往々にして存在します。この場合、例えば姓名などその他の属性を使って名寄せを行う必要があるかもしれません。非常に複雑なロジックになる可能性もあります。従来はこの名寄せ処理を、外部システムのアカウント情報からmidPoint内のユーザーを特定するためのクエリを記述することで実現していました。そのクエリ処理で1件ユーザーがヒットすれば、自動的に紐づけが行われます。2件以上だとユーザーを特定できないため、エラーとなるだけでした。

新しく導入された機能では、以下ができるようになりました。

* 名寄ロジックを外部サービスに委譲可能に：外部システムの属性情報をインプットとして外部サービスを呼び出し、結果としてマッチする候補ユーザー（0〜N件）を受け取ります
* 名寄せ結果として複数の候補ユーザーが存在する場合に、マニュアルケースを発行してワークフロー化を可能に：発行されたケースを管理者が判断して、最終的なユーザーを1名選択します


## OpenID Connect

https://docs.evolveum.com/midpoint/reference/support-4.8/security/authentication/flexible-authentication/modules/oidc/

midPointのGUIに対するログイン処理で、OpenID Connect（OIDC）を使い外部のアイデンティティープロバイダー（IdP）で認証できるようになりました。従来は、外部IdPを使ってmidPointにログインするには、以下の方式のみでした。

* SAML2.0を使う
* OIDCやその他認証連携プロトコルを使う場合は、midPointの前段にそのプロトコル対応のリバースプロキシをたてて、HTTPヘッダーで認証したユーザー識別子を連携し、midPointではHTTPヘッダー認証を行う

OIDCを使う場合でも、リバースプロキシなしにmidPoint単体で認証連携が可能になりました。

## Message Templates

https://docs.evolveum.com/midpoint/reference/support-4.8/misc/notifications/message-templates/

メール通知などで使えるメッセージ本文の管理機能が提供されうようになりました。従来は、通知処理の中でメッセージ本文を直接定義していました。これが、専用のメッセージ管理画面で件名と本文や添付ファイルを定義できるようになりました。また、多言語にも対応しており、言語ごとのメッセージも定義することが可能になっています。

## midPoint Query Language（Axiom query language）

https://docs.evolveum.com/midpoint/reference/support-4.8/concepts/query/midpoint-query-language/

midPointのクエリは、従来はXML形式のクエリを使って検索を行っていました。これに加えて、midPoint独自のクエリ言語が追加されました。

例えば、名が"太郎"のユーザーを検索する場合、`givenName = "太郎"`というクエリを書くことで表現できます。

この独自クエリ言語は、ユーザー一覧画面などの検索時にも利用できるようになっています。従来はここでXML形式のクエリを記述する必要があり、一般ユーザーが利用するのは非常に敷居が高いものでした。独自クエリ言語になり、使いやすくなったかと思います。


## New Resource Definition Wizard

https://docs.evolveum.com/midpoint/reference/support-4.8/admin-gui/resource-wizard/

midPointでは源泉システムやプロビジョニング先システムなど、外部システムと連携する際には、**リソース定義**を作成する必要があります。リソース定義を作成するためのGUIがリライトされました。新しいウィザード画面を使うと、簡単な接続定義であれば容易にセットアップ可能になっています。

新しくmidPointを使ってみたい、試してみたいユーザーにとっては、これは非常に有用かと思います。

**今回のAdvent Calendarの記事でも、この新しいGUIを使って解説していましたので、これまでお読みの方は見慣れた画面となっているはずです**。


:::note info
一方でmidPointに慣れたヘビーユーザーにとっては、GUIではなくXML設定ファイルで管理する方が、設定情報をGitリポジトリなどで管理できてCI/CDパイプラインによる自動デプロイが可能となり、マニュアルオペレーション起因のトラブル防止や、複数環境（本番/ステージング/開発など）への反映が容易といったメリットがあります。
:::

## New Request Access

https://docs.evolveum.com/midpoint/reference/support-4.8/admin-gui/request-access/

UX改善として、ロール要求のGUIがリライトされました。名前もロール要求から**アクセス要求**に変わりました。

ロールなどを要求する際に、チームメイトの情報を参照しつつ、そこから欲しいロールなどを選ぶことができるUIが新たに追加されています。これはmidPointを実際に運用していると、利用者からの要望として挙がってきたことがあったため、個人的にはうれしいポイントです。

**今回のAdvent Calendarの記事では、[3日目の記事「midPoint をデモ環境で試してみよう（その2）」](https://qiita.com/wadahiro/items/df964d32e28f3e3427d8)にてEvolveum社のデモ環境を使って、少し紹介しています。**


## Save Search Filters

https://docs.evolveum.com/midpoint/reference/support-4.8/admin-gui/gui-user-profile/

ユーザー一覧ページなどの検索条件を保存できるようなりました。よく使う検索条件を保存しておけば、便利に使うことができます。

## Smart Correlation

https://docs.evolveum.com/midpoint/reference/support-4.8/correlation/

名寄せの設定が新しくなりました。以前の方法だとXMLで直接定義が必要でしたが、GUIでできるようになりかなり簡単になりました。

**今回のAdvent Calendarの記事でも、この新しいGUIを使って解説していましたので、これまでお読みの方は見慣れた画面となっているはずです。また、[10日目の記事「midPoint における名寄せ処理](https://qiita.com/wadahiro/items/b22e8267cbc60ee1cc1b)」では、実際の動きとともに解説しています**。



## Resource Templates

https://docs.evolveum.com/midpoint/reference/support-4.8/resources/resource-configuration/inheritance/

リソースのテンプレート機能が追加されました。従来は、似たようなリソース設定はXML定義をコピー＆ペーストして作成することが多かったと思います。この新しい機能では、親となるリソース設定を事前に用意しておいて、それを継承して異なる部分だけを設定するような使い方が可能になりました。

使い所としては、例えば源泉システムがグループ会社や拠点ごとにある状況で、同じリソース定義の内容（例：同じCSVフォーマット）だけど接続先となるグループ会社や拠点が増えた時に素早く対応したい、といったユースケースでしょうか。


## Simulations

https://docs.evolveum.com/midpoint/reference/support-4.8/simulation/

midPointの様々な設定を変更した際に、どのような影響をmidPoint内のデータや連携先システムに与えるか、事前にシミュレートするための機能が追加されました。

**今回のAdvent Calendarの記事でも、ちょうど昨日の[24日目の記事](https://qiita.com/wadahiro/private/483077445f378191b538)で解説していますので、詳細はそちらを参照してください。**

以下のWebinar動画もあります。

<iframe width="1160" height="653" src="https://www.youtube.com/embed/egVzcbGp-VM" title="Simulations Webinar" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>


## Object Marks

https://docs.evolveum.com/midpoint/reference/before-4.8/mark/

オブジェクトマークは、特定のオブジェクトにマーキングするための機能で、GUIで明示的に付与したりポリシーに従って自動的に付与することできます。現状はShadowオブジェクトを対象にした機能になっています。

マーキングの種類にはいくつかあり、マークされたShadowオブジェクト（と紐づく実際のリソース）を完全に保護するものや、インバウンドマッピングやアウトバウンドマッピング、名寄せ（Correlation）などを制御するものなどがあります。

これだけだと何を目的とした機能なのか、非常に分かりにくいと思いますが、シミュレーション機能と組み合わせて既存のリソースとmidPointを新たに接続してマイグレーションする際に役立ちます。英語にはなりますが、以下の「Group Management with MidPoint Webinar」というWebinarを見ると（最新の4.9の機能も使っていますが）、オブジェクトマークを使ったマイグレーションのデモを見ることができます。

<iframe width="1160" height="653" src="https://www.youtube.com/embed/4CdhXfSm2dA?start=447" title="Group Management with MidPoint Webinar" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>


## Role Mining

https://docs.evolveum.com/midpoint/reference/support-4.8/roles-policies/mining/

ロールマイニングは現状のアプリケーションロールを分析し、そこから抽象度の高いビジネスロールを抽出するための支援機能です。こちらもWebinar動画がありますので、見るとどのような動きなのか確認することができます。

<iframe width="1160" height="653" src="https://www.youtube.com/embed/20o_m-3A3qI" title="Role Mining in MidPoint: Transformative Access Governance Webinar" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>


## Identity Recovery

https://docs.evolveum.com/midpoint/reference/support-4.8/security/credentials/identity-recovery/

アイデンティティーリカバリー機能は、エンドユーザーがログイン名を忘れてmidPointにログインできなくなった際に、それをリカバリーするための機能です。セルフサービスのリカバリー手段として、使うことができます。仕組みとしては、エンドユーザーに姓名や誕生日などの属性情報をいくつか入力していただいて、それを元に名寄せを行い、ログイン名をお伝えするようになっています。

企業内でmidPointを使う場合は、この機能を活用するユースケースを個人的には思いつかないのですが、ドキュメントを見ていると大学での導入を例にした記述になっており、アカデミックな組織だと必要になるケースがあるのかもしれません。



# v4.9 の新機能

ここからは、最新のv4.9で追加された新機能をピックアップして紹介します。詳細は[リリースノート](https://docs.evolveum.com/midpoint/release/4.9/)を確認してください。

## Shadow Caching

https://docs.evolveum.com/midpoint/reference/support-4.9/resources/attribute-caching/

その名のとおり、Shadowオブジェクトをキャッシュするための機能です。

Shadowオブジェクトについては、**今回のAdvent Calendarの記事では[2日目の「midPoint をデモ環境で試してみよう（その1）」](https://qiita.com/wadahiro/items/7b68b087e6beab1374fd#%E3%82%A2%E3%82%AB%E3%82%A6%E3%83%B3%E3%83%88)にて簡単にですが解説していました**。そこでは以下のように述べていました。

> アカウントの「名前」箇所がリンクになっていますが、ここをクリックするとShadowオブジェクトの詳細を参照できます。この時、プロジェクションの詳細と同じように、外部システムのアカウント詳細を参照することができます。つまり、コネクターを通じて外部システムへの参照処理が行われています。

Shadowオブジェクトの実体は、外部システム側のデータのプライマリキーとセカンダリキーのみを保持したオブジェクトです。よって、詳細を確認しようとすると都度、外部システムへのアクセスが必要になるわけです。これが、v4.9ではShadowオブジェクトにその他の属性情報がデフォルトでキャッシュされるようになりました。

従来の必ず外部システムを参照する方式では、向こうが頻繁にダウンしていたり、性能が遅かったりするとmidPointに悪影響を与えることがあるため、このようなキャッシュ機能がデフォルトとなった模様です。


## Secrets Providers

https://docs.evolveum.com/midpoint/reference/support-4.9/security/credentials/secrets-provider-configuration/

midPointは様々なシークレット値を扱います。よく使うのが、リソース設定にて設定する接続先システムのシークレット情報（接続のためのパスワードやAPIキー、アクセストークンなど）です。これらは暗号化されてmidPointのDBに保存されますが、昨今ではクラウド環境のコンテナ管理基盤上にmidPointをデプロイする場合は、クラウドのシークレット管理サービスを使って管理したくなります。特に、CI/CDパイプラインによるmidPointコンテナの自動デプロイを実施する場合、XMLファイル内にシークレットを埋め込むのを避けるために必要です。まさにそれを叶える機能です。

:::note info
v4.8までだと、midPointコンテナの起動時のスクリプト処理でクラウドのシークレット管理サービスの内容を取得して、それをmidPointにインポートするXMLファイルに埋め込むといった処理を自作する必要がありましたが、その部分が簡略されそうです。
:::


## Shadow Associations

https://docs.evolveum.com/midpoint/reference/support-4.9/resources/entitlements/

リソースのアソシエーション設定が強化され、今まではオブジェクトタイプに属して定義していましたが、オブジェクトタイプと独立した形で集約して定義する形に変わりました。また、[設定のための新しいGUI](https://docs.evolveum.com/midpoint/reference/support-4.9/admin-gui/resource-wizard/#association-type-configuration)も用意されました。

**アソシエーションについては、今回のAdvent Calendarの記事では[18日目の「midPoint からActive Directoryにプロビジョニングする（グループメンバーシップ編）」](https://qiita.com/wadahiro/items/1d08f72a974566f42069)で詳しく解説していました。** v4.9でもアソシエーションの概念は変わっていませんが、〜v4.8と異なり設定方法が大きく変わってしまったため注意が必要です（これまでの設定方法もまだサポートはされています）。

まだ自分も検証中ではありますが、従来はアソシエーションの設定がリソース設定とプロビジョニングのためにアサインするロール内に散らばって設定が必要でしたが、新方式ではリソース設定の1箇所で設定できるようになっていそうです。

:::note info
v4.9における新しいアソシエーションの設定方法については、どこかでフォローアップ記事を書きたいと思います。
:::

## Schema Extension

https://docs.evolveum.com/midpoint/reference/support-4.9/schema/custom-schema-extension/

スキーマ拡張（拡張属性の追加など）の機能が強化されました。従来は、xsdファイルを作成して所定のディレクトリに配置し、midPointの再起動が必要でした。v4.9では新しくGUIでの設定がサポートされ、再起動の必要なく即座に反映されるようになりました。

**スキーマ拡張そのものについては、今回のAdvent Calendarの記事では[21日目の「midPoint に拡張属性を追加する](https://qiita.com/wadahiro/items/2c7a41355e2aaf065000)」で詳しく解説していますので、そちらも参考にしていただければと思います。** 


## Access Certification New UI

https://docs.evolveum.com/midpoint/reference/support-4.9/roles-policies/certification/

アクセス認定（いわゆる権限の棚卸し）のUIがリライトされました。こちらもWebinar動画がデモを見ることができますので、どのようなUIに改善されたかよく分かるかと思います。

<iframe width="1280" height="720" src="https://www.youtube.com/embed/Nyz_YnLDiVQ" title="The Power of Access Certification Webinar" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>


# v4.9以降のロードマップ

https://docs.evolveum.com/midpoint/roadmap/

上記にロードマップの記載があります。v4.10 (2025年10月01日リリース予定) としては以下が予定されているようです。より発展的なユースケースに対応した機能の予感がします:muscle:

* Approval Improvements
* Risk Management
* Advanced Identity Analytics
* Advanced Lifecycle Management

# 2024年のイベント振り返り

2024年のmidPointに関するイベントを振り返ると、1月末にコペンハーゲンで開催された[TIIME Unconference](https://tiime-unconference.eu/sessions-2024/)というアイデンティティー系カンファレンスのサイドベントで開催された**MidPoint Working Group**がありました。以下に、Evolveum社のBlogでのイベント紹介記事があります。

https://evolveum.com/evolveums-journey-to-the-tiime-unconference-midpoint-working-group/

このイベントには筆者も参加させていただきました。Evolveum社の開発者、世界各地のmidPointを導入しているパートナー企業、顧客企業の方々を中心に参加されていました（南米から参加されている方もいらっしゃいました）。中々普段接する機会がない、他のmidPoint利用者と直接交流できたことは非常に貴重な経験となりました。

休憩時間中もEvolveum社のエンジニアの周りに皆あつまって色々相談させていただきました。その場でデバッグが始まるなんてことも:smile:

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/35233/8df71256-cbe5-ef3b-2ee3-f0cb679f5865.png)


MidPoint Working Group以外のイベントとしては、本記事でところどころ紹介したWebinarが今年もたくさん開催されていました。各Webinarのサマリーを、[Blogページ](https://evolveum.com/blog/)で見ることができます。



# 2025年のイベント予定

今後のイベント予定は、 Evolveum社のサイトの[Upcoming Eventsページ](https://evolveum.com/upcoming-events/)で公開されています。2025年は、早速2つの大きなイベントがあります:bangbang:

1つ目は、ドイツ/ベルリンで開催される、ヨーロッパ最大のアイデンティティーカンファレンスである[EIC（European Identity and Cloud Conference）2025](https://www.kuppingercole.com/events/eic2025)（2025/05/06〜09）です。2023年に続いて、Evolveum社はSilver Sponsorとして参加されるようです。midPointのセッションも何かしらあると思われます。

もう1つは、開催日がEIC 2025の翌週（2025/05/12〜14）と立て続けではありますが、[MidPoint Community Meetup 2025](https://evolveum.com/midpoint-community-meetup-2025/)の開催が決まりました:bangbang:
場所はスロバキア/ブラチスラバになります。まだ未確定部分はありますが、[アジェンダも公開](https://evolveum.com/wp-content/uploads/midpoint-community-meetup-2025.pdf)され始めています。こちらも非常に楽しみなイベントになりそうです。



# まとめ

[midPoint by OpenStandia Advent Calendar 2024](https://qiita.com/advent-calendar/2024/midpoint-by-openstandia) の最終日である25日目は、v4.5から最新のLTSであるv4.8までの主要なアップデート情報と、そして最新のFeature Releaseである、v4.9の最新情報をまとめました。その他、コミュニティイベントの情報もお伝えしました。引き続き新情報をキャッチアップし、有用な情報を皆様にお伝えできればと思います。


# おわりに

**ここまで読んでいただき、ありがとうございます:bow:
無事にAdvent Calendarを25日間完走することができました。**

当初の予定と大分変わってしまったところもありますが、重要だと思うところを中心にチュートリアル形式である程度まとまった形で提供することができたかなと思います。今回の一連の記事が、midPointを触ってみたい方に役立てば幸いです！