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 の概要」を参照してください。
Microsoft Graph Explorer ツールを起動します。
プロファイルを選び、[アクセス許可の変更] を選びます。
次の必要なアクセス許可に同意します。
AuditLog.Read.All
Directory.Read.All
次のいずれかのクエリを使用して、アクティビティ ログにアクセスするために 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
クエリを微調整する
特定のアクティビティ ログ エントリを検索するには、$filter および createdDateTime クエリ パラメーターと、使用できるプロパティの 1 つを使います。 次のクエリの一部では、beta
エンドポイントを使用します。 ベータ エンドポイントは変更される可能性があり、運用環境での使用は推奨されません。
次のクエリを使ってみてください。
条件付きアクセスが失敗したサインイン試行の場合:
- GET
https://graph.microsoft.com/v1.0/auditLogs/signIns?$filter=conditionalAccessStatus eq 'failure'
- 要求がタイムアウトしないように、日付フィルターを使用することを検討してください。
- GET
特定の期間中の特定のアプリケーションへのサインインを見つけるには:
- 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
非対話型サインインの場合:
- 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
サービス プリンシパルのサインインの場合:
- 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')
- GET
マネージド 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
ユーザーの認証方法を取得するには:
- GET
https://graph.microsoft.com/beta/users/{userObjectId}/authentication/methods
UserAuthenticationMethod.Read.All
権限が必要です。
- GET
ユーザー登録の詳細レポートを表示するには:
- GET
https://graph.microsoft.com/beta/reports/authenticationMethods/userRegistrationDetails
UserAuthenticationMethod.Read.All
権限が必要です。
- GET
特定のユーザーの登録の詳細:
- GET
https://graph.microsoft.com/beta/reports/authenticationMethods/userRegistrationDetails/{userId}
UserAuthenticationMethod.Read.All
権限が必要です。
- GET
関連する API
標準的なサインインと監査のログに慣れたら、次のような他の API を試してみてください。
Microsoft Graph PowerShell を使用してレポートにアクセスする
PowerShell を使って Microsoft Entra レポート API にアクセスできます。 詳細については、Microsoft Graph PowerShell の概要に関する記事を参照してください。
Microsoft Graph PowerShell コマンドレット:
- 監査ログ:
Get-MgAuditLogDirectoryAudit
- サインイン ログ:
Get-MgAuditLogSignIn
- プロビジョニング ログ:
Get-MgAuditLogProvisioning
- レポート関連の 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
のアクセス許可が必要です。