Event Gridを使ってEntra IDのイベントをサブスクライブする
概要
Azure Event Grid では Microsoft Entra イベントとして Entra ID でのユーザーやグループの作成や更新などをイベントとしてサブスクライブできます。
本記事では、実際に 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 日間なので注意が必要です。
まとめ
Event Grid で Entra ID のイベントをサブスクライブする手順を実際にやってみました。
うまく使うことで、企業においてユーザー管理などのフローをアプリケーションと連携させるなどのユースケースに対応できそうです。
ただし Microsoft Graph API の認可で有効期限があるので運用時は注意が必要です。
Discussion