次の方法で共有


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

Microsoft Entra Reporting APIは、一連の REST API を使用してデータにプログラムによるアクセスを提供します。 これらの API は、多くのプログラミング言語やツールから呼び出すことができます。

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

前提条件

  • Microsoft Entra ID P1 または P2 ライセンスが関連付けられている動作中の Microsoft Entra テナント。
  • 必要なアクセス許可に同意するには、特権ロール管理者が必要です。

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

すべての前提条件を構成すると、Microsoft Graph でアクティビティ ログのクエリを実行できます。 Microsoft Graph API は、大量のアクティビティ データをプルする用途に合わせて設計されていません。 API を使用して大量のアクティビティ データをプルすると、改ページ位置の自動修正とパフォーマンスの問題が発生します。 アクティビティ ログへの 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
    • GET https://graph.microsoft.com/beta/auditLogs/signUps

    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 権限が必要です。

サインアップ クエリのサンプル (プレビュー)

外部テナントでのサインアップ アクティビティには、次のクエリを使用してみてください。

  • ユーザー オブジェクトの作成など、特定の手順で失敗または中断されたサインアップ試行を検索するには:

    • GET https://graph.microsoft.com/beta/auditLogs/signUps?$filter=status/errorCode ne 0 and signUpStage eq 'userCreation'
  • 電子メールの検証中に失敗したサインアップ試行を見つけるには:

    • GET https://graph.microsoft.com/beta/auditLogs/signUps?$filter=status/errorCode eq 1002013 and signUpStage eq 'credentialValidation'

    エラー コード 1002013は、サインアップ フローの予期された (および成功した) 割り込みを示します。 詳細情報

  • 日付範囲内の登録に関しては:

    • GET https://graph.microsoft.com/beta/auditLogs/signUps?&$filter=(createdDateTime ge 2024-01-13T14:13:32Z and createdDateTime le 2024-01-14T17:43:26Z)
  • 特定のアプリケーションのサインアップの場合:

    • GET https://graph.microsoft.com/beta/auditLogs/signUps?$filter=appId eq 'AppId'
  • ローカル アカウントのサインアップの場合:

    • GET https://graph.microsoft.com/beta/auditLogs/signUps?$filter=signUpIdentityProvider eq 'Email OTP' or signUpIdentityProvider eq 'Email Password'
  • ソーシャル アカウントのサインアップの場合 (この例では Google):

    • GET https://graph.microsoft.com/beta/auditLogs/signUps?$filter=signUpIdentityProvider eq ‘Google'
  • 特定のユーザーのエントリを表示するには (例: user@contoso.com)。

    • GET https://graph.microsoft.com/beta/auditLogs/signUps?$filter=signUpIdentity/signUpIdentifier eq 'user@contoso.com'
  • 特定の関連付け ID に一致するエントリを検索するには:

    • GET https://graph.microsoft.com/beta/auditLogs/signUps?$filter=correlationId eq 'CorrelationId'
  • 関連付け ID を使用して、特定のサインアップに対応するサインイン ログ エントリを検索するには:

    • GET https://graph.microsoft.com/v1.0/auditLogs/signIns?$filter=correlationId eq 'CorrelationId'

標準的なサインインと監査のログに慣れたら、次のような他の 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 のアクセス許可が必要です。