次の方法で共有


Azure Monitor におけるエンタイトルメント管理でのアーカイブ ログとレポート

Microsoft Entra ID は、エンタイトルメント管理やその他の Microsoft Entra ID ガバナンス機能の監査イベントを監査ログに 30 日間保存します。 ただし、「 Microsoft Entra ID でレポート データを格納する期間」で説明されている既定の保持期間よりも長い期間、監査データを Azure Storage アカウントにルーティングするか、Azure Monitor を使用して保持できます。 これで、このデータに対してブックとカスタム クエリ、レポートを使用できるようになります。

この記事では、監査ログの保持に Azure Monitor を使用する方法について説明します。 ユーザーやアプリケーション ロールの割り当てなど、Microsoft Entra オブジェクトを保持またはレポートするには、Microsoft Entra IDのデータを使用して、Azure Data Explorer (ADX) でカスタマイズされたレポートを を参照してください。

Azure Monitor を使用するように Microsoft Entra ID を構成する

Azure Monitor ワークブックを使用する前に、Microsoft Entra ID を構成して、その監査ログのコピーを Azure Monitor に送信する必要があります。

Microsoft Entra ID 監査ログをアーカイブするには、Azure サブスクリプションに Azure Monitor が必要です。 Azure Monitor の Microsoft Entra アクティビティ ログで Azure Monitor を使用する場合の前提条件と推定コストの詳細を確認できます。

  1. 少なくともセキュリティ管理者として Microsoft Entra 管理センターにサインインします。 Azure Monitor ワークスペースが含まれているリソース グループにアクセスできることを確認します。

  2. Entra ID>モニタリングと健康>Diagnostic 設定を参照してください。

  3. 監査ログをそのワークスペースに送信する設定が既にあるかどうかを確認します。

  4. まだ設定がない場合は、[ 診断設定の追加] を選択します。 「Microsoft Entra ログを Azure Monitor ログと統合する」の手順を使用して、Microsoft Entra 監査ログを Azure Monitor ワークスペースに送信します。

    [診断設定] ウィンドウ。

  5. ログが Azure Monitor に送信されたら、 Log Analytics ワークスペースを選択し、Microsoft Entra 監査ログを含むワークスペースを選択します。

  6. [ 使用量と推定コスト] を選択し、[ データ保有期間] を選択します。 監査要件に合わせて、データを保持する日数にスライダーを変更します。

    Log Analytics ワークスペース ウィンドウ。

  7. 後ほど、ワークスペースに保持されている日付の範囲を表示するには、アーカイブされたログの日付範囲ブックを使用できます。

    1. Entra ID>Monitoring & health>Workbooks に移動します。

    2. [Microsoft Entra Troubleshooting] セクションを展開し、[アーカイブされたログの日付範囲] を選択します。

アクセス パッケージのイベントを表示する

アクセス パッケージのイベントを表示するには、基になる Azure Monitor ワークスペース (詳細については、 Azure Monitor のログ データとワークスペースへのアクセスの管理 に関するページを参照) と、次のいずれかのロールにアクセスできる必要があります。

  • グローバル管理者
  • セキュリティ管理者
  • セキュリティリーダー
  • レポートリーダー
  • アプリケーション管理者

以下の手順でイベントを表示します。

  1. Microsoft Entra 管理センターに、少なくともレポート閲覧者としてサインインします。 Azure Monitor ワークスペースが含まれているリソース グループにアクセスできることを確認します。

  2. Entra ID>Monitoring & health>Workbooks に移動します。

  3. 複数のサブスクリプションがある場合は、ワークスペースが含まれているサブスクリプションを選択します。

  4. サブスクリプションを選択した後、またはサブスクリプションが 1 つしかない場合は、 Access Package Activity という名前のブックを選択します。

  5. そのブックで、時間範囲 (不明な場合 は [すべて ] に変更) を選択し、その期間中にアクティビティを持っていたすべてのアクセス パッケージのドロップダウン リストからアクセス パッケージ ID を選択します。 選択した時間範囲内で発生したアクセス パッケージに関連のあるイベントが表示されます。

    アクセス パッケージ イベントを表示します。

    各行には、時刻、アクセス パッケージ ID、操作の名前、オブジェクト ID、UPN、操作を開始したユーザーの表示名が含まれます。 この他の詳細は JSON に含まれています。

  6. グローバル管理者がアプリケーション ロールに直接ユーザーを割り当てた場合など、アクセス パッケージの割り当てによってなかったアプリケーションのアプリケーション ロールの割り当てに変更があったかどうかを確認する場合は、 アプリケーション ロールの割り当てアクティビティという名前のブックを選択できます。

    アプリ ロールの割り当てを表示します。

