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

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

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

ヒント

この記事の手順は、開始するポータルに応じて若干異なる場合があります。

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

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

前提条件のロール: グローバル管理者

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

  2. [ID]>[監視と正常性]>[診断設定] の順に移動します。

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

  4. 設定がまだない場合は、[Add diagnostic setting] (診断設定の追加) を選択します。 「Microsoft Entra ログを Azure Monitor ログと統合する」の指示に従って、Microsoft Entra 監査ログを Azure Monitor ワークスペースに送信します。

    Diagnostics settings pane

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

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

    Log Analytics workspaces pane

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

    1. [ID]>[監視と正常性]>[ブック] の順に移動します。

    2. [Microsoft Entra Troubleshooting] (Microsoft Entra トラブルシューティング) セクションを展開し、[Archived Log Date Range] (アーカイブされたログの日付範囲) を選択します。

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

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

  • 全体管理者
  • セキュリティ管理者
  • セキュリティ閲覧者
  • レポート閲覧者
  • アプリケーション管理者

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

  1. Microsoft Entra 管理センターで、[Identity] (ID) を選択し、[ブック] を選択します。 所有するサブスクリプションが 1 つのみの場合は、ステップ 3 に進んでください。

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

  3. Access Package Activity」という名前のブックを選択します。

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

    View access package events

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

  5. あるアプリケーションで、アプリケーション ロールの割り当てに対して、アクセス パッケージの割り当てによるものではない変更 (全体管理者がアプリケーション ロールにユーザーを直接割り当てた場合など) が行われたかどうかを確認する場合は、[アプリケーション ロールの割り当てアクティビティ] という名前のブックを選択します。

    View app role assignments

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

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

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

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

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

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

    Click Run to start query

このテーブルには、既定で過去 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 つの Azure サブスクリプションで Log Analytics ID を取得する」に進みます。

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

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

  2. Access Control (IAM) を選択します。

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

    Add a role assignment

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 

次のステップ