Il portale di Purview (Audit → Ricerca) ti consente di cercare il Registro di Controllo Unificato ed esportare i risultati in CSV. L’evento completo si trova in una colonna, AuditData, come blob JSON. Per ottenere JSON pulito, un evento per linea, utilizza Exchange Online PowerShell e Search-UnifiedAuditLog. Lo script è sotto. La conservazione standard degli audit è di 180 giorni; Audit (Premium) mantiene un anno per impostazione predefinita.
Il Registro di Controllo Unificato copre Exchange, SharePoint, OneDrive, Teams e l’attività amministrativa in un unico posto. In caso di compromissione e-mail aziendale, è qui che compaiono le regole della casella di posta, l’inoltro e i download di massa. Prime Core ha 79 regole di rilevamento per i dati audit di Microsoft 365, mappate su 33 tecniche MITRE ATT&CK. Tra queste: regole di inoltro che sifonano la posta (T1114.003), permessi aggiuntivi per la casella di posta (T1098.002) e dati estratti da SharePoint (T1213.002).
Prima di iniziare
Il controllo è attivo? Lo è per impostazione predefinita per la maggior parte dei tenant, ma controlla:
Connect-ExchangeOnline
Get-AdminAuditLogConfig | Format-List UnifiedAuditLogIngestionEnabled
True è ciò che desideri. Se è False, nulla è stato registrato e attivandolo non si riempirà retroattivamente.
Ruoli. Hai bisogno del ruolo Audit Logs o solo visualizzazione Audit Logs. È necessario anche il modulo ExchangeOnlineManagement (Install-Module ExchangeOnlineManagement).
Latenza. Gli eventi non compaiono istantaneamente. La maggior parte appare entro un’ora o due, alcune richiedono più tempo. Se stai cercando qualcosa di stamattina, potrebbe non essere ancora ricercabile.
Esporta con PowerShell
Search-UnifiedAuditLog restituisce al massimo 5.000 record per chiamata. Con un ID sessione e ReturnLargeSet, puoi scorrere fino a 50.000 per ricerca. Questo ciclo fa ciò e scrive l’AuditData di ciascun record, già JSON, come una linea:
$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)
Il registro memorizza i tempi in UTC. Tienilo presente quando imposti la finestra.
Cosa cercare
| Operazione | Perché è importante |
|---|---|
| New-InboxRule, Set-InboxRule, UpdateInboxRules | Regole che inoltrano, spostano o eliminano la posta; controlla i parametri in AuditData |
| Set-Mailbox con ForwardingSmtpAddress | Inoltro a livello di casella di posta verso un indirizzo esterno |
| Add-MailboxPermission, Add-RecipientPermission | Qualcuno ottiene l’accesso a un’altra casella di posta |
| MailItemsAccessed | Quali messaggi sono stati effettivamente letti; fondamentale per delimitare una violazione |
| FileDownloaded, FileSyncDownloadedFull bursts | Download di massa da SharePoint o OneDrive |
| Consenso a un’applicazione | Un’applicazione canaglia ha ottenuto l’accesso alla posta o ai file |
La sequenza classica BEC: un accesso da una nuova posizione, poi entro pochi minuti una regola di casella di posta che sposta le risposte del team finanziario in una cartella oscura.
Carica, sanitizza e revisiona in LogTotal
- Carica. Apri logtotal.com e inserisci il file .jsonl.
- Sanitizza.
- Revisiona.
Quando qualcosa va storto
| Sintomo | Causa probabile | Fix |
|---|---|---|
| Search-UnifiedAuditLog non è riconosciuto | Non connesso a Exchange Online PowerShell | Connettiti prima a Exchange-Online |
| Nessun risultato | Audit disattivato, eventi troppo recenti, o fuori dalla conservazione | Controlla il flusso; aspetta; controlla il tuo livello di audit |
| Esattamente 5.000 risultati | Limite per chiamata raggiunto senza una sessione | Usa il ciclo di sessione sopra |
| Bloccato a 50.000 | Limite di sessione | Dividi la finestra in pezzi più piccoli |
| Accesso negato | Ruolo di audit mancante | Chiedi il ruolo di solo visualizzazione audit |
FAQ
Non è lo stesso dei log di accesso di Entra?
Si sovrappongono: l’UAL ha eventi UserLoggedIn. Ma per i dettagli di autenticazione (MFA, Accesso Condizionale, rischio), i log di accesso di Entra sono molto più ricchi. Esporta entrambi.
Che dire dell’API di Attività di Gestione?
Questa è la via per la raccolta continua in un SIEM. Per un’indagine una tantum, PowerShell è più semplice.