Microsoft Entra 管理センターを使用してカスタム Azure Monitor クエリを作成する

エンタイトルメント管理イベントを含め、Microsoft Entra 監査イベントに対する独自のクエリを作成できます。

  1. Microsoft Entra 管理センターの ID で、左側のナビゲーション メニューの [監視] セクションで [ログ ] を選択して、新しいクエリ ページを作成します。

  2. ワークスペースは、クエリ ページの左上に表示されます。 複数の Azure Monitor ワークスペースがあり、Microsoft Entra 監査イベントの格納に使用しているワークスペースが表示されない場合は、[スコープの選択] を 選択します。 次に、適切なサブスクリプションとワークスペースを選択します。

  3. 次に、クエリ テキスト領域で、文字列 "search *" を削除し、次のクエリに置き換えます。

    AuditLogs | where Category == "EntitlementManagement"
    
  4. 次に、[実行] を選択 します

    [実行] を選択してクエリを開始します。

このテーブルには、既定で過去 1 時間のエンタイトルメント管理の監査ログ イベントが表示されます。 [時間の範囲] 設定を変更して、古いイベントを表示することができます。 ただし、この設定を変更すると、Azure Monitor にイベントを送信するように Microsoft Entra ID が構成された後に発生したイベントのみが表示されます。

Azure Monitor で保持されている最も古い監査イベントと最新の監査イベントを知りたい場合は、次のクエリを使用します。

AuditLogs | where TimeGenerated > ago(3653d) | summarize OldestAuditEvent=min(TimeGenerated), NewestAuditEvent=max(TimeGenerated) by Type

Azure Monitor の監査イベント用に格納される列の詳細については、「Azure Monitor での Microsoft Entra 監査ログ スキーマの解釈」を参照してください。

Azure PowerShell を使用してカスタム Azure Monitor クエリを作成する

ログを Azure Monitor に送信するように Microsoft Entra ID を構成すると、PowerShell を使用してログにアクセスできます。 次に、スクリプトまたは PowerShell コマンド ラインからクエリを送信します。テナントのグローバル管理者である必要はありません。

ユーザーまたはサービス プリンシパルに正しいロールが割り当てられていることを確認する

Microsoft Entra ID に対して認証するユーザーまたはサービス プリンシパルが、Log Analytics ワークスペースの適切な Azure ロールに属していることを確認します。 ロール オプションは、Log Analytics 閲覧者または Log Analytics 共同作成者のいずれかです。 これらのロールの 1 つを既に使用している場合は、「 1 つの Azure サブスクリプションで Log Analytics ID を取得する」に進みます。

ロールの割り当てを設定し、クエリを作成するには、次の手順を実行します。

  1. Microsoft Entra 管理センターで、 Log Analytics ワークスペースを見つけます。

  2. [アクセス制御 (IAM)]を選択します。

  3. 次に、[ 追加] を選択してロールの割り当てを追加します。

    ロールの割り当てを追加します。

Azure PowerShell モジュールをインストールする

適切なロールの割り当てを完了したら、PowerShell を起動し、次のように入力して Azure PowerShell モジュールをインストール します (まだインストールしていない場合)。

install-module -Name az -allowClobber -Scope CurrentUser

これで、Microsoft Entra ID に対して認証し、クエリを実行している Log Analytics ワークスペースの ID を取得する準備ができました。

1 つの Azure サブスクリプションで Log Analytics ID を取得する

1 つの Azure サブスクリプションと 1 つの Log Analytics ワークスペースしかない場合は、次のように入力して Microsoft Entra ID に対して認証し、そのサブスクリプションに接続して、そのワークスペースを取得します。

Connect-AzAccount
$wks = Get-AzOperationalInsightsWorkspace

複数の Azure サブスクリプションで Log Analytics ID を取得する

