
Модуль PowerShell для сбора журналов Office 365 и Azure

DFIR-O365RC был представлен на SSTIC 2021 (Symposium sur la sécurité des technologies de l'information et des communications). Слайды и запись выступления (на французском языке) доступны здесь.
⚠️ 31 марта 2024 года Microsoft прекратила поддержку метода аутентификации, который мы использовали для DFIR-O365RC. Это привело к выпуску версии 2.0.0 в августе 2024 года с критическими изменениями, касающимися аутентификации и глобального рефакторинга кода. ⚠️
Модуль PowerShell DFIR-O365RC представляет собой набор функций, позволяющий специалисту по криминалистике собирать журналы, актуальные для расследования инцидентов в Microsoft 365, и проводить расследования в Entra ID.
Журналы генерируются в формате JSON и извлекаются из двух основных источников данных:
Эти два источника данных можно запрашивать из различных конечных точек:
* 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/en-us/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) Используйте командлет `New-Application` из модуля DFIR-O365RC: ```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-encoded public part>`
- Вы можете указать новые подписки, в которых вы хотели бы собирать журналы:
`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).
После создания приложения скрипт будет запускаться с использованием учётных данных и разрешений приложения.
⚠️
Приложение будет создано с минимально возможным набором требуемых разрешений:
- `Exchange.ManageAsApp` для API `Office 365 Exchange Online` (необходимо для выполнения командлетов Exchange Online PowerShell)
- `AuditLog.Read.All` для API `Microsoft Graph` (необходимо для сбора журналов Microsoft Entra)
- `AuditLogsQuery.Read.All` для API `Microsoft Graph` (необходимо для сбора единого журнала аудита с помощью Purview)
- `Application.Read.All` и `DelegatedPermissionGrant.Read.All` для API `Microsoft Graph` (необходимо для обогащения журналов Microsoft Entra, связанных с приложениями и субъектами-службами)
- `Device.Read.All` для API `Microsoft Graph` (необходимо для обогащения журналов Microsoft Entra, связанных с устройствами)
- `User.Read.All` для API `Microsoft Graph` (необходимо для получения информации о пользователях)
- `UserAuthenticationMethod.Read.All` для API `Microsoft Graph` (необходимо для получения информации о методах аутентификации пользователей)
- `Organization.Read.All` для API `Microsoft Graph` (необходимо для получения общей информации о клиенте)
- `View-only audit logs` в `Exchange Online` (необходимо для использования командлета `Search-UnifiedAuditLog`)
Опционально (при использовании переключателя `-subscriptions`):
- Для выбранного набора подписок: роль `Reader` на `Microsoft.Insights/eventtypes/*` (необходимо для получения журнала действий Azure Monitor)
Опционально (при использовании переключателя `-organizations`):
- Для выбранного набора подписок Azure DevOps: `View audit log` (необходимо для получения журнала аудита Azure DevOps)
Для получения журналов Microsoft Entra с помощью API Microsoft Graph требуется хотя бы один пользователь с лицензией [Microsoft Entra ID P1](https://www.microsoft.com/en-us/security/business/microsoft-entra-pricing). Эта лицензия может быть приобретена для одного пользователя или может входить в некоторые планы лицензирования, такие как *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 для Microsoft 365. Требуется хотя бы одна лицензия [Office 365 E5](https://www.microsoft.com/en-us/microsoft-365/enterprise/office-365-e5?activetab=pivot:overviewtab) или план лицензирования, включающий Microsoft Defender для Office 365. |
| `Get-AADLogs` | Журналы Microsoft Entra | 30 дней | Хорошая | Все журналы Microsoft Entra | Получение информации о клиенте и всех журналов Microsoft Entra: журналы входа и аудита. |
| `Get-AADApps` | Н/Д | Н/Д | Хорошая | Полная | Субъекты-службы Microsoft Entra ID и их приложения, oauth2PermissionGrants и appRoleAssignments |
| `Get-AADDevices` | Н/Д | Н/Д | Хорошая | Полная | Устройства Microsoft Entra ID и их владельцы/пользователи |
| `Get-AADUsers` | Н/Д | Н/Д | Хорошая | Полная | Пользователи 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. |
\* Вы можете получить 180 дней хранения с помощью Purview, по сравнению с 90 днями по умолчанию при использовании Exchange Online.
** При поиске пользователей командлет `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), который получается при создании приложения.Примеры:
Для удобства чтения предположим, что:```powershell $appId = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" $tenant = "example.onmicrosoft.com" $certificatePath = "./example.pfx"
В реальном случае эти параметры собираются при [создании приложения](#creating-the-application).
Чтобы получить журналы Microsoft Entra за последние 30 дней, а также общую информацию о клиенте:```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
Извлеките события журнала Unified Audit, считающиеся интересными, за последние 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"
Извлечь Unified Audit log events, считающиеся интересными, в временном окне от -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 для Office 365, вы можете получить журналы, связанные с Microsoft Defender, за последние 90 дней:```powershell $endDate = Get-Date $startDate = $endDate.AddDays(-90) Get-O365Defender -startDate $startDate -endDate $endDate -appId $appId -tenant $tenant -certificatePath $certificatePath
Чтобы получить все события Unified Audit Log между кануном Рождества 2020 и Днём подарков 2020:
_Имейте в виду, что производительность при использовании этого cmdlet низкая_```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-адресов, действий, связанных с конкретными пользователями, или выполнить поиск по произвольному тексту в Unified Audit Log:```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.
_Запуск нескольких командлетов, использующих 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`:
- JSON-файлы, содержащие журналы аудита Microsoft Entra: `AADAuditLog_example.onmicrosoft.com_YYYY-MM-DD.json`.
- в папке `azure_ad_signin`:
- JSON-файлы, содержащие журналы входа Microsoft Entra: `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`:
- JSON-файлы, содержащие журналы действий Azure Monitor: `YYYY-MM-DD/AzRM_example.onmicrosoft.com_%SubscriptionID%_YYYY-MM-DD_HH-00-00.json`.
- `Get-AzDevOpsActivityLogs` создаст:
- в папке `azure_DevOps_orgs`:
- JSON-файл, содержащий общую информацию об организациях Azure DevOps: `AzdevopsOrgs_example.onmicrosoft.com.json`.
- в папке `azure_DevOps_activity`:
- JSON-файлы, содержащие журналы аудита Azure DevOps: `YYYY-MM-DD/AzDevOps_example.onmicrosoft.com_%AzureDevOpsOrg%_YYYY-MM-DD_HH-00-00.json`.
- `Get-O365Full` создаст в папке `O365_unified_audit_logs` (соответственно `O365_unified_audit_logs_purview` при использовании Purview):
- JSON-файлы, содержащие журналы унифицированного аудита: `YYYY-MM-DD/UnifiedAuditLog_example.onmicrosoft.com_YYYY-MM-DD_HH-00-00.json` (соответственно `*/UnifiedAuditLogPurview_*` при использовании Purview);
- JSON-файлы, содержащие журналы унифицированного аудита для указанных [типов записей](https://learn.microsoft.com/en-us/office/office-365-management-api/office-365-management-activity-api-schema#enum-auditlogrecordtype---type-edmint32): `YYYY-MM-DD/UnifiedAuditLog_example.onmicrosoft.com_YYYY-MM-DD_HH-00-00_%RecordType%.json` (соответственно `*/UnifiedAuditLogPurview_*` при использовании Purview).
- `Get-O365Light` создаст в папке `O365_unified_audit_logs` (соответственно `O365_unified_audit_logs_purview` при использовании Purview):
- JSON-файлы, содержащие журналы унифицированного аудита для подмножества *операций*, представляющих интерес: `YYYY-MM-DD/UnifiedAuditLog_example.onmicrosoft.com_YYYY-MM-DD_HH-00-00.json` (соответственно `*/UnifiedAuditLogPurview_*` при использовании Purview).
- `Get-O365Defender` создаст в папке `O365_unified_audit_logs` (соответственно `O365_unified_audit_logs_purview` при использовании Purview):
- JSON-файлы, содержащие журналы унифицированного аудита для [типов записей](https://learn.microsoft.com/en-us/office/office-365-management-api/office-365-management-activity-api-schema#enum-auditlogrecordtype---type-edmint32), связанных с Defender: `YYYY-MM-DD/UnifiedAuditLog_example.onmicrosoft.com_YYYY-MM-DD_HH-00-00_%RecordType%.json` (соответственно `*/UnifiedAuditLogPurview_*` при использовании Purview).
- `Search-O365` создаст:
- в папке `O365_unified_audit_logs` (соответственно `O365_unified_audit_logs_purview` при использовании Purview):
- JSON-файлы, содержащие журналы унифицированного аудита для указанного `RequestType` (`FreeText`, `IPAddresses` или `UserIds`): `YYYY-MM-DD/UnifiedAuditLog_example.onmicrosoft.com_YYYY-MM-DD_HH-00-00_%RequestType%_YYYY-MM-DD-HH-MM-SS.json` (соответственно `*/UnifiedAuditLogPurview_*` при использовании Purview). `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 |