🌟

Event Gridを使ってEntra IDのイベントをサブスクライブする

2024/07/20に公開

概要

Azure Event Grid では Microsoft Entra イベントとして Entra ID でのユーザーやグループの作成や更新などをイベントとしてサブスクライブできます。

https://learn.microsoft.com/ja-jp/azure/event-grid/microsoft-entra-events

本記事では、実際に Event Grid で Entra ID のイベントをサブスクライブする手順を紹介します。

リソースグループの作成

今回の手順で作成するリソースを管理するリソースグループを作成しておきます。

az group create -l japaneast -n rg-entra-id-event-grid

Event Grid パートナートピックの設定

Azure ポータルで Evnet Grid のリソース画面に遷移します。
サイドバーより「パートナーイベント」→「利用可能なパートナー」を選択します。

ここで「Microsoft Entra ID」の「作成」を選択します。

「Microsoft Graph API サブスクリプション」タブでは以下の情報を入力します。
ここでは Entra ID のグループのイベントを取得するためにリソースパスに「groups」を入力していますが、「users」を指定することで Entra ID のユーザーのイベントを取得できます。

項目
リソースグループ rg-entra-id-event-grid
場所 Japan East
パートナートピック名 entra-id-topic
リソースパス groups
種類を変更する 更新済み, 削除されました
有効期限 7日間
クライアントの状態 -
ライフサイクルイベントを有効にする -

「パートナーの構成」タブでは「+パートナーの承認」ボタンを押下し、「MicrosoftGraphAPI」を追加します。

入力が完了したら「作成」ボタンを押下します。
パートナートピックの作成が完了すると以下のような画面になります。

関数アプリ(Azure Functions)の用意

Event Grid トリガーの関数アプリ(Azure Functions)を用意しておきます。

関数アプリのリソースで「+作成」ボタンを押下し、関数アプリを作成します。
ホスティングプランは「消費」を選択しておきます。

ランタイムはとりあえず Python で関数アプリ名は「entra-id-event-handler」としておきます。

関数アプリのリソースの作成が完了したら、Event Grid トリガーの関数を作成しておきます。
ソースコードはサンプルのままにしておきます。

関数の用意ができたら、関数アプリは以下のような画面になります。

イベントサブスクリプションの作成

先に作成した Event Grid のパートナートピックのリソースでイベントサブスクリプションを作成します。

項目
名前 entra-id-group-subscription
イベントスキーマ クラウドイベントスキーマv1.0
ソースリソース entra-id-topic
イベントの種類のフィルター -
エンドポイントのタイプ Azure 関数
エンドポイント EntraIDGroupHandler

Entra ID のグループ作成

Event Grid でイベントが取得できるかをテストするために Entra ID でグループを新規に作成します。

Entra ID のグループから「新しいグループ」を押下し、以下のようにテストのグループを作成します。

関数アプリの呼び出しの確認

関数アプリのリソースに遷移し、関数EntraIDGroupHandlerの呼び出しを確認します。
きちんとリソースが組めていれば、Entra ID のグループの作成によってイベントが記録されています。

Microsoft Graph API サブスクリプション の有効期限

Microsoft Graph API のパートナートピックには有効期限があります。
この有効期限は Event Grid リソースから更新ができます。

有効期限は最大で 29 日間なので注意が必要です。

https://learn.microsoft.com/en-us/graph/api/resources/subscription?view=graph-rest-1.0&WT.mc_id=Portal-fx#subscription-lifetime

まとめ

Event Grid で Entra ID のイベントをサブスクライブする手順を実際にやってみました。
うまく使うことで、企業においてユーザー管理などのフローをアプリケーションと連携させるなどのユースケースに対応できそうです。

ただし Microsoft Graph API の認可で有効期限があるので運用時は注意が必要です。

Discussion