Get-AzOperationalInsightsWorkspace は、一度に 1 つのサブスクリプションで動作します。 そのため、複数の Azure サブスクリプションがある場合は、Microsoft Entra ログを含む Log Analytics ワークスペースがあるものに接続する必要があります。

次のコマンドレットを実行すると、サブスクリプションの一覧が表示されます。Log Analytics ワークスペースがあるサブスクリプションの ID を探します。

Connect-AzAccount
$subs = Get-AzSubscription
$subs | ft

Connect-AzAccount –Subscription $subs[0].id などのコマンドを使用して、そのサブスクリプションに PowerShell セッションを再認証し、関連付けることができます。 非対話型を含む PowerShell から Azure に対して認証する方法の詳細については、「 Azure PowerShell を使用したサインイン」を参照してください。

そのサブスクリプションに複数の Log Analytics ワークスペースがある場合、コマンドレット Get-AzOperationalInsightsWorkspace はワークスペースの一覧を返します。 これで、Microsoft Entra ログがあるものを見つけることができます。 このコマンドレットから返される CustomerId フィールドは、Microsoft Entra 管理センターの Log Analytics ワークスペースの概要に表示される "ワークスペース ID" の値と同じです。

$wks = Get-AzOperationalInsightsWorkspace
$wks | ft CustomerId, Name

Log Analytics ワークスペースにクエリを送信する

最後に、ワークスペースを特定したら、 Invoke-AzOperationalInsightsQuery を使用して Kusto クエリをそのワークスペースに送信できます。 これらのクエリは 、Kusto クエリ言語で記述されます。

たとえば、次のようなクエリを送信する PowerShell コマンドレットを使用して、Log Analytics ワークスペースから監査イベント レコードの日付範囲を取得できます。

$aQuery = "AuditLogs | where TimeGenerated > ago(3653d) | summarize OldestAuditEvent=min(TimeGenerated), NewestAuditEvent=max(TimeGenerated) by Type"
$aResponse = Invoke-AzOperationalInsightsQuery -WorkspaceId $wks[0].CustomerId -Query $aQuery
$aResponse.Results |ft

次のようなクエリを使用して、エンタイトルメント管理イベントを取得することもできます。

$bQuery = 'AuditLogs | where Category == "EntitlementManagement"'
$bResponse = Invoke-AzOperationalInsightsQuery -WorkspaceId $wks[0].CustomerId -Query $Query
$bResponse.Results |ft 

クエリ フィルターの使用

TimeGenerated フィールドを含めて、クエリのスコープを特定の時間範囲に設定できます。 たとえば、過去 90 日間に作成または更新されているエンタイトルメント管理アクセス パッケージ割り当てポリシーの監査ログ イベントを取得するには、このフィールドの他にカテゴリと操作の種類が含まれているクエリを指定できます。

AuditLogs | 
where TimeGenerated > ago(90d) and Category == "EntitlementManagement" and Result == "success" and (AADOperationType == "CreateEntitlementGrantPolicy" or AADOperationType == "UpdateEntitlementGrantPolicy") | 
project ActivityDateTime,OperationName, InitiatedBy, AdditionalDetails, TargetResources

エンタイトルメント管理などの一部のサービスの監査イベントの場合は、変更されているリソースの影響を受けるプロパティを展開し、フィルター処理することもできます。 たとえば、ユーザーに割り当てが追加されるときに承認を必要としない、作成または更新されているアクセス パッケージ割り当てポリシーの監査ログ レコードのみを表示できます。

AuditLogs | 
where TimeGenerated > ago(90d) and Category == "EntitlementManagement" and Result == "success" and (AADOperationType == "CreateEntitlementGrantPolicy" or AADOperationType == "UpdateEntitlementGrantPolicy") | 
mv-expand TargetResources | 
where TargetResources.type == "AccessPackageAssignmentPolicy" | 
project ActivityDateTime,OperationName,InitiatedBy,PolicyId=TargetResources.id,PolicyDisplayName=TargetResources.displayName,MP1=TargetResources.modifiedProperties | 
mv-expand MP1 | 
where (MP1.displayName == "IsApprovalRequiredForAdd" and MP1.newValue == "\"False\"") |
order by ActivityDateTime desc 

次のステップ