Azure Monitor で Azure AD B2C を監視する
Azure Monitor を使用して、Azure Active Directory B2C (Azure AD B2C) のサインインと監査ログをさまざまな監視ソリューションにルーティングします。 そのログを、長期的な使用のために保持したり、サードパーティのセキュリティ情報およびイベント管理 (SIEM) ツールと統合して環境の分析情報を取得したりすることができます。
ログ イベントは次の場所にルーティングできます。
- Azure ストレージ アカウント。
- Log Analytics ワークスペース (データの分析、ダッシュボードの作成、特定のイベントに対するアラートの作成を行う)。
- Azure イベント ハブ (Splunk および Sumo Logic のインスタンスと統合できます)。
Azure AD B2C のログを別の監視ソリューションまたはリポジトリに転送することを計画している場合は、Azure AD B2C に個人データが含まれていることを考慮してください。 このようなデータを処理する場合は、個人データに対して適切なセキュリティ対策を確実に講じてください。 これには、適切な技術的または組織的な手段を使用した、未承認または違法な処理に対する保護が含まれます。
この記事では、Azure Log Analytics ワークスペースにログを転送する方法について説明します。 そうすると、ダッシュボードを作成したり、Azure AD B2C ユーザーのアクティビティに基づいてアラートを作成したりできるようになります。
Azure Monitor を使用して Azure AD B2C の監視を構成する方法については、次のビデオをご覧ください。
デプロイの概要
Azure AD B2C では、Microsoft Entra ID 監視が使用されます。 Microsoft Entra テナントとは異なり、Azure AD B2C テナントにはサブスクリプションを関連付けることはできません。 そのため、Azure AD B2C とログの送信先である Log Analytics 間の統合を有効にするには、追加の手順を行う必要があります。 Azure AD B2C テナント内の Microsoft Entra で "診断設定" を有効にするには、Azure Lighthouse を使用してリソースを委任します。これにより、Azure AD B2C (サービス プロバイダー) が Azure AD (顧客) のリソースを管理できるようになります。
ヒント
Azure Lighthouse は、通常、複数の顧客のリソースを管理するために使用されます。 ただし、ここで行うように (ここでは 1 つのリソース グループの管理を委任しているだけですが)、複数の Microsoft Entra テナントを持つ企業内でのリソース管理に使用することもできます。
この記事の手順を完了すると、新しいリソース グループ (ここでは azure-ad-b2c-monitor と呼ばれます) を作成し、ご自身の Azure AD B2C ポータル内の Log Analytics ワークスペースが含まれる、そのリソース グループにアクセスできるようになります。 また、Azure AD B2C から Log Analytics ワークスペースにログを転送することもできます。
このデプロイ中、Azure サブスクリプションが含まれるテナント内の Log Analytics ワークスペース インスタンスを構成するために、Azure AD B2C ディレクトリでユーザーまたはグループを承認します。 認可を作成するには、Log Analytics ワークスペースが含まれるサブスクリプションに、Azure Resource Manager テンプレートをデプロイします。
次の図は、Microsoft Entra ID と Azure AD B2C のテナントで構成するコンポーネントを示しています。
このデプロイ中に、ログが生成される Azure AD B2C テナントを構成します。 また、Log Analytics ワークスペースがホストされる Microsoft Entra テナントも構成します。 使用される Azure AD B2C アカウント (ご自身の管理者アカウントなど) には、Azure AD B2C テナント上で全体管理者ロールが割り当てられている必要があります。 デプロイの実行に使用される Microsoft Entra アカウントには、Microsoft Entra サブスクリプション内で所有者ロールを割り当てる必要があります。 また、説明に従って各手順を完了するときに、正しいディレクトリにサインインしていることを確認することも重要です。
要約すると、Azure Lighthouse を使用して、ご自身の Azure AD B2C テナント内のユーザーまたはグループが、別のテナント (Microsoft Entra テナント) に関連付けられているサブスクリプション内でリソース グループを管理することができます。 この承認の完了後、Azure AD B2C 内の診断設定で、サブスクリプションとログ分析ワークスペースをターゲットとして選択できます。
前提条件
Azure AD B2C テナントの全体管理者ロールがある Azure AD B2C アカウント。
Microsoft Entra サブスクリプションの所有者ロールを持つ Microsoft Entra アカウント。 「Azure サブスクリプションの管理者としてユーザーを割り当てる」を参照してください。
1. リソース グループの作成または選択
まず、Azure AD B2C からデータを受信する宛先 Log Analytics ワークスペースが含まれるリソース グループを作成するか、選択します。 Azure Resource Manager テンプレートをデプロイするときに、リソース グループ名を指定します。
- Azure portal にサインインします。
- 複数のテナントへのアクセス権をお持ちの場合、上部のメニューの [設定] アイコンを選択し、[ディレクトリとサブスクリプション] メニューからお使いの Microsoft Entra ID テナントに切り替えます。
- リソース グループを作成するか、既存のものを選択します。 この例では、azure-ad-b2c-monitor という名前のリソース グループを使用します。
2. Log Analytics ワークスペースの作成
Log Analytics ワークスペースは、Azure Monitor ログ データ用の固有の環境です。 この Log Analytics ワークスペースを使用して Azure AD B2C の監査ログからデータを収集し、それをクエリやブックを使用して視覚化したり、アラートを作成したりします。
- Azure portal にサインインします。
- 複数のテナントへのアクセス権をお持ちの場合、上部のメニューの [設定] アイコンを選択し、[ディレクトリとサブスクリプション] メニューからお使いの Microsoft Entra ID テナントに切り替えます。
- Log Analytics ワークスペースを作成します。 この例では、AzureAdB2C という名前の Log Analytics ワークスペースを azure-ad-b2c-monitor という名前のリソース グループで使用します。
3. リソース管理を委任する
この手順では、Azure AD B2C テナントをサービス プロバイダーとして選択します。 また、適切な Azure 組み込みロールを Microsoft Entra テナントのグループに割り当てるために必要な認可を定義します。
3.1 Azure AD B2C テナント ID を取得する
まず、Azure AD B2C ディレクトリのテナント ID (ディレクトリ ID とも呼ばれる) を取得します。
- Azure portal にサインインします。
- 複数のテナントへのアクセス権をお持ちの場合、上部のメニューの [設定] アイコンを選択し、[ディレクトリとサブスクリプション] メニューからお使いの Azure AD B2C テナントに切り替えます。
- [Microsoft Entra ID] を選択し、[概要] を選択します。
- テナント ID を記録します。
3.2 セキュリティ グループを選択する
次に、サブスクリプションが含まれているディレクトリに先ほど作成したリソース グループに対するアクセス許可を付与する Azure AD B2C グループまたはユーザーを選択します。
管理をより簡単にするには、各ロールに Microsoft Entra のユーザー "グループ" を使用することをお勧めします。これにより、個々のユーザーに直接アクセス許可を割り当てるのではなく、ユーザーをグループに追加または削除することができます。 このチュートリアルでは、セキュリティ グループを追加します。
重要
Microsoft Entra グループのアクセス許可を追加するには、[グループの種類] を [セキュリティ] に設定する必要があります。 このオプションは、グループの作成時に選択します。 詳細については、「Microsoft Entra ID を使用した基本グループの作成およびメンバーの追加」を参照してください。
- Azure AD B2C ディレクトリで Microsoft Entra ID を選択したまま、[グループ] を選択し、グループを選択します。 既存のグループがない場合は、セキュリティ グループを作成してから、メンバーを追加します。 詳細については、「Microsoft Entra ID を使用して基本グループを作成してメンバーを追加する」の手順に従ってください。
- [概要] を選択し、グループのオブジェクト ID を記録します。
3.3 Azure Resource Manager テンプレートを作成する
Azure Lighthouse でカスタム認可と委任を作成するには、Azure Resource Manager テンプレートを使用します。 このテンプレートにより、先ほど作成したたとえば azure-ad-b2c-monitor のような Microsoft Entra リソース グループへの Azure AD B2C アクセスが付与されます。 [Azure へのデプロイ] ボタンを使用して GitHub サンプルからテンプレートをデプロイします。これにより、Azure portal が開き、ポータルで直接、テンプレートを構成してデプロイできます。 これらの手順では、(Azure AD B2C テナントではなく) Microsoft Entra テナントにサインインしていることを確認してください。
Azure portal にサインインします。
複数のテナントへのアクセス権をお持ちの場合、上部のメニューの [設定] アイコンを選択し、[ディレクトリとサブスクリプション] メニューからお使いの Microsoft Entra ID テナントに切り替えます。
[Azure へのデプロイ] ボタンを使用して、Azure portal を開き、テンプレートをポータルに直接デプロイします。 詳細については、「Azure Resource Manager テンプレートの作成」を参照してください。
[カスタム デプロイ] ページで、次の情報を入力します。
フィールド 定義 サブスクリプション azure-ad-b2c-monitor リソース グループが作成された Azure サブスクリプションが含まれているディレクトリを選択します。 リージョン リソースがデプロイされるリージョンを選択します。 [Msp Offer Name](Msp オファー名) この定義を説明する名前。 たとえば、Azure AD B2C Monitoring など。 これは、Azure Lighthouse に表示される名前です。 MSP オファー名は、Microsoft Entra ID 内で一意である必要があります。 複数の Azure AD B2C テナントを監視するには、別の名前を使用します。 [Msp Offer Description](Msp オファーの説明) プランの簡単な説明。 たとえば、"Azure AD B2C で Azure Monitor を有効にする" などです。 テナント ID で管理 Azure AD B2C テナントのテナント ID (ディレクトリ ID とも呼ばれる)。 [Authorizations] Microsoft Entra ID の principalId
、principalIdDisplayName
、Azure のroleDefinitionId
が含まれるオブジェクトの JSON 配列を指定します。principalId
は、この Azure サブスクリプションのリソースにアクセスできる B2C グループまたはユーザーのオブジェクト ID です。 このチュートリアルでは、前に記録したグループのオブジェクト ID を指定します。roleDefinitionId
には、"共同作成者ロール" の組み込みロールの値b24988ac-6180-42a0-ab88-20f7382dd24c
を使用します。Rg Name (RG 名) 前に Microsoft Entra テナントに作成したリソースグループの名前。 たとえば、azure-ad-b2c-monitor などです。 次の例は、1 つのセキュリティ グループでの承認配列を示しています。
[ { "principalId": "<Replace with group's OBJECT ID>", "principalIdDisplayName": "Azure AD B2C tenant administrators", "roleDefinitionId": "b24988ac-6180-42a0-ab88-20f7382dd24c" } ]
テンプレートをデプロイした後、リソース プロジェクションが完了するまでに数分 (通常 5 分以内) かかることがあります。 Microsoft Entra テナントでデプロイを確認し、リソース プロジェクションの詳細を取得することができます。 詳細については、「サービス プロバイダーを表示し、管理する」を参照してください。
4. サブスクリプションを選択します。
テンプレートをデプロイし、リソース プロジェクションが完了するまで数分待った後、次の手順に従ってサブスクリプションを Azure AD B2C ディレクトリに関連付けます。
Note
[ポータル設定] | [ディレクトリ + サブスクリプション] ページで、[現在のディレクトリ + 委任されたディレクトリ] で Azure AD B2C と Microsoft Entra テナントが選択されていることを確認します。
Azure portal からサインアウトし、Azure AD B2C 管理アカウントでサインインし直します。 このアカウントは、「リソース管理を委任する」手順で指定したセキュリティ グループのメンバーである必要があります。 サインアウトしてもう一度サインインすると、次の手順でセッション資格情報が更新されます。
ポータル ツールバーの [設定] アイコンを選択します。
[ポータルの設定 | [ディレクトリ + サブスクリプション] ページにある [ディレクトリ名] の一覧で、Azure サブスクリプションと、自分で作成した azure-ad-b2c-monitor リソース グループを含む Microsoft Entra ID ディレクトリを見つけ、[切り替え] を選択します。
正しいディレクトリを選択し、[既定のサブスクリプション] フィルターで Azure サブスクリプションが表示され、選択されていることを確認します。
5. 診断設定を構成する
診断設定では、リソースのログとメトリックを送信する場所を定義します。 使用できる送信先は次のとおりです。
この例では、Log Analytics ワークスペースを使用してダッシュボードを作成します。
5.1 診断設定を作成する
Azure portal で診断設定を作成する準備ができました。
Azure AD B2C のアクティビティ ログの監視設定を構成するには:
Azure AD B2C の管理者アカウントで Azure portal にサインインします。 このアカウントは、「セキュリティ グループを選択する」手順で指定したセキュリティ グループのメンバーである必要があります。
複数のテナントへのアクセス権をお持ちの場合、上部のメニューの [設定] アイコンを選択し、[ディレクトリとサブスクリプション] メニューからお使いの Azure AD B2C テナントに切り替えます。
[Microsoft Entra ID] を選択します
[監視] で [診断設定] を選択します。
リソースに対する既存の設定がある場合は、構成済みの設定の一覧が表示されます。 [診断設定の追加] を選択して新しい設定を追加するか、[設定の編集] を選択して既存の設定を編集します。 各設定には、各送信先の種類を 1 つだけ含めることができます。
設定にまだ名前がない場合は、名前を付けます。
AuditLogs と SignInLogs を選択します。
[Log Analytics ワークスペースに送信する] を選択し、次を行います:
- [サブスクリプション] でご使用のサブスクリプションを選択します。
- [Log Analytics ワークスペース] で、たとえば
AzureAdB2C
など、前に作成したワークスペースの名前を選択します。
Note
Azure AD B2C テナントで現在サポートされているのは、 AuditLogsとSignInLogsの診断設定のみです。
[保存] を選択します。
注意
イベントが生成されて Log Analytics ワークスペースに表示されるまでに最大で 15 分かかる可能性があります。 Active Directory レポートの待機時間の詳細についても確認してください。これは、データの陳腐化に影響し、レポートで重要な役割を果たす可能性があります。
"Azure AD B2C ディレクトリで Azure Monitor を使用するための診断設定を指定するには、委任リソース管理を設定する必要があります" というエラー メッセージが表示される場合は、セキュリティ グループのメンバーであるユーザーとしてサインインしていることと、ご自分のサブスクリプションを選択していることをご確認ください。
6. データを視覚化する
これで、Log Analytics ワークスペースを構成してデータを視覚化し、アラートを構成できます。 これらの構成は、Microsoft Entra テナントと Azure AD B2C テナントの両方で行うことができます。
6.1 クエリを作成する
ログ クエリは、Azure Monitor ログ内に収集されたデータの価値を最大限に使用するのに役立ちます。 強力なクエリ言語により、複数のテーブルのデータを結合したり、大量のデータ セットを集約したり、最小限のコードによって複雑な操作を実行したりできます。 有用なデータが収集されていて、適切なクエリを作成する方法を理解していれば、ほぼすべての疑問に答えたり、分析を実行したりすることができます。 詳細については、「Azure Monitor でログ クエリの使用を開始する」を参照してください。
Azure portal にサインインします。
複数のテナントへのアクセス権をお持ちの場合、上部のメニューの [設定] アイコンを選択し、[ディレクトリとサブスクリプション] メニューからお使いの Microsoft Entra ID テナントに切り替えます。
[Log Analytics ワークスペース] ウィンドウで、[ログ] を選択します
クエリ エディターで、次の Kusto クエリ言語のクエリを貼り付けます。 このクエリは、過去 x 日間の操作によるポリシーの使用状況を示します。 既定の期間は、90 日間 (90d) に設定されています。 このクエリは、ポリシーによってトークン/コードが発行される操作のみに注目していることに注意してください。
AuditLogs | where TimeGenerated > ago(90d) | where OperationName contains "issue" | extend UserId=extractjson("$.[0].id",tostring(TargetResources)) | extend Policy=extractjson("$.[1].value",tostring(AdditionalDetails)) | summarize SignInCount = count() by Policy, OperationName | order by SignInCount desc nulls last
[実行] を選択します。 クエリの結果が画面の下部に表示されます。
後で使用するためにクエリを保存するには、 [保存] を選択します。
次の詳細情報を入力します。
- [名前] : クエリの名前を入力します。
- [名前を付けて保存] :
query
を選択します - [カテゴリ] -
Log
を選択します。
[保存] を選択します。
render 演算子を使用してデータを視覚化するようにクエリを変更することもできます。
AuditLogs
| where TimeGenerated > ago(90d)
| where OperationName contains "issue"
| extend UserId=extractjson("$.[0].id",tostring(TargetResources))
| extend Policy=extractjson("$.[1].value",tostring(AdditionalDetails))
| summarize SignInCount = count() by Policy
| order by SignInCount desc nulls last
| render piechart
その他のサンプルについては、Azure AD B2C の SIEM GitHub リポジトリを参照してください。
6.2 ブックを作成する
ブックは、Azure portal 内でデータを分析し、高度な視覚的レポートを作成するための柔軟なキャンバスを提供します。 Azure 全体から複数のデータ ソースを活用し、それらを結合して、統合された対話型エクスペリエンスにすることができます。 詳細については、「Azure Monitor ブック」を参照してください。
JSON ギャラリー テンプレートを使用して新しいブックを作成するには、次の手順に従います。 このブックには、Azure AD B2C テナントの [User Insights](ユーザー分析情報) と [Authentication](認証) ダッシュボードが用意されています。
Azure portal にサインインします。
複数のテナントへのアクセス権をお持ちの場合、上部のメニューの [設定] アイコンを選択し、[ディレクトリとサブスクリプション] メニューからお使いの Microsoft Entra ID テナントに切り替えます。
[Log Analytics ワークスペース] ウィンドウで、[ブック] を選択します。
ツールバーから [+ 新規] オプションを選択して、新しいブックを作成します。
[新しいブック] ページで、ツールバーの </> オプションを使用して [詳細エディター] を選択します。
[ギャラリー テンプレート] を選択します。
ギャラリー テンプレートの JSON を、Azure AD B2C の基本ブックの内容に置き換えます。
[適用] ボタンを使用して、テンプレートを適用します。
ツールバーの [Done Editing](編集完了) ボタンを選択して、ブックの編集を終了します。
最後に、ツールバーの [保存] ボタンを使用して、ブックを保存します。
[タイトル] ("Azure AD B2C ダッシュボード" など) を指定します。
[保存] を選択します。
ブックに、ダッシュボードの形式でレポートが表示されます。
アラートを作成する
アラートは Azure Monitor のアラート ルールによって作成され、保存済みのクエリまたはカスタム ログ検索を一定の間隔で自動的に実行できます。 特定のパフォーマンス メトリックに基づいて、または特定のイベントが発生したときにアラートを作成できます。 イベントが発生しなかった場合や、特定の期間内に多数のイベントが発生した場合のアラートも作成できます。 たとえば、アラートを使用して、サインインの平均数が特定のしきい値を超えたら通知を受けるようにできます。 詳細については、アラートの作成に関するページをご覧ください。
次の手順を使用して、合計要求数が前の期間と比較して 25% 低下したらメール通知を送信する新しい Azure アラートを作成します。 アラートは 5 分ごとに実行され、直近 1 時間の低下を、その前の 1 時間と比較して調べます。 アラートは、Kusto クエリ言語を使用して作成されます。
Azure portal にサインインします。
複数のテナントへのアクセス権をお持ちの場合、上部のメニューの [設定] アイコンを選択し、[ディレクトリとサブスクリプション] メニューからお使いの Microsoft Entra ID テナントに切り替えます。
Log Analytics ワークスペースから、 [ログ] を選択します。
このクエリを使用して、新しい Kusto クエリを作成します。
let start = ago(2h); let end = now(); let threshold = -25; //25% decrease in total requests. AuditLogs | serialize TimeGenerated, CorrelationId, Result | make-series TotalRequests=dcount(CorrelationId) on TimeGenerated from start to end step 1h | mvexpand TimeGenerated, TotalRequests | serialize TotalRequests, TimeGenerated, TimeGeneratedFormatted=format_datetime(todatetime(TimeGenerated), 'yyyy-MM-dd [HH:mm:ss]') | project TimeGeneratedFormatted, TotalRequests, PercentageChange= ((toreal(TotalRequests) - toreal(prev(TotalRequests,1)))/toreal(prev(TotalRequests,1)))*100 | order by TimeGeneratedFormatted desc | where PercentageChange <= threshold //Trigger's alert rule if matched.
[実行] を選択してクエリをテストします。 直近 1 時間以内に合計要求数で 25% 以上の低下がある場合は、結果が表示されます。
このクエリに基づいてアラート ルールを作成するには、ツールバーにある [+ 新しいアラート ルール] オプションを使用します。
[アラート ルールの作成] ページで、 [条件名] を選択します。
[シグナル ロジックの構成] ページで次の値を設定し、 [完了] ボタンを使用して変更を保存します。
- アラート ロジック: [結果の数] を [0 より大きい] に設定します。
- 評価基準: [期間 (分単位)] には [120] を、[頻度 (分単位)] には [5] を選択します
アラートが作成されたら、Log Analytics ワークスペースにアクセスし、 [アラート] を選択します。 このページには、 [時間範囲] オプションで設定された期間内にトリガーされたすべてのアラートが表示されます。
アクション グループを構成する
Azure Monitor および Service Health のアラートでは、アクション グループを使用して、アラートがトリガーされたことをユーザーに通知します。 音声通話、SMS、電子メールの送信やさまざまな種類の自動アクションのトリガーを含めることができます。 「Azure portal でのアクション グループの作成および管理」ガイダンスに従ってください。
アラート通知メールの例を次に示します。
複数のテナント
複数の Azure AD B2C テナント ログを同じ Log Analytics ワークスペース (あるいは Azure ストレージ アカウント、またはイベント ハブ) にオンボードするには、異なる Msp オファー名の値を使用する別々のデプロイが必要になります。 Log Analytics ワークスペースが、「リソース グループの作成または選択」で構成したものと同じリソース グループに含まれていることを確認してください。
複数の Log Analytics ワークスペースで作業している場合は、クロス ワークスペース クエリを使用して、複数のワークスペースで動作するクエリを作成します。 たとえば、次のクエリでは、同じカテゴリ (たとえば、認証) に基づいて、異なるテナントからの 2 つの監査ログの結合が実行されます。
workspace("AD-B2C-TENANT1").AuditLogs
| join workspace("AD-B2C-TENANT2").AuditLogs
on $left.Category== $right.Category
データ保持期間の変更
Azure Monitor ログは、企業内の、または Azure にデプロイされた任意のソースから毎日大量のデータを収集し、インデックスを付けて、格納する処理をスケーリングおよびサポートするように設計されています。 既定では、ログは 30 日間保持されますが、データ保持期間は最大 2 年間まで延長できます。 Azure Monitor ログで使用量とコストを管理する方法について説明します。 価格レベルを選択したら、データ保持期間を変更できます。
監視データ収集を無効にする
Log Analytics ワークスペースのログ収集を停止するには、作成した診断設定を削除します。 ワークスペース内で既に収集されたログ データを保持するための料金は引き続き発生します。 収集した監視データが不要になった場合は、Log Analytics ワークスペースと、Azure Monitor 用に作成したリソース グループを削除できます。 Log Analytics ワークスペースを削除すると、ワークスペース内のすべてのデータが削除され、追加でデータ保持料金が発生するのを防ぎます。
Log Analytics ワークスペースとリソース グループを削除する
- Azure portal にサインインします。
- 複数のテナントへのアクセス権をお持ちの場合、上部のメニューの [設定] アイコンを選択し、[ディレクトリとサブスクリプション] メニューからお使いの Microsoft Entra ID テナントに切り替えます。
- Log Analytics ワークスペースを含むリソース グループを選びます。 この例では、azure-ad-b2c-monitor という名前のリソース グループと、
AzureAdB2C
という名前の Log Analytics ワークスペースを使用します。 - Logs Analytics ワークスペースを削除します。
- [削除] ボタンを選び、リソース グループを削除します。
次のステップ
その他のサンプルについては、Azure AD B2C の SIEM ギャラリーを参照してください。
Azure Monitor での診断設定の追加と構成の詳細については、「チュートリアル: Azure リソースからリソース ログを収集して分析する」を参照してください。
イベント ハブへの Microsoft Entra ID ログのストリーム配信に関する詳細については、「チュートリアル: Microsoft Entra ログを Azure イベント ハブにストリーム配信する」を参照してください。