Microsoft Graph を使ってアクティビティ ログを分析する方法

Microsoft Entra Reporting API は、一連の REST API を使用したプログラムによるデータへのアクセスを提供します。 これらの API は、多くのプログラミング言語やツールから呼び出すことができます。 Microsoft Graph API は、大量のアクティビティ データをプルする用途に合わせて設計されていません。 この API で大量のアクティビティ データをプルすると、ページ処理やパフォーマンスの問題が発生する可能性があります。

この記事では、Microsoft Graph Explorer と Microsoft Graph PowerShell を使って Microsoft Entra アクティビティ ログを分析する方法について説明します。

前提条件

Microsoft Graph API に対して要求するには、まず次のことを行う必要があります。

Microsoft Graph エクスプローラーを使用してレポートにアクセスする

すべての前提条件を構成すると、Microsoft Graph でアクティビティ ログのクエリを実行できます。 アクティビティ ログへの Microsoft Graph クエリの詳細については、「アクティビティ レポート API の概要」を参照してください。

  1. Microsoft Graph Explorer ツールを起動します。

  2. プロファイルを選び、[アクセス許可の変更] を選びます。

  3. 次の必要なアクセス許可に同意します。

    • AuditLog.Read.All
    • Directory.Read.All
  4. 次のいずれかのクエリを使用して、アクティビティ ログにアクセスするために Microsoft Graph の使用を開始します。

    • GET https://graph.microsoft.com/v1.0/auditLogs/directoryAudits
    • GET https://graph.microsoft.com/v1.0/auditLogs/signIns
    • GET https://graph.microsoft.com/v1.0/auditLogs/provisioning

    Microsoft Graph のアクティビティ ログ GET クエリのスクリーンショット。

クエリを微調整する

特定のアクティビティ ログ エントリを検索するには、$filter および createdDateTime クエリ パラメーターと、使用できるプロパティの 1 つを使います。 次のクエリの一部では、beta エンドポイントを使用します。 ベータ エンドポイントは変更される可能性があり、運用環境での使用は推奨されません。

次のクエリを使ってみてください。

  • 条件付きアクセスが失敗したサインイン試行の場合:

    • GET https://graph.microsoft.com/v1.0/auditLogs/signIns?&$filter=conditionalAccessStatus eq 'failure'
  • 特定のアプリケーションへのサインインを見つけるには:

    • GET https://graph.microsoft.com/v1.0/auditLogs/signIns?&$filter=(createdDateTime ge 2024-01-13T14:13:32Z and createdDateTime le 2024-01-14T17:43:26Z) and appId eq 'APP ID'
  • 非対話型サインインの場合:

    • GET https://graph.microsoft.com/beta/auditLogs/signIns?&$filter=(createdDateTime ge 2024-01-13T14:13:32Z and createdDateTime le 2024-01-14T17:43:26Z) and signInEventTypes/any(t: t eq 'nonInteractiveUser')
  • サービス プリンシパルのサインインの場合:

    • GET https://graph.microsoft.com/beta/auditLogs/signIns?&$filter=(createdDateTime ge 2024-01-13T14:13:32Z and createdDateTime le 2024-01-14T17:43:26Z) and signInEventTypes/any(t: t eq 'servicePrincipal')
  • マネージド ID サインインの場合:

    • GET https://graph.microsoft.com/beta/auditLogs/signIns?&$filter=(createdDateTime ge 2024-01-13T14:13:32Z and createdDateTime le 2024-01-14T17:43:26Z) and signInEventTypes/any(t: t eq 'managedIdentity')
  • ユーザーの認証方法を取得するには:

    • GET https://graph.microsoft.com/beta/users/{userObjectId}/authentication/methods
    • UserAuthenticationMethod.Read.All 権限が必要です。
  • ユーザー登録の詳細レポートを表示するには:

    • GET https://graph.microsoft.com/beta/reports/authenticationMethods/userRegistrationDetails
    • UserAuthenticationMethod.Read.All 権限が必要です。
  • 特定のユーザーの登録の詳細:

    • GET https://graph.microsoft.com/beta/reports/authenticationMethods/userRegistrationDetails/{userId}
    • UserAuthenticationMethod.Read.All 権限が必要です。

標準的なサインインと監査のログに慣れたら、次のような他の API を試してみてください。

Microsoft Graph PowerShell を使用してレポートにアクセスする

PowerShell を使って Microsoft Entra レポート API にアクセスできます。 詳細については、Microsoft Graph PowerShell の概要に関する記事を参照してください。

Microsoft Graph PowerShell コマンドレット:

一般的なエラー

エラー: テナントが B2C でない、またはテナントに Premium ライセンスがありません: サインイン レポートにアクセスするには、Microsoft Entra ID P1 または P2 ライセンスが必要です。 サインインへのアクセス中にこのようなエラー メッセージが表示された場合は、テナントに Microsoft Entra ID P1 ライセンスがあることを確認してください。

エラー: 許可されているロールのユーザーではありません: API を使用して監査ログやサインインにアクセスしようとしたときにこのエラー メッセージが表示された場合は、ご利用のアカウントが、Microsoft Entra テナントのセキュリティ閲覧者またはレポート閲覧者のロールに属していることを確認してください。

エラー: アプリケーションに Microsoft Entra ID の 'ディレクトリ データの読み取り' または 'すべての監査ログ データの読み取り' のアクセス許可がありません: Microsoft Graph を使ってアクティビティ ログにアクセスするには、アプリケーションに AuditLog.Read.All または Directory.Read.All のアクセス許可が必要です。

次のステップ