Портал Purview (Аудит → Пошук) дозволяє шукати уніфікований журнал аудиту та експортувати результати у CSV. Повна подія розміщується в одному стовпці, AuditData, у вигляді JSON блобу. Щоб отримати чистий JSON, одна подія на рядок, використовуйте Exchange Online PowerShell і Search-UnifiedAuditLog. Скрипт наведено нижче. Стандартне зберігання аудиту становить 180 днів; Audit (Premium) зберігає рік за замовчуванням.
Уніфікований журнал аудиту охоплює Exchange, SharePoint, OneDrive, Teams та адміністративну активність в одному місці. При компрометації бізнес-пошти тут відображаються правила вхідних повідомлень, пересилання та масові завантаження. Prime Core має 79 правил виявлення для даних аудиту Microsoft 365, що відповідають 33 технікам MITRE ATT&CK. Серед них: правила пересилання, що відкачують пошту (T1114.003), зайві дозволи на поштову скриньку (T1098.002) та дані, отримані з SharePoint (T1213.002).
Перш ніж почати
Аудит увімкнено? За замовчуванням для більшості орендарів він увімкнений, але перевірте:
Connect-ExchangeOnline
Get-AdminAuditLogConfig | Format-List UnifiedAuditLogIngestionEnabled
True – це те, що потрібно. Якщо False, нічого не було записано, і увімкнення не заповнить пропуски.
Ролі. Вам потрібна роль Audit Logs або View-Only Audit Logs. Також потрібен модуль ExchangeOnlineManagement (Install-Module ExchangeOnlineManagement).
Затримка. Події не з’являються миттєво. Більшість з’являється протягом години-двох, деякі — довше. Якщо ви шукаєте щось зранку, це може ще не бути доступним для пошуку.
Експорт за допомогою PowerShell
Search-UnifiedAuditLog повертає максимум 5,000 записів за виклик. З ідентифікатором сеансу та ReturnLargeSet можна переглянути до 50,000 за пошук. Цей цикл робить це і записує AuditData кожного запису, вже у форматі JSON, як один рядок:
$session = [guid]::NewGuid().ToString()
$out = "ual_2026-10-19.jsonl"
do {
$batch = Search-UnifiedAuditLog -StartDate "2026-10-19 00:00" -EndDate "2026-10-20 00:00" `
-SessionId $session -SessionCommand ReturnLargeSet -ResultSize 5000
$batch | ForEach-Object { $_.AuditData } | Add-Content $out
} while ($batch.Count -eq 5000)
Лог зберігає час у форматі UTC. Пам’ятайте про це, коли встановлюєте вікно.
На що звертати увагу
| Операція | Чому це важливо |
|---|---|
| New-InboxRule, Set-InboxRule, UpdateInboxRules | Правила, що пересилають, переміщують або видаляють пошту; перевірте параметри в AuditData |
| Set-Mailbox з ForwardingSmtpAddress | Пересилання на рівні поштової скриньки на зовнішню адресу |
| Add-MailboxPermission, Add-RecipientPermission | Хтось отримує доступ до іншої поштової скриньки |
| MailItemsAccessed | Які повідомлення фактично були прочитані; ключ до визначення межі порушення |
| FileDownloaded, FileSyncDownloadedFull вибухи | Масове завантаження з SharePoint або OneDrive |
| Дозвіл на доступ до програми | Шкідливій програмі надано доступ до пошти або файлів |
Класична послідовність BEC: вхід з нового місця, а потім через кілька хвилин правило вхідних повідомлень, яке переміщує відповіді з фінансової команди в маловідомий каталог.
Завантажте, очистіть та перегляньте в LogTotal
- Завантажити. Перейдіть на logtotal.com і дайте файл .jsonl.
- Очистка.
- Перегляд.
Коли щось йде не так
| Симптом | Ймовірна причина | Fix |
|---|---|---|
| Search-UnifiedAuditLog не розпізнано | Не підключено до Exchange Online PowerShell | Спочатку підключіться до ExchangeOnline |
| Немає результатів | Аудит вимкнено, події занадто нові або за межами зберігання | Перевірте інгестию; зачекайте; перевірте ваш рівень аудиту |
| Рівно 5,000 результатів | Досягнуто ліміту за викликом без сесії | Використовуйте наведений вище цикл сесій |
| Застрягло на 50,000 | Обмеження сеансу | Розділіть вікно на менші частини |
| Доступ заборонено | Відсутня роль аудиту | Запитайте про роль View-Only Audit Logs |
FAQ
Хіба це не те ж саме, що журнали входу Entra?
Вони перетинаються: UAL містить події UserLoggedIn. Але для деталей автентифікації (MFA, умовний доступ, ризик) журнали входу Entra значно багатші. Експортуйте обидва.
Що з API активності управління?
Це шлях для безперервного збору в SIEM. Для разового розслідування PowerShell простіший.