プロビジョニングは、Azure Monitor ログおよび Log Analytics と統合されています。 Azure Monitoring を使用すると、ブック (ダッシュボードとも呼ばれます) の作成、プロビジョニング ログの 30 日以上の保存、カスタム クエリとアラートの作成などを行うことができます。 この記事では、プロビジョニング ログを Azure Monitor ログと統合する方法について説明します。 プロビジョニング ログの一般的な動作の詳細については、 プロビジョニング ログを参照してください。
プロビジョニング ログ統合の有効化
Azure Monitor と Log Analytics にまだ慣れていない場合は、次のリソースを確認してから改めてアプリケーション プロビジョニング ログと Azure Monitor ログの統合について学習してください。
プロビジョニング ログと Azure Monitor ログを統合するには:
少なくともセキュリティ管理者として Microsoft Entra 管理センターにサインインします。
Entra ID>監視と健康>診断設定に移動します。
ストリーミングするログを選択し、[ Log Analytics ワークスペースに送信 ] オプションを選択して、フィールドに入力します。
Entra ID>Monitoring & health>Log Analytics に移動し、データのクエリを開始します。
注
最初に統合を有効にした後、Log Analytics 内にログが表示されるまでに時間がかかる場合があります。 microsoft.insights を使用するためにサブスクリプションが登録されていないというエラーが発生した場合は、数分後にもう一度確認してください。
データの説明
プロビジョニングからログ ビューアーに送信される基のデータ ストリームはほぼ同じです。 Azure Monitor ログは、Microsoft Entra 管理センターや Microsoft Graph API とほぼ同じストリームを取得します。 次の表の中に示すように、ログ フィールド内にはいくつかの違いがあります。 Log Analytics では、Microsoft Entra 管理センター内のログよりも多くのイベントが表示される場合があります。 これらのフィールドの詳細については、「 list provisioningObjectSummary」を参照してください。
Azure Monitor ログ | Azure ポータル ユーザーインターフェース | Azure API |
---|---|---|
エラー説明 | 理由 | 結果の説明 |
ステータス | 結果タイプ | 結果タイプ |
活動日時 | タイムジェネレイテッド | タイムジェネレイテッド |
Microsoft Entra ブック
Microsoft Entra ID ブックには、データ分析用の柔軟なキャンバスが用意されています。 また、Azure portal 内で上質なビジュアル レポートを作成することもできます。 詳細については、 Microsoft Entra ブックを参照してください。
プロビジョニング分析とプロビジョニングの分析情報は、使用可能な事前構築済みのブックの 2 つです。 データを表示するには、すべてのフィルター (timeRange、jobID、appName) を設定する必要があります。 また、アプリがプロビジョニングされていることも確認します。プロビジョニングされていないと、ログにはデータがありません。
カスタム クエリ
カスタム クエリを作成し、ブックの中にそのデータを表示できます。 方法については、「Azure Monitor のログ クエリの始め方」および「Azure Monitor のログ クエリ」を参照してください。
アプリケーション プロビジョニング ログ クエリを開始するためのサンプルをいくつか次に示します。
ソース システムの ID に基づいて、ユーザーのログに対してクエリを実行する:
AADProvisioningLogs
| extend SourceIdentity = parse_json(SourceIdentity)
| where tostring(SourceIdentity.Id) == "49a4974bb-5011-415d-b9b8-78caa7024f9a"
ErrorCode あたりの集計数:
AADProvisioningLogs
| summarize count() by ErrorCode = ResultSignature
アクション別の 1 日あたりのイベント数の集計:
AADProvisioningLogs
| where TimeGenerated > ago(7d)
| summarize count() by Action, bin(TimeGenerated, 1d)
100 イベントとプロジェクト キーのプロパティを取得する:
AADProvisioningLogs
| extend SourceIdentity = parse_json(SourceIdentity)
| extend TargetIdentity = parse_json(TargetIdentity)
| extend ServicePrincipal = parse_json(ServicePrincipal)
| where tostring(SourceIdentity.identityType) == "Group"
| project tostring(ServicePrincipal.Id), tostring(ServicePrincipal.Name), ModifiedProperties, JobId, Id, CycleId, ChangeId, Action, SourceIdentity.identityType, SourceIdentity.details, TargetIdentity.identityType, TargetIdentity.details, ProvisioningSteps
| take 100
参照の解決に問題があるため、スキップされたメンバーがあるグループを取得します。
AADProvisioningLogs
| where TimeGenerated >= ago(10d)
| where JobId == "Azure2Azure.73f0883f-d67d-4af1-ac8a-45367f8982e0.5ef3be57-f45f-451g-88c4-68a7fda680bb" // Customize by adding a specific app JobId
| extend SourceIdentity = parse_json(SourceIdentity)
| extend ProvisioningSteps = parse_json(ProvisioningSteps)
| where tostring(SourceIdentity.identityType) == "Group"
| where ProvisioningSteps matches regex "UnableToResolveReferenceAttributeValue"
| parse tostring(ProvisioningSteps.[2].description) with "We were unable to assign " userObjectId " as the members of " groupDisplayName "." *
| project groupDisplayName, userObjectId, JobId
| take 100
アプリケーション別にアクションを要約します。
AADProvisioningLogs
| where TimeGenerated > ago(30d)
| where JobId == "Azure2Azure.73f0883f-d67d-4af1-ac8a-45367f8982e0.5ef3be57-f45f-451g-88c4-68a7fda680bb" // Customize by adding a specific app JobId
| extend ProvisioningSteps = parse_json(ProvisioningSteps)
| extend eventName = tostring(ProvisioningSteps.[-1].name)
| summarize count() by eventName, JobId
| order by JobId asc
| take 5
特定の操作の急増を特定します。
AADProvisioningLogs
| where TimeGenerated > ago(30d)
| where JobId == "scim.73f0883f-d67d-4af1-ac8a-45367f8982e0.5ef3be57-f45f-451g-88c4-68a7fda680bb" // Customize by adding a specific app JobId
| extend ProvisioningSteps = parse_json(ProvisioningSteps)
| extend eventName = tostring(ProvisioningSteps.[-1].name)
| summarize count() by eventName, bin(TimeGenerated, 1d)
| render timechart
カスタム アラート
Azure Monitor を使用すると、プロビジョニングに関連する主要なイベントに関する通知を受け取ることができるように、カスタム アラートを構成することができます。 たとえば、失敗、無効化、または削除の急増に関するアラートを受け取る場合があります。 プロビジョニングが不足している場合は、何か問題があることを示すアラートを受け取ることもできます。
アラートの詳細については、 Azure Monitor ログ アラートに関するページを参照してください。 多くのオプションと構成があるため、完全なドキュメントを確認してください。 ただし、大まかに言うと、アラートを作成する方法を次に示します。
- Log Analytics で、[ + 新しいアラート ルール] を選択します。
- [ 条件 ] タブで、[ 結果の表示とログでのクエリの編集 ] リンクを選択します。
- アラートを生成するクエリを入力し、アラートを作成するために必要なフィールドに入力します。
障害が急増したときにアラートを作成するには:
AADProvisioningLogs
| where JobId == "string" // Customize by adding a specific app JobId
| where ResultType == "Failure"
プロビジョニング サービスの実行が停止する原因となった問題が発生している可能性があります。 次のクエリを使用して、特定の時間間隔中にプロビジョニング イベントがない場合を検出します。
AADProvisioningLogs
| take 1
無効化または削除が急増したときにアラートを作成するには:
AADProvisioningLogs
| where Action in ("Disable", "Delete")
コミュニティからの投稿
Microsoft では、アプリケーションのプロビジョニングのクエリとダッシュボードに対して、オープン ソースとコミュニティベースのアプローチを採用しています。 他のユーザーにとって役に立つと思われるクエリ、アラート、またはブックを作成し、 それを AzureMonitorCommunity GitHub リポジトリに発行します。 そして、リンクを含むメールを Microsoft までお送りください。 Microsoft がクエリとダッシュボードをレビューしてサービスに公開し、他のユーザーも利用できるようにします。 provisioningfeedback@microsoft.com までお問い合わせください。