
Office 365およびAzureログ収集のためのPowerShellモジュール

DFIR-O365RCはSSTIC 2021(情報技術・通信セキュリティに関するシンポジウム)で発表されました。プレゼンテーションのスライドと録画(フランス語)はこちらから入手できます。
⚠️ 2024年3月31日、MicrosoftはDFIR-O365RCで使用していた認証方式を非推奨としました。これにより、2024年8月にバージョン2.0.0がリリースされました。このバージョンでは、認証に関して互換性のない変更が加えられ、コード全体がリファクタリングされています。 ⚠️
DFIR-O365RC PowerShellモジュールは、フォレンジックアナリストがMicrosoft 365の侵害に関連するログを収集し、Entra IDの調査を実施できるようにする関数群です。
ログはJSON形式で生成され、主に2つのデータソースから取得されます。
これらのデータソースは、異なるエンドポイントからクエリできます。
* Office 365 Management APIは、SIEMでリアルタイムにデータを分析することを目的としています。DFIR-O365RCはフォレンジックツールであり、Microsoft 365環境をリアルタイムで監視することを目的としていません。
DFIR-O365RCは以下のデータソースからデータを取得します。
Microsoft 365の悪意あるアクティビティを調査している場合、Search-O365(Exchange Online PowerShellから)はメールボックス監査ログも取得しますが、Search-MailboxAuditLogコマンドレットは非推奨となっています。
他のAzureリソースを調査する場合は、DFIR-O365RCを使用して次のことが可能です。
これはDFIR-O365RCの推奨される使用方法です
次のように入力します :```bash sudo docker pull anssi/dfir-o365rc:latest sudo docker run --rm -v .:/mnt/host -it anssi/dfir-o365rc:latest
DFIR-O365RC は使用準備ができました:```bash
PowerShell 7.4.2
DFIR-O365RC: PowerShell module for Microsoft 365 and Entra ID log collection
https://github.com/ANSSI-FR/DFIR-O365RC
PS /mnt/host/output>
Dockerイメージを手動でビルドしたい場合は、リポジトリをクローンし、docker compose(または従来のdocker-compose)を使用してイメージをビルドし、コンテナを実行してボリュームをマウントします(output/フォルダ内)。```bash
sudo docker compose build dfir-o365rc
sudo docker compose run dfir-o365rc
sudo docker-compose run dfir-o365rc
### PowerShell の使用
このモジュールは *PowerShell Desktop* および *PowerShell Core* にインストールできます。
`Connect-ExchangeOnline` コマンドレットには [Microsoft .NET Framework 4.7.2 以降が必要](https://learn.microsoft.com/ja-jp/powershell/exchange/exchange-online-powershell-v2?view=exchange-ps#windows) であることに注意してください。
PowerShell ギャラリーからモジュールをインストールするには:```powershell
Install-Module -Name DFIR-O365RC
モジュールを手動でインストールするには、DFIR-O365RCリポジトリをクローンし、必要な依存関係をインストールし(DFIR-O365RC.psd1を確認)、DFIR-O365RCディレクトリをPowerShellのモジュールパスのいずれかに追加することもできます。
モジュールをインポートしたら、ログ収集プロセスを処理するEntraアプリケーションを作成する必要があります。
そのためには:
自己署名証明書を作成し、base64エンコードされた公開部分を取得します:
Linux、PowerShell Core、またはDockerコンテナを使用する場合: ```bash openssl req -new -x509 -newkey rsa:2048 -sha256 -days 365 -nodes -out exampleDFIRO365RC.crt -keyout exampleDFIRO365RC.key -batch openssl pkcs12 -inkey exampleDFIRO365RC.key -in exampleDFIRO365RC.crt -export -out exampleDFIRO365RC.pfx # Enter a password for the certificate openssl x509 -in exampleDFIRO365RC.crt -outform DER -out - | base64 | tr -d "\n"
Windows上で、PowerShellを使用する場合: ```powershell $certificate = New-SelfSignedCertificate -Subject "CN=exampleDFIRO365RC" -KeySpec KeyExchange -NotBefore (Get-Date) -NotAfter (Get-Date).AddDays(365) $certificatePassword = Read-Host -MaskInput "Please enter a password for the certificate" $certificateSecurePassword = ConvertTo-SecureString -String $certificatePassword -AsPlainText -Force Export-PfxCertificate -Cert $certificate -FilePath exampleDFIRO365RC.pfx -Password $certificateSecurePassword Write-Host ([System.Convert]::ToBase64String($certificate.GetRawCertData()))
2) DFIR-O365RC モジュールから `New-Application` コマンドレットを使用します: ```powershell
$certificateb64="<base64-encoded public part from step 1>"
New-Application -certificateb64 $certificateb64
オプションとして、テナントのサブスクリプションでログを収集できるようにしたい場合(Get-AzRMActivityLogs を使用する予定がない場合は不要です): ```powershell
New-Application -certificateb64 $certificateb64 -subscriptions
オプションとして、テナントのAzure DevOps組織でログを収集できるようにしたい場合(これには長時間かかる可能性があり、`Get-AzDevOpsActivityLogs`を使用する予定がない場合は必要ありません): ```powershell
New-Application -certificateb64 $certificateb64 -organizations
アプリケーションを作成するには、高い特権を持つアカウントを使用して、Azure に数回ログインする必要があります。
アプリケーションが作成されると、以下のような出力が表示されます。 ```powershell Done creating the application with the required permissions Please use the following identifiers: WARNING: AppID: xxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx WARNING: Tenant: example.onmicrosoft.com
### アプリケーションの更新
アプリケーションを作成した後でも、モジュールの `Update-Application` コマンドレットを使用して、その資格情報とアクセス許可を更新できます。
- 新しい証明書をアプリケーションに追加できます。
`Update-Application -certificateb64 <base64でエンコードされた公開部分>`
- ログを収集できる新しいサブスクリプションを指定できます。
`Update-Application -subscriptions`
- ログを収集できる新しい Azure DevOps 組織を指定できます。
`Update-Application -organizations`
- アプリケーションのアクセス許可を更新できます。これは、古いアプリケーションがあり、作成後にアクセス許可が更新された場合に特に便利です。
`Update-Application -permissions`
### アプリケーションの削除
ログ収集が完了したら、モジュールの `Remove-Application` コマンドレットを使用してアプリケーションを削除できます。
アプリケーションを削除するには、**高い特権**を持つアカウントを使用して、Azure に複数回ログインする必要があります。
アプリケーションがサブスクリプションまたは Azure DevOps 組織のログを収集できた場合は、`-organizations` または `-subscriptions` スイッチ (またはその両方) を追加する必要があります。
## アクセス許可とライセンスの要件
⚠️
バージョン 2.0.0 以降、このツールは [アプリ専用アクセス / アプリケーションのアクセス許可](https://learn.microsoft.com/en-us/entra/identity-platform/permissions-consent-overview#app-only-access-access-without-a-user) を持つサービスプリンシパルのコンテキストで実行されるようになりました。
バージョン 2.0.0 以降を使用するには、[アプリケーションを作成](#creating-the-application) する必要があります。
アプリケーションが作成されると、スクリプトはアプリケーションの資格情報とアクセス許可を使用して実行されます。
⚠️
アプリケーションは、必要最低限のアクセス許可セットで作成されます。
- `Office 365 Exchange Online` API の `Exchange.ManageAsApp` (Exchange Online PowerShell コマンドレットを実行できるようにするために必要)
- `Microsoft Graph` API の `AuditLog.Read.All` (Microsoft Entra ログ収集に必要)
- `Microsoft Graph` API の `AuditLogsQuery.Read.All` (Purview を使用した統合監査ログ収集に必要)
- `Microsoft Graph` API の `Application.Read.All` および `DelegatedPermissionGrant.Read.All` (アプリケーションとサービスプリンシパルに関連する Microsoft Entra ログのエンリッチメントのために必要)
- `Microsoft Graph` API の `Device.Read.All` (デバイスに関連する Microsoft Entra ログのエンリッチメントのために必要)
- `Microsoft Graph` API の `User.Read.All` (ユーザーに関する情報の取得に必要)
- `Microsoft Graph` API の `UserAuthenticationMethod.Read.All` (ユーザーの認証方法に関する情報の取得に必要)
- `Microsoft Graph` API の `Organization.Read.All` (テナントに関する一般情報の取得に必要)
- `Exchange Online` の `View-only audit logs` ( `Search-UnifiedAuditLog` コマンドレットを使用するために必要)
オプション (`-subscriptions` スイッチを使用する場合):
- 選択したサブスクリプションのサブセットに対して: `Microsoft.Insights/eventtypes/*` に対する `Reader` ロール (Azure Monitor アクティビティログを取得するために必要)
オプション (`-organizations` スイッチを使用する場合):
- 選択した Azure DevOps サブスクリプションのサブセットに対して: `View audit log` (Azure DevOps 監査ログを取得するために必要)
Microsoft Graph API を使用して Microsoft Entra ログを取得するには、[Microsoft Entra ID P1](https://www.microsoft.com/en-us/security/business/microsoft-entra-pricing) ライセンスを持つユーザーが少なくとも 1 人必要です。このライセンスは単一ユーザーに対して購入することも、*Microsoft 365 Business Premium* プランなどの一部のライセンスプランに含まれる場合もあります。
## モジュールに含まれる関数
モジュールには 10 個の関数があります。
| **機能** | **データソース** | **保持期間** | **パフォーマンス** | **完全性** | **詳細** |
|---|---|---|---|---|---|
| `Get-O365Full` | 統合監査ログ | 90 日 / 180 日* | 低い | すべての統合監査ログ | デフォルトでは、統合監査ログ全体を取得します。これは、小規模なテナントまたは短期間でのみ使用する必要があります。<br />このコマンドレットを使用して、特定の [レコードタイプ](https://learn.microsoft.com/en-us/office/office-365-management-api/office-365-management-activity-api-schema#enum-auditlogrecordtype---type-edmint32) のイベントを収集することもできます。 |
| `Get-O365Light` | 統合監査ログ | 90 日 / 180 日* | 良い | 統合監査ログのサブセットのみ | 重要と見なされる一部の *操作* のみを取得します。 |
| `Get-O365Defender` | 統合監査ログ | 90 日 / 180 日* | 良い | 統合監査ログのサブセットのみ | Microsoft Defender for Microsoft 365 に関連するイベントを取得します。少なくとも 1 つの [Office 365 E5](https://www.microsoft.com/en-us/microsoft-365/enterprise/office-365-e5?activetab=pivot:overviewtab) ライセンス、または Microsoft Defender for Office 365 を含むライセンスプランが必要です。 |
| `Get-AADLogs` | Microsoft Entra ログ | 30 日 | 良い | すべての Microsoft Entra ログ | テナント情報とすべての Microsoft Entra ログ (サインインログと監査ログ) を取得します。 |
| `Get-AADApps` | N/A | N/A | 良い | 完全 | Microsoft Entra ID サービスプリンシパルとそのアプリケーション、oauth2PermissionGrants、appRoleAssignments |
| `Get-AADDevices` | N/A | N/A | 良い | 完全 | Microsoft Entra ID デバイスとその所有者/ユーザー |
| `Get-AADUsers` | N/A | N/A | 良い | 完全 | Microsoft Entra ID ユーザーとその認証方法 |
| `Search-O365` | 統合監査ログ / メールボックス監査ログ** | 90 日 / 180 日* | 低い | 統合監査ログのサブセットのみ | 特定のユーザー、IP アドレス、または自由文に関連するアクティビティを検索します。 |
| `Get-AzRMActivityLogs` | Azure Monitor アクティビティログ | 90 日 | 良い | すべての Azure Monitor アクティビティログ | 選択したサブスクリプションのサブセットに対するすべての Azure Monitor アクティビティログを取得します。 |
| `Get-AzDevOpsActivityLogs` | Azure DevOps 監査ログ | 90 日 | 良い | すべての Azure DevOps 監査ログ | 選択した Azure DevOps 組織のサブセットに対するすべての Azure DevOps 監査ログを取得します。 |
\* Exchange Online のデフォルトの保持期間 90 日に対して、Purview を使用すると 180 日の保持期間を取得できます。
\** ユーザーを検索する場合、`Search-O365` コマンドレットはメールボックス監査ログも検索します。
各関数には、*Get-Help* コマンドレットで呼び出せるコメントベースのヘルプがあります。```powershell
# Display comment-based help
PS> Get-Help Get-O365Full
# Display comment-based help with examples
PS> Get-Help Get-O365Full -Examples
各関数は以下のパラメータを取ります:
-startDate);-endDate);-appId)。これはアプリケーションの作成時に取得されます;-tenant);-certificatePath)。これはアプリケーションの作成時に取得されます。Examples:
読みやすくするために、次のことを前提とします:```powershell $appId = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" $tenant = "example.onmicrosoft.com" $certificatePath = "./example.pfx"
実際のケースでは、それらのパラメータは[アプリケーションの作成時](#creating-the-application)に収集されます。
過去30日間のMicrosoft Entraログと、テナントに関する一般情報を取得するには:```powershell
$endDate = Get-Date
$startDate = $endDate.AddDays(-30)
Get-AADLogs -startDate $startDate -endDate $endDate -appId $appId -tenant $tenant -certificatePath $certificatePath
Microsoft Entra のサービスプリンシパルとそのアプリケーション、oauth2PermissionGrant、および appRoleAssignment を取得します。```powershell $endDate = Get-Date $startDate = $endDate.AddDays(-30) Get-AADApps --appId $appId -tenant $tenant -certificatePath $certificatePath
Microsoft Entraデバイスとその所有者とユーザーを取得する:```powershell
$endDate = Get-Date
$startDate = $endDate.AddDays(-30)
Get-AADDevices -appId $appId -tenant $tenant -certificatePath $certificatePath
Microsoft Entra ユーザーとその認証方法設定を取得する:```powershell Get-AADUsers -appId $appId -tenant $tenant -certificatePath $certificatePath -authenticationMethods
過去30日間の関心があると見なされる統合監査ログイベントを、最初のコマンドで既に取得されたEntra IDに関連するものを除いて取得する:```powershell
$endDate = Get-Date
$startDate = $endDate.AddDays(-30)
Get-O365Light -startDate $startDate -endDate $endDate -appId $appId -tenant $tenant -certificatePath $certificatePath -operationsSet "allButAzureAD"
現在から90日前から30日前までの時間枠内で、関心があるとみなされる統合監査ログイベントを取得します:```powershell $endDate = (Get-Date).AddDays(-30) $startDate = (Get-Date).AddDays(-90) Get-O365Light -startDate $startDate -endDate $endDate -appId $appId -tenant $tenant -certificatePath $certificatePath
メールボックス監査が有効になっている場合、専用スイッチを使用して `MailboxLogin` 操作を取得することもできます:
_検索あたり50.000イベントのグローバル制限に注意してください_```powershell
Get-O365Light -startDate $startDate -endDate $endDate -appId $appId -tenant $tenant -certificatePath $certificatePath -mailboxLogin
テナント内にOffice 365 E5ライセンスを持つユーザーがいる場合、またはMicrosoft Defender for Office 365プランがある場合、過去90日間のMicrosoft Defender関連ログを取得できます。```powershell $endDate = Get-Date $startDate = $endDate.AddDays(-90) Get-O365Defender -startDate $startDate -endDate $endDate -appId $appId -tenant $tenant -certificatePath $certificatePath
2020年のクリスマスイブからボクシング・デーまでのUnified Audit Logイベントをすべて取得するには:
_そのコマンドレットを使用するパフォーマンスは悪いことに注意してください_```powershell
$endDate = Get-Date "12/26/2020"
$startdate = Get-Date "12/24/2020"
Get-O365Full -startDate $startDate -endDate $endDate -appId $appId -tenant $tenant -certificatePath $certificatePath
検索機能を使用して、IPアドレスや特定のユーザーに関連するアクティビティを検索したり、統合監査ログ内でフリーテキスト検索を実行したりできます。```powershell $endDate = Get-Date $startDate = $endDate.AddDays(-90)
Search-O365 -startDate $startDate -endDate $endDate -appId $appId -tenant $tenant -certificatePath $certificatePath -freeTexts "Python","Python3"
Search-O365 -startDate $startDate -endDate $endDate -appId $appId -tenant $tenant -certificatePath $certificatePath -IPAddresses "8.8.8.8","4.4.4.4"
Search-O365 -startDate $startDate -endDate $endDate -appId $appId -tenant $tenant -certificatePath $certificatePath -userIds "[email protected]","[email protected]"
特定の**ユーザー**を検索する場合、`Search-O365` はメールボックス監査ログも検索します。これは、ユーザーのライセンスレベルや設定によって、統合監査ログに一部のメールボックスログが含まれていない可能性があるためです。
アプリケーションがアクセス権を持つサブスクリプションからすべてのAzure Resource Managerアクティビティログを取得するには:```powershell
$endDate = Get-Date
$startDate = $endDate.AddDays(-90)
Get-AzRMActivityLogs -startDate $startDate -endDate $endDate -appId $appId -tenant $tenant -certificatePath $certificatePath
アプリケーションがアクセス権を持つすべての組織から Azure DevOps アクティビティログを取得するには:```powershell $endDate = Get-Date $startDate = $endDate.AddDays(-90) Get-AzDevOpsActivityLogs -startDate $startDate -endDate $endDate -appId $appId -tenant $tenant -certificatePath $certificatePath
## 生成されるファイル
生成されるファイルはすべてJSON形式です。
_複数のcmdletを起動してPurviewを使用し、同じ出力ファイルに書き込むと、「単純な」連結のために無効なJSONになる可能性があります_
- `Get-AADApps`は`azure_ad_apps`フォルダに以下を作成します:
- 既存および削除されたアプリケーションを含むJSONファイル: `AADApps_example.onmicrosoft.com_applications_raw.json`;
- 既存および削除されたサービスプリンシパルを含むJSONファイル: `AADApps_example.onmicrosoft.com_service_principals_raw.json`;
- エンリッチされたサービスプリンシパルを含むJSONファイル: `AADApps_example.onmicrosoft.com.json`.
- `Get-AADDevices`は`azure_ad_devices`フォルダに以下を作成します:
- 既存および削除されたデバイスを含むJSONファイル: `AADDevices_example.onmicrosoft.com_devices_raw.json`;
- エンリッチされたデバイスを含むJSONファイル: `AADDevices_example.onmicrosoft.com.json`.
- `Get-AADUsers`は`azure_ad_users`フォルダに以下を作成します:
- 既存および削除されたユーザーを含むJSONファイル: `AADUsers_example.onmicrosoft.com_users_raw.json`;
- ユーザーの認証設定を含むJSONファイル: `AADUsers_example.onmicrosoft.com_users_settings_raw.json`;
- エンリッチされたユーザーを含むJSONファイル: `AADUsers_example.onmicrosoft.com.json`.
- `Get-AADLogs`は以下を作成します:
- `azure_ad_tenant`フォルダ内:
- テナントの一般情報を含むJSONファイル: `AADTenant_example.onmicrosoft.com.json`.
- `azure_ad_audit`フォルダ内:
- Microsoft Entra監査ログを含むJSONファイル: `AADAuditLog_example.onmicrosoft.com_YYYY-MM-DD.json`.
- `azure_ad_signin`フォルダ内:
- Microsoft Entraサインインログを含むJSONファイル: `YYYY-MM-DD/AADSigninLog_example.onmicrosoft.com_YYYY-MM-DD_HH-00-00.json`.
- `Get-AzRMActivityLogs`は以下を作成します:
- `azure_rm_subscriptions`フォルダ内:
- サブスクリプションの一般情報を含むJSONファイル: `AzRMsubscriptions_example.onmicrosoft.com.json`.
- `azure_rm_activity`フォルダ内:
- Azure Monitorアクティビティログを含むJSONファイル: `YYYY-MM-DD/AzRM_example.onmicrosoft.com_%SubscriptionID%_YYYY-MM-DD_HH-00-00.json`.
- `Get-AzDevOpsActivityLogs`は以下を作成します:
- `azure_DevOps_orgs`フォルダ内:
- Azure DevOps組織の一般情報を含むJSONファイル: `AzdevopsOrgs_example.onmicrosoft.com.json`.
- `azure_DevOps_activity`フォルダ内:
- Azure DevOps監査ログを含むJSONファイル: `YYYY-MM-DD/AzDevOps_example.onmicrosoft.com_%AzureDevOpsOrg%_YYYY-MM-DD_HH-00-00.json`.
- `Get-O365Full`は`O365_unified_audit_logs`フォルダ内(それぞれPurview使用時は`O365_unified_audit_logs_purview`)に以下を作成します:
- Unified Auditログを含むJSONファイル: `YYYY-MM-DD/UnifiedAuditLog_example.onmicrosoft.com_YYYY-MM-DD_HH-00-00.json`(それぞれPurview使用時は`*/UnifiedAuditLogPurview_*`);
- 指定された[RecordTypes](https://learn.microsoft.com/en-us/office/office-365-management-api/office-365-management-activity-api-schema#enum-auditlogrecordtype---type-edmint32)のUnified Auditログを含むJSONファイル: `YYYY-MM-DD/UnifiedAuditLog_example.onmicrosoft.com_YYYY-MM-DD_HH-00-00_%RecordType%.json`(それぞれPurview使用時は`*/UnifiedAuditLogPurview_*`).
- `Get-O365Light`は`O365_unified_audit_logs`フォルダ内(それぞれPurview使用時は`O365_unified_audit_logs_purview`)に以下を作成します:
- 関心があるとみなされる*操作*のサブセットのUnified Auditログを含むJSONファイル: `YYYY-MM-DD/UnifiedAuditLog_example.onmicrosoft.com_YYYY-MM-DD_HH-00-00.json`(それぞれPurview使用時は`*/UnifiedAuditLogPurview_*`).
- `Get-O365Defender`は`O365_unified_audit_logs`フォルダ内(それぞれPurview使用時は`O365_unified_audit_logs_purview`)に以下を作成します:
- Defenderに関連する[RecordTypes](https://learn.microsoft.com/en-us/office/office-365-management-api/office-365-management-activity-api-schema#enum-auditlogrecordtype---type-edmint32)のUnified Auditログを含むJSONファイル: `YYYY-MM-DD/UnifiedAuditLog_example.onmicrosoft.com_YYYY-MM-DD_HH-00-00_%RecordType%.json`(それぞれPurview使用時は`*/UnifiedAuditLogPurview_*`).
- `Search-O365`は以下を作成します:
- `O365_unified_audit_logs`フォルダ内(それぞれPurview使用時は`O365_unified_audit_logs_purview`):
- 指定された`RequestType`(`FreeText`, `IPAddresses`, または`UserIds`)のUnified Auditログを含むJSONファイル: `YYYY-MM-DD/UnifiedAuditLog_example.onmicrosoft.com_YYYY-MM-DD_HH-00-00_%RequestType%_YYYY-MM-DD-HH-MM-SS.json`(それぞれPurview使用時は`*/UnifiedAuditLogPurview_*`)。`YYYY-MM-DD-HH-MM-SS`は収集が行われた時刻を表します。`FreeText`を検索する場合、末尾に`_%i`が追加されます。これは`%i`番目のフリーテキストの検索結果であることを示します。
- `Exchange_mailbox_audit_logs`フォルダ内:
- メールボックス監査ログを含むJSONファイル(UserIDsを検索する場合のみ): `YYYY-MM-DD/MailboxAuditLog_example.onmicrosoft.com_YYYY-MM-DD_HH-00-00_UserIds_YYYY-MM-DD-HH-MM-SS_%UserID%.json`。`YYYY-MM-DD-HH-MM-SS`は収集が行われた時刻を表します。`%UserID%`はこのUserIDの検索結果であることを示します。
各種関数を起動すると、以下のようなディレクトリ構造が生成されます:```
output
│ Get-AADApps.log
│ Get-AADDevices.log
│ Get-AADLogs.log
│ Get-AzDevOpsActivityLogs.log
│ Get-AzRMActivityLogs.log
│ Get-O365Defender.log
│ Get-O365Full.log
│ Get-O365Light.log
│ Search-O365.log
│
├───azure_ad_apps
│ AADApps_example.onmicrosoft.com.json
│ AADApps_example.onmicrosoft.com_applications_raw.json
│ AADApps_example.onmicrosoft.com_service_principals_raw.json
│
├───azure_ad_audit
│ AADAuditLog_example.onmicrosoft.com_YYYY-MM-DD.json
│ [...]
│
├───azure_ad_devices
│ AADDevices_example.onmicrosoft.com.json
│ AADDevices_example.onmicrosoft.com_devices_raw.json
│
├───azure_ad_signin
│ ├───YYYY-MM-DD
│ │ AADSigninLog_example.onmicrosoft.com_YYYY-MM-DD_HH-00-00.json
│ │ [...]
│ │
│ ├───[...]
│
├───azure_ad_tenant
│ AADTenant_example.onmicrosoft.com.json
│
├───azure_ad_users
│ AADUsers_divreponse.onmicrosoft.com.json
│ AADUsers_divreponse.onmicrosoft.com_users_raw.json
│ AADUsers_divreponse.onmicrosoft.com_users_settings_raw.json
|
├───azure_DevOps_activity
│ ├───YYYY-MM-DD
│ │ AzDevOps_example.onmicrosoft.com_%AzureDevOpsOrg%_YYYY-MM-DD_HH-00-00.json
│ │ [...]
│ │
│ ├───[...]
│
├───azure_DevOps_orgs
│ AzdevopsOrgs_example.onmicrosoft.com.json
├───azure_rm_activity
│ ├───YYYY-MM-DD
│ │ AzRM_example.onmicrosoft.com_%SubscriptionID%_YYYY-MM-DD_HH-00-00.json
│ │ [...]
│ │
│ ├───[...]
│
├───azure_rm_subscriptions
│ AzRMsubscriptions_example.onmicrosoft.com.json
│
├───Exchange_mailbox_audit_logs
│ └───YYYY-MM-DD
│ │ MailboxAuditLog_example.onmicrosoft.com_YYYY-MM-DD_HH-00-00_UserIds_YYYY-MM-DD-HH-MM-SS_%UserID%.json
│ │ [...]
│ │
│ ├───[...]
│
├───O365_unified_audit_logs
│ ├───YYYY-MM-DD
│ │ UnifiedAuditLog_example.onmicrosoft.com_YYYY-MM-DD_HH-00-00.json
│ │ UnifiedAuditLog_example.onmicrosoft.com_YYYY-MM-DD_HH-00-00_%RecordType%.json
│ │ UnifiedAuditLog_example.onmicrosoft.com_YYYY-MM-DD_HH-00-00_UserIds_YYYY-MM-DD-HH-MM-SS.json
│ │ UnifiedAuditLog_example.onmicrosoft.com_YYYY-MM-DD_HH-00-00_IPAddresses_YYYY-MM-DD-HH-MM-SS.json
│ │ UnifiedAuditLog_example.onmicrosoft.com_YYYY-MM-DD_HH-00-00_FreeText_YYYY-MM-DD-HH-MM-SS_%i.json
│ │ [...]
│ │
│ ├───[...]
│
└───O365_unified_audit_logs_purview
│ ├───YYYY-MM-DD
│ │ UnifiedAuditLogPurview_example.onmicrosoft.com_YYYY-MM-DD_HH-00-00.json
│ │ UnifiedAuditLogPurview_example.onmicrosoft.com_YYYY-MM-DD_HH-00-00_%RecordType%.json
│ │ UnifiedAuditLogPurview_example.onmicrosoft.com_YYYY-MM-DD_HH-00-00_UserIds_YYYY-MM-DD-HH-MM-SS.json
│ │ UnifiedAuditLogPurview_example.onmicrosoft.com_YYYY-MM-DD_HH-00-00_IPAddresses_YYYY-MM-DD-HH-MM-SS.json
│ │ UnifiedAuditLogPurview_example.onmicrosoft.com_YYYY-MM-DD_HH-00-00_FreeText_YYYY-MM-DD-HH-MM-SS_%i.json
│ │ [...]
│ │
│ ├───[...]
| データソース / エンドポイント | 保持期間 | パフォーマンス | 範囲 |
|---|
| 統合監査ログ / Exchange Online PowerShell | 90日 | 低い | Microsoft 365の全ログ(Entraを含む) |
| 統合監査ログ / Purview | 180日 | 良い | Microsoft 365の全ログ(Entraを含む) |
| 統合監査ログ / Office 365 Management API * | 7日 | 良い | Microsoft 365の全ログ(Entraを含む) |
| Microsoft Entraログ / Microsoft Graph PowerShell | 30日 | 良い | Entraのサインインと監査ログのみ |
| Microsoft Entraログ / Microsoft Graph REST API | 30日 | 良い | Entraのサインインと監査ログのみ |