Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
DFIR-O365RC — Office 365およびAzureログ収集のためのPowerShellモジュール | Kitploit
ツール/GitHubGitHub/anssi-fr/dfir-o365rc
フォレンジックデジタルフォレンジッククラウドセキュリティインシデントレスポンスログ分析
GitHubanssi-fr/dfir-o365rc

DFIR-O365RC

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

リポジトリを見る
2823411ヶ月前Kitploit レビュー済み

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

DFIR-O365RC

Publish Docker image to Dockerhub Publish module to PowerShell Gallery


目次

  1. モジュールの説明

  2. インストールと前提条件

    1. Dockerを使用する場合
    2. 手動インストール
  3. DFIR-O365RCアプリケーションの管理

    1. アプリケーションの作成
    2. アプリケーションの更新
    3. アプリケーションの削除
  4. アクセス許可とライセンス要件

  5. モジュールに含まれる関数

  6. 生成されるファイル

DFIR-O365RCはSSTIC 2021(情報技術・通信セキュリティに関するシンポジウム)で発表されました。プレゼンテーションのスライドと録画(フランス語)はこちらから入手できます。

⚠️ 2024年3月31日、MicrosoftはDFIR-O365RCで使用していた認証方式を非推奨としました。これにより、2024年8月にバージョン2.0.0がリリースされました。このバージョンでは、認証に関して互換性のない変更が加えられ、コード全体がリファクタリングされています。 ⚠️

モジュールの説明

DFIR-O365RC PowerShellモジュールは、フォレンジックアナリストがMicrosoft 365の侵害に関連するログを収集し、Entra IDの調査を実施できるようにする関数群です。

ログはJSON形式で生成され、主に2つのデータソースから取得されます。

  • Microsoft 365 統合監査ログ
  • Microsoft Entra サインインログおよび監査ログ

これらのデータソースは、異なるエンドポイントからクエリできます。

* Office 365 Management APIは、SIEMでリアルタイムにデータを分析することを目的としています。DFIR-O365RCはフォレンジックツールであり、Microsoft 365環境をリアルタイムで監視することを目的としていません。

DFIR-O365RCは以下のデータソースからデータを取得します。

  • Microsoft Entraログ: Microsoft Graph PowerShellを使用(パフォーマンスが良く、Microsoft Graph REST APIをラップしているため)
  • デフォルトでは、統合監査ログをExchange Online PowerShellを使用して取得:パフォーマンスは低いものの、現時点で唯一使用可能なオプション
  • オプションで、統合監査ログをPurviewを使用して取得:保持期間は180日でパフォーマンスは良いが、まだベータ版であり、バックエンドのバグにより現時点では使用不可

Microsoft 365の悪意あるアクティビティを調査している場合、Search-O365(Exchange Online PowerShellから)はメールボックス監査ログも取得しますが、Search-MailboxAuditLogコマンドレットは非推奨となっています。

他のAzureリソースを調査する場合は、DFIR-O365RCを使用して次のことが可能です。

  • Azure MonitorアクティビティログをAz.Monitor PowerShellモジュールを使用して取得(保持期間90日)。このログはAzure Resource Manager内のアクティビティ(Azureサブスクリプションに関連)に焦点を当てています。
  • Azure DevOps監査ログをAzure DevOps Services REST APIを使用して取得(保持期間90日)。このログはAzure DevOps内のアクティビティ(Azure DevOps組織に関連)に焦点を当てています。

インストールと前提条件

Dockerを使用する場合

これはDFIR-O365RCの推奨される使用方法です

次のように入力します :```bash sudo docker pull anssi/dfir-o365rc:latest sudo docker run --rm -v .:/mnt/host -it anssi/dfir-o365rc:latest

root@kitploit:~
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

using legacy Compose V1

sudo docker-compose run dfir-o365rc

root@kitploit:~
### 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のモジュールパスのいずれかに追加することもできます。

DFIR-O365RCアプリケーションの管理

アプリケーションの作成

モジュールをインポートしたら、ログ収集プロセスを処理するEntraアプリケーションを作成する必要があります。

そのためには:

  1. 自己署名証明書を作成し、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"

    root@kitploit:~

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()))

root@kitploit:~
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

root@kitploit:~
オプションとして、テナントの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

root@kitploit:~
### アプリケーションの更新

アプリケーションを作成した後でも、モジュールの `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);
  • PFX形式の証明書へのパス(-certificatePath)。これはアプリケーションの作成時に取得されます。

Examples:

読みやすくするために、次のことを前提とします:```powershell $appId = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" $tenant = "example.onmicrosoft.com" $certificatePath = "./example.pfx"

root@kitploit:~
実際のケースでは、それらのパラメータは[アプリケーションの作成時](#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

root@kitploit:~
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

root@kitploit:~
過去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

root@kitploit:~
メールボックス監査が有効になっている場合、専用スイッチを使用して `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

root@kitploit:~
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)

Retrieve events which contains the "Python" or "Python3" free text

Search-O365 -startDate $startDate -endDate $endDate -appId $appId -tenant $tenant -certificatePath $certificatePath -freeTexts "Python","Python3"

Retrieve events related to the IP adresses 8.8.8.8 and 4.4.4.4.

Search-O365 -startDate $startDate -endDate $endDate -appId $appId -tenant $tenant -certificatePath $certificatePath -IPAddresses "8.8.8.8","4.4.4.4"

Retrieve events related to users [email protected] and [email protected]

Search-O365 -startDate $startDate -endDate $endDate -appId $appId -tenant $tenant -certificatePath $certificatePath -userIds "[email protected]","[email protected]"

root@kitploit:~
特定の**ユーザー**を検索する場合、`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

root@kitploit:~
## 生成されるファイル

生成されるファイルはすべて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 PowerShell90日低いMicrosoft 365の全ログ(Entraを含む)
統合監査ログ / Purview180日良いMicrosoft 365の全ログ(Entraを含む)
統合監査ログ / Office 365 Management API *7日良いMicrosoft 365の全ログ(Entraを含む)
Microsoft Entraログ / Microsoft Graph PowerShell30日良いEntraのサインインと監査ログのみ
Microsoft Entraログ / Microsoft Graph REST API30日良いEntraのサインインと監査ログのみ