こんにちは。Azure Integration サポート チームの 飯野 です。
Azure Monitor のアクション グループは、Azure Monitor のデータをもとにインフラストラクチャやアプリケーションに問題が発生したことを検知した際に、アラートをトリガーするための機能です。
アラートがトリガーされたときに実行されるアクションのうち、ロジック アプリを呼び出すことができるアクションとして [ロジック アプリ] と [セキュリティ保護された Webhook] の 2 種類がございます。
この記事では Azure Monitor のアクション グループからロジック アプリを呼び出す際に [セキュリティで保護された Webhook] アクションを利用するシナリオと、その際に必要となる手順をご紹介します。
目次
アクション グループからの呼び出しの受信トリガー
セキュリティで保護された Webhook の設定方法
- 保護された Web API 用の Microsoft Entra アプリケーションを作成
- ロジック アプリ側で [Azure Active Directory 承認ポリシー] を設定
- ロジック アプリのエンドポイント URL を取得
- アクション グループを設定
- アクション グループが Microsoft Entra アプリケーションを使用できるようにするための PowerShell スクリプトを実行
アクション グループからの呼び出しの受信トリガー
アクション グループから従量課金タイプのロジック アプリを呼び出す際、通常は認証方法を意識することなく、アクション グループの [アクション タイプ] に [ロジック アプリ] を選択いただいてから、呼び出し先のロジック アプリを指定されてアクション グループからロジック アプリを呼び出すことが多いかと思います。
この場合、内部的にはロジック アプリの [When a HTTP request is received] トリガーに設定されているエンドポイント URL に対するリクエストが送信されています。
エンドポイント URL 文字列にはアクセス キーを利用した SAS (共有アクセス署名) 認証情報が含まれており、 [ロジック アプリ] を選択した場合のロジック アプリの呼び出しは SAS 認証によって行われることとなります。
従量課金ワークフローの [When a HTTP request is received] トリガーのエンドポイント URL の呼び出しに利用できる認可方式は、以下セクションの記載のとおり、Microsoft Entra ID を使用した OAuth 2.0 または Shared Access Signature (SAS) のいずれか 1 つのみとなります。
このため、アクション グループからロジック アプリを呼び出す際の認証方法として SAS 認証を回避したい場合、アクション タイプに OAuth 認証による呼び出しを行う [セキュリティで保護された Webhook] を選択することとなります。
[セキュリティで保護された Webhook] アクションを利用する場合、OAuth 認証の利用のためには事前設定が必要となります。
その設定手順の詳細をご説明いたします。
セキュリティで保護された Webhook の設定方法
アクション グループで [セキュリティで保護された Webhook] をを選択して呼び出すためには、Webhook 配信をセキュリティで保護するための Microsoft Entra Webhook アプリケーション ロールのメンバーにサービス プリンシパルを作成し、ロジック アプリ側では OAuth 認証を認証方法として設定しておく必要がございます。
設定手順につきましては以下の公開情報もございますので、併せてご確認ください。
Azure Monitor のアクション グループ - Azure Monitor | Microsoft Learn # セキュリティで保護された Webhook の認証を構成する
おおまかな手順は以下となります。
- 保護された Web API 用の Microsoft Entra アプリケーションを作成
- ロジック アプリ側で [Azure Active Directory 承認ポリシー] を設定
- ロジック アプリのエンドポイント URL を取得
- アクション グループを設定
- アクション グループが Microsoft Entra アプリケーションを使用できるようにするための PowerShell スクリプトを実行
以降から詳細をご説明します。
1. 保護された Web API 用の Microsoft Entra アプリケーションを作成
[Microsoft Entra ID] - [管理 - アプリの登録] と遷移し、 [+ 新規登録] を選択します。
アプリケーションを作成しましたら、以下のように [概要] を開き、[アプリケーション ID の URI の追加] を選択します。
以下の画面の [追加] を選択し、表示されます [アプリケーション ID の URI] をコピーして控えておき、そのまま保存します。
ディレクトリ(テナント) ID とアクセス トークンの形式についても確認しておきます。
ディレクトリ(テナント) ID :
登録したアプリの [概要] ページにてコピーのうえ、テキスト エディタなどに貼り付けて控えておきます。
アクセス トークンの形式 :
アプリ登録のマニフェストの AccessTokenAcceptedVersion の値の確認し、アクセス トークンの形式を判断します。
1 または null の場合:アクセス トークンの形式は v1
2 の場合:アクセス トークンの形式は v2 となります。
以下の技術情報もご参考いただけます。
Microsoft ID プラットフォームのアクセス トークン - Microsoft identity platform | Microsoft Learn # トークンの形式
このセクションで確認した [アプリケーション ID の URI]、[ディレクトリ(テナント) ID]、[アクセス トークンの形式] は、後述のロジック アプリ側における [Azure Active Directory 承認ポリシー] の設定時に使用します。
2. ロジック アプリ側で [Azure Active Directory 承認ポリシー] を設定
[ロジック アプリ] - [<対象の ロジック アプリ>] - [設定 – 認可] と遷移し、 [ポリシーの追加] を選択し、以下の値を設定します。
[ポリシー名] : 任意
[ポリシー タイプ] : AAD
[クレーム] : 以下のクレーム名と設定内容の組み合わせを指定します。[標準要求の追加] で、クレーム名とクレームの値の行を追加することができます。
[issuer] :
アクセス トークンの形式が v1 の場合は https://sts.windows.net/{テナントID}/
アクセス トークンの形式が v2 の場合は https://login.microsoftonline.com/{テナントID}/v2.0
[audience] : api://XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX の形式の文字列
アクセス トークンの形式が v1 の場合の [issuer] に指定する文字列の末尾が / で終了することにご注意ください。
[audience] には 手順 1. で控えたアプリケーション ID の URI を指定します。
上記を設定して [保存] します。
アプリ登録時にマニフェストにて確認したトークンの形式によって issuer (発行者) の設定値が異なることについて、以下の公開技術情報の記載がご参考いただけます。
ワークフロー内のアクセスとデータをセキュリティで保護する - Azure Logic Apps | Microsoft Learn # Microsoft Entra ID を使用した OAuth 2.0 を有効にする前の考慮事項
— 抜粋 —
承認ポリシーには少なくとも発行者のクレームが含まれている必要があります。
その Microsoft Entra ID の発行者の値は、https://sts.windows.net/ または https://login.microsoftonline.com/ (OAuth V2) のいずれかで始まります。
— 抜粋 —
ロジック アプリにおける AAD ポリシーの有効化手順については、以下の公開技術情報がご参考いただけます。
Azure AD OAuth を有効にする前の考慮事項 # ロジック アプリに対して OAuth Azure AD を有効にする
3. ロジック アプリのエンドポイント URL を取得
[ロジック アプリ] - [<対象の ロジック アプリ>] - [開発ツール] - [ロジック アプリ デザイナー] と遷移し、 [HTTP 要求の受信時] トリガーを開き、URL を取得します。
取得した URL をメモ帳等に貼り付けます。
SAS 認証のために使用されるパラメーター値は AAD 認証の場合には不要となるため、削除します。
具体的には以下のように SAS 認証情報を含む URL 文字列から水色箇所を削除し、黄色箇所のみとなるようにします。
このセクションで解説したロジック アプリのエンドポイント URL の取得手順は、以下技術情報もご参考いただけます。
ワークフロー内のアクセスとデータをセキュリティで保護する - Azure Logic Apps | Microsoft Learn # 従量課金ロジック アプリ リソースに Microsoft Entra ID を使用した OAuth を有効にする
4. アクション グループを設定
Azure Monitor 側のアクション グループを開き、以下のように [アクション] - [アクション タイプ] - [セキュリティで保護された Webhook] を選択します。[セキュリティで保護された Webhook] 画面にて前述の手順で確認した内容を以下のように指定します。
[オブジェクト ID] : 手順 1. で登録したアプリケーションを指定します。
(アプリの登録直後でまだドロップダウン リストの候補に表示されない場合、登録が反映されるまで時間を置いてから再度お試しください。)
[URI] : 手順 3. で SAS 認証の情報を削除した URL を指定します。
なお、アクション グループで [セキュリティで保護された Webhook] アクションを作成または変更できるようにするには、
Microsoft Entra アプリケーションの所有者ロールをサービス プリンシパルに割り当てる必要があります。
Azure Monitor のアクション グループ - Azure Monitor | Microsoft Learn
以下は上記技術情報からの抜粋となります。
5. アクション グループが Microsoft Entra アプリケーションを使用できるようにするための PowerShell スクリプトを実行
以下の技術情報のセクションの手順に従い、スクリプトを実行します。
Azure Monitor のアクション グループ - Azure Monitor | Microsoft Learn # Secure Webhook PowerShell スクリプト
前提条件として以下技術情報の Microsoft Graph PowerShell SDK を作業端末にインストールしておく必要がございます。
Install the Microsoft Graph PowerShell SDK | Microsoft Learn
スクリプトの実行方法は以下となります。
Azure Monitor のアクション グループ - Azure Monitor | Microsoft Learn #実行手順
- 以下のスクリプトをコピーして作業端末上でテキスト エディタに貼り付け、tenantId と、アプリ登録の ObjectID を置き換えます。
tenantId と アプリ登録の ObjectID の文字列は 登録したアプリの [概要] ページにて [ディレクトリ(テナント) ID] と [オブジェクト ID] にてご確認いただけます。 - *.ps1 ファイルとして任意の名称でファイルを保存します。
- 作業端末上で PowerShell コマンドを開き、*.ps1 スクリプトを実行します。
1 | Write-Host "=================================================================================================" |
このスクリプトの実行は Microsoft Entra アプリケーション管理者ロールが割り当てられているユーザーが行う必要があります。
まとめ
本記事では、以下についてご案内いたしました。
- アクション グループからの呼び出しの受信トリガー
- セキュリティで保護された Webhook の設定方法
おおまかな手順として以下をご案内いたしました。
- 保護された Web API 用の Microsoft Entra アプリケーションを作成
- ロジック アプリ側で [Azure Active Directory 承認ポリシー] を設定
- ロジック アプリのエンドポイント URL を取得
- アクション グループを設定
- アクション グループが Microsoft Entra アプリケーションを使用できるようにするための PowerShell スクリプトを実行
ご理解の一助として、本記事が少しでもお役に立ちましたら幸いです。最後までお読みいただき、ありがとうございました!
※本情報の内容(添付文書、リンク先などを含む)は、作成日時点でのものであり、予告なく変更される場合があります。