
Modulo PowerShell per la raccolta di log di Office 365 e Azure

DFIR-O365RC è stato presentato a SSTIC 2021 (Symposium sur la sécurité des technologies de l'information et des communications). Le slide e la registrazione della presentazione, in francese, sono disponibili qui.
⚠️ Il 31 marzo 2024, Microsoft ha deprecato il metodo di autenticazione che usavamo per DFIR-O365RC. Questo ha portato al rilascio della versione 2.0.0 nell'agosto 2024, con breaking changes riguardanti l'autenticazione e un refactoring globale del codice. ⚠️
Il modulo PowerShell DFIR-O365RC è un insieme di funzioni che consentono a un analista forense di raccogliere log rilevanti per compromissioni di Microsoft 365 e condurre indagini su Entra ID.
I log sono generati in formato JSON e recuperati da due principali fonti dati:
Queste due fonti dati possono essere interrogate da diversi endpoint:
* L'Office 365 Management API è pensata per analizzare i dati in tempo reale con un SIEM. DFIR-O365RC è uno strumento forense, il suo scopo non è monitorare un ambiente Microsoft 365 in tempo reale.
DFIR-O365RC recupererà dati da:
Se stai indagando su attività malevole in Microsoft 365, il cmdlet Search-O365 (da Exchange Online PowerShell) recupererà anche il log di controllo della cassetta postale (Mailbox Audit Log), sebbene il cmdlet Search-MailboxAuditLog stia venendo deprecato.
Se stai indagando su altre risorse di Azure, con DFIR-O365RC:
Questo è il metodo consigliato per utilizzare DFIR-O365RC
Digita semplicemente :```bash sudo docker pull anssi/dfir-o365rc:latest sudo docker run --rm -v .:/mnt/host -it anssi/dfir-o365rc:latest
DFIR-O365RC è pronto per l'uso:```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>
Se desideri creare manualmente la tua immagine Docker, clona il repository e usa docker compose (o il legacy docker-compose) per creare l'immagine, eseguire il contenitore e montare un volume (nella cartella output/):```bash
sudo docker compose build dfir-o365rc
sudo docker compose run dfir-o365rc
sudo docker-compose run dfir-o365rc
### Utilizzo di PowerShell
È possibile installare il modulo su *PowerShell Desktop* e *PowerShell Core*.
Si noti che il cmdlet `Connect-ExchangeOnline` [richiede Microsoft .NET Framework 4.7.2 o successivo](https://learn.microsoft.com/en-us/powershell/exchange/exchange-online-powershell-v2?view=exchange-ps#windows).
Per installare il modulo da PowerShell Gallery:```powershell
Install-Module -Name DFIR-O365RC
Puoi anche installare il modulo manualmente clonando il repository DFIR-O365RC, installando le dipendenze richieste (controlla DFIR-O365RC.psd1) e aggiungendo la directory DFIR-O365RC in uno dei percorsi dei moduli di PowerShell.
Una volta importato il modulo, dovrai creare un'applicazione Entra, che gestirà per te il processo di raccolta dei log.
Per farlo:
Crea un certificato autofirmato e ottieni la parte pubblica codificata in base64:
Su Linux, utilizzando PowerShell Core o il container 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"
Su Windows, utilizzando 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) Usare il cmdlet `New-Application` del modulo DFIR-O365RC: ```powershell
$certificateb64="<base64-encoded public part from step 1>"
New-Application -certificateb64 $certificateb64
Facoltativamente, se desideri poter raccogliere i log negli abbonamenti del tenant (non necessario se non prevedi di utilizzare Get-AzRMActivityLogs): ```powershell
New-Application -certificateb64 $certificateb64 -subscriptions
Facoltativamente, se desideri essere in grado di raccogliere log nelle organizzazioni di Azure DevOps del tenant (questa operazione può richiedere molto tempo e non è necessaria se non prevedi di utilizzare `Get-AzDevOpsActivityLogs`): ```powershell
New-Application -certificateb64 $certificateb64 -organizations
Per creare l'applicazione, dovrai accedere ad Azure più volte, utilizzando un account altamente privilegiato.
Una volta creata l'applicazione, otterrai un output simile a: ```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
### Aggiornamento dell'applicazione
Una volta creata l'applicazione, puoi ancora, usando il cmdlet `Update-Application` del modulo, aggiornare le sue credenziali e autorizzazioni:
- Puoi aggiungere un nuovo certificato all'applicazione:
`Update-Application -certificateb64 <base64-encoded public part>`
- Puoi specificare nuove sottoscrizioni in cui desideri poter raccogliere log:
`Update-Application -subscriptions`
- Puoi specificare nuove organizzazioni Azure DevOps in cui desideri poter raccogliere log:
`Update-Application -organizations`
- Puoi aggiornare le autorizzazioni dell'applicazione, cosa particolarmente utile se hai un'applicazione vecchia e le autorizzazioni sono state aggiornate da quando l'hai creata:
`Update-Application -permissions`
### Rimozione dell'applicazione
Una volta terminata la raccolta dei log, puoi eliminare l'applicazione usando il cmdlet `Remove-Application` del modulo.
Per rimuovere l'applicazione, dovrai accedere ad Azure più volte, utilizzando un account **altamente privilegiato**.
Se l'applicazione è stata in grado di raccogliere log di sottoscrizioni o organizzazioni Azure DevOps, dovrai aggiungere le opzioni `-organizations` e/o `-subscriptions`.
## Requisiti di autorizzazioni e licenze
⚠️
A partire dalla versione 2.0.0, lo strumento ora funziona nel contesto di un'entità servizio con [Accesso solo app / Autorizzazioni dell'applicazione](https://learn.microsoft.com/en-us/entra/identity-platform/permissions-consent-overview#app-only-access-access-without-a-user).
Per utilizzare la versione 2.0.0 e successive, dovrai [creare un'applicazione](#creating-the-application).
Una volta creata l'applicazione, lo script verrà eseguito utilizzando le credenziali e le autorizzazioni dell'applicazione.
⚠️
L'applicazione verrà creata con il set di autorizzazioni minime necessarie:
- `Exchange.ManageAsApp` per l'API `Office 365 Exchange Online` (necessaria per poter eseguire i cmdlet di Exchange Online PowerShell)
- `AuditLog.Read.All` per l'API `Microsoft Graph` (necessaria per la raccolta dei log di Microsoft Entra)
- `AuditLogsQuery.Read.All` per l'API `Microsoft Graph` (necessaria per la raccolta del Unified Audit Log utilizzando Purview)
- `Application.Read.All` e `DelegatedPermissionGrant.Read.All` per l'API `Microsoft Graph` (necessarie per l'arricchimento dei log di Microsoft Entra relativi ad applicazioni ed entità servizio)
- `Device.Read.All` per l'API `Microsoft Graph` (necessaria per l'arricchimento dei log di Microsoft Entra relativi ai dispositivi)
- `User.Read.All` per l'API `Microsoft Graph` (necessaria per ottenere informazioni sugli utenti)
- `UserAuthenticationMethod.Read.All` per l'API `Microsoft Graph` (necessaria per ottenere informazioni sui metodi di autenticazione degli utenti)
- `Organization.Read.All` per l'API `Microsoft Graph` (necessaria per ottenere informazioni generali sul tenant)
- `View-only audit logs` in `Exchange Online` (necessaria per utilizzare il cmdlet `Search-UnifiedAuditLog`)
Opzionalmente (se si utilizza l'opzione `-subscriptions`):
- Per il sottoinsieme selezionato di sottoscrizioni: ruolo `Reader` su `Microsoft.Insights/eventtypes/*` (necessario per ottenere il log delle attività di Azure Monitor)
Opzionalmente (se si utilizza l'opzione `-organizations`):
- Per il sottoinsieme selezionato di sottoscrizioni Azure DevOps: `View audit log` (necessario per ottenere il log di audit di Azure DevOps)
Per recuperare i log di Microsoft Entra con l'API Microsoft Graph è necessario almeno un utente con una licenza [Microsoft Entra ID P1](https://www.microsoft.com/en-us/security/business/microsoft-entra-pricing). Questa licenza può essere acquistata per un singolo utente o può essere inclusa in alcuni piani di licenza come il piano *Microsoft 365 Business Premium*.
## Funzioni incluse nel modulo
Il modulo ha 10 funzioni:
| **Funzione** | **Origine dati** | Conservazione | **Prestazioni** | **Completezza** | **Dettagli** |
|---|---|---|---|---|---|
| `Get-O365Full` | Unified Audit Log | 90 giorni / 180 giorni* | Scadente | Tutto il Unified Audit Log | Per impostazione predefinita, recupera l'intero Unified Audit Log. Questo dovrebbe essere utilizzato solo su un tenant piccolo o per un breve periodo di tempo.<br />Puoi anche usare questo cmdlet per raccogliere eventi per alcuni specifici [tipi di record](https://learn.microsoft.com/en-us/office/office-365-management-api/office-365-management-activity-api-schema#enum-auditlogrecordtype---type-edmint32). |
| `Get-O365Light` | Unified Audit Log | 90 giorni / 180 giorni* | Buona | Solo un sottoinsieme del Unified Audit Log | Viene recuperato solo un sottoinsieme di *operazioni*, considerate di interesse. |
| `Get-O365Defender` | Unified Audit Log | 90 giorni / 180 giorni* | Buona | Solo un sottoinsieme del Unified Audit Log | Recupera eventi correlati a Microsoft Defender per Microsoft 365. Richiede almeno una licenza [Office 365 E5](https://www.microsoft.com/en-us/microsoft-365/enterprise/office-365-e5?activetab=pivot:overviewtab) o un piano di licenza che includa Microsoft Defender per Office 365. |
| `Get-AADLogs` | Log di Microsoft Entra | 30 giorni | Buona | Tutti i log di Microsoft Entra | Ottiene informazioni sul tenant e tutti i log di Microsoft Entra: log di accesso e log di audit. |
| `Get-AADApps` | N/D | N/D | Buona | Completa | Entità servizio di Microsoft Entra ID e le loro applicazioni, oauth2PermissionGrants e appRoleAssignments |
| `Get-AADDevices` | N/D | N/D | Buona | Completa | Dispositivi di Microsoft Entra ID e i loro proprietari/utenti |
| `Get-AADUsers` | N/D | N/D | Buona | Completa | Utenti di Microsoft Entra ID e i loro metodi di autenticazione |
| `Search-O365` | Unified Audit Log / Log di audit della cassetta postale** | 90 giorni / 180 giorni* | Scadente | Solo un sottoinsieme del Unified Audit Log | Cerca attività relative a utenti specifici, indirizzi IP o testi liberi. |
| `Get-AzRMActivityLogs` | Log delle attività di Azure Monitor | 90 giorni | Buona | Tutti i log delle attività di Azure Monitor | Ottiene tutti i log delle attività di Azure Monitor per un sottoinsieme selezionato di sottoscrizioni. |
| `Get-AzDevOpsActivityLogs` | Log di audit di Azure DevOps | 90 giorni | Buona | Tutti i log di audit di Azure DevOps | Ottiene tutti i log di audit di Azure DevOps per un sottoinsieme selezionato di organizzazioni Azure DevOps. |
\* Puoi ottenere 180 giorni di conservazione utilizzando Purview, rispetto ai 90 giorni predefiniti utilizzando Exchange Online.
\*\* Quando si cercano utenti, il cmdlet `Search-O365` cercherà anche nel Log di audit della cassetta postale.
Ogni funzione ha un help basato su commenti che puoi richiamare con il cmdlet *Get-Help*.```powershell
# Display comment-based help
PS> Get-Help Get-O365Full
# Display comment-based help with examples
PS> Get-Help Get-O365Full -Examples
Ogni funzione accetta come parametro:
-startDate) ;-endDate) ;-appId), ottenuto durante la creazione dell'applicazione ;-tenant) ;-certificatePath), ottenuto durante la creazione dell'applicazione.Esempi:
Per leggibilità, assumeremo che:```powershell $appId = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" $tenant = "example.onmicrosoft.com" $certificatePath = "./example.pfx"
In un caso reale, quei parametri vengono raccolti quando si [crea l'applicazione](#creating-the-application).
Per recuperare i Microsoft Entra Logs degli ultimi 30 giorni così come informazioni generali sul tenant:```powershell
$endDate = Get-Date
$startDate = $endDate.AddDays(-30)
Get-AADLogs -startDate $startDate -endDate $endDate -appId $appId -tenant $tenant -certificatePath $certificatePath
Ottieni i service principal di Microsoft Entra e la loro applicazione, oauth2PermissionGrant e appRoleAssignment:```powershell $endDate = Get-Date $startDate = $endDate.AddDays(-30) Get-AADApps --appId $appId -tenant $tenant -certificatePath $certificatePath
Ottieni dispositivi Microsoft Entra e i loro proprietari e utenti:```powershell
$endDate = Get-Date
$startDate = $endDate.AddDays(-30)
Get-AADDevices -appId $appId -tenant $tenant -certificatePath $certificatePath
Ottieni gli utenti di Microsoft Entra e le loro impostazioni dei metodi di autenticazione:```powershell Get-AADUsers -appId $appId -tenant $tenant -certificatePath $certificatePath -authenticationMethods
Recupera gli eventi del Unified Audit log considerati di interesse degli ultimi 30 giorni, eccetto quelli relativi a Entra ID, che sono già stati recuperati dal primo comando:```powershell
$endDate = Get-Date
$startDate = $endDate.AddDays(-30)
Get-O365Light -startDate $startDate -endDate $endDate -appId $appId -tenant $tenant -certificatePath $certificatePath -operationsSet "allButAzureAD"
Retrieve Unified Audit log events considered of interest in a time window between -90 days and -30 days from now:```powershell $endDate = (Get-Date).AddDays(-30) $startDate = (Get-Date).AddDays(-90) Get-O365Light -startDate $startDate -endDate $endDate -appId $appId -tenant $tenant -certificatePath $certificatePath
Se l'audit della cassetta postale è abilitato, puoi anche recuperare le operazioni `MailboxLogin` usando l'opzione dedicata:
_Attenzione al limite globale di 50.000 eventi per ricerca_```powershell
Get-O365Light -startDate $startDate -endDate $endDate -appId $appId -tenant $tenant -certificatePath $certificatePath -mailboxLogin
Se ci sono utenti con licenze Office 365 E5 o se c'è un piano Microsoft Defender per Office 365 nel tenant, è possibile recuperare i log relativi a Microsoft Defender degli ultimi 90 giorni:```powershell $endDate = Get-Date $startDate = $endDate.AddDays(-90) Get-O365Defender -startDate $startDate -endDate $endDate -appId $appId -tenant $tenant -certificatePath $certificatePath
Per recuperare tutti gli eventi del Unified Audit Log tra la vigilia di Natale 2020 e il Santo Stefano 2020:
_Attenzione: l'utilizzo di quel cmdlet ha prestazioni scarse_```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
Puoi utilizzare la funzione di ricerca per cercare indirizzi IP, attività relative a utenti specifici o eseguire una ricerca a testo libero nel 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]"
Quando si cercano **utenti** specifici, `Search-O365` cercherà anche nel registro di controllo della cassetta postale. Questo perché, in base al livello di licenza e alle impostazioni dell'utente, alcuni log della cassetta postale potrebbero non essere presenti nel registro di controllo unificato.
Per recuperare tutti i log delle attività di Azure Resource Manager dalle sottoscrizioni a cui l'applicazione ha accesso:```powershell
$endDate = Get-Date
$startDate = $endDate.AddDays(-90)
Get-AzRMActivityLogs -startDate $startDate -endDate $endDate -appId $appId -tenant $tenant -certificatePath $certificatePath
Per recuperare tutti i log di attività di Azure DevOps dalle organizzazioni a cui l'applicazione ha accesso:```powershell $endDate = Get-Date $startDate = $endDate.AddDays(-90) Get-AzDevOpsActivityLogs -startDate $startDate -endDate $endDate -appId $appId -tenant $tenant -certificatePath $certificatePath
## File generati
Tutti i file generati sono in formato JSON.
_Lanciare diversi cmdlet che utilizzano Purview e scrivono sullo stesso file di output può risultare in un JSON non valido a causa di una concatenazione "ingenua"_
- `Get-AADApps` creerà nella cartella `azure_ad_apps`:
- un file JSON contenente le applicazioni esistenti ed eliminate: `AADApps_example.onmicrosoft.com_applications_raw.json`;
- un file JSON contenente i service principal esistenti ed eliminati: `AADApps_example.onmicrosoft.com_service_principals_raw.json`;
- un file JSON contenente i service principal arricchiti: `AADApps_example.onmicrosoft.com.json`.
- `Get-AADDevices` creerà nella cartella `azure_ad_devices`:
- un file JSON contenente i dispositivi esistenti ed eliminati: `AADDevices_example.onmicrosoft.com_devices_raw.json`;
- un file JSON contenente i dispositivi arricchiti: `AADDevices_example.onmicrosoft.com.json`.
- `Get-AADUsers` creerà nella cartella `azure_ad_users`:
- un file JSON contenente gli utenti esistenti ed eliminati: `AADUsers_example.onmicrosoft.com_users_raw.json`;
- un file JSON contenente le impostazioni di autenticazione degli utenti: `AADUsers_example.onmicrosoft.com_users_settings_raw.json`;
- un file JSON contenente gli utenti arricchiti: `AADUsers_example.onmicrosoft.com.json`.
- `Get-AADLogs` creerà:
- nella cartella `azure_ad_tenant`:
- un file JSON contenente informazioni generali sul tenant: `AADTenant_example.onmicrosoft.com.json`.
- nella cartella `azure_ad_audit`:
- file JSON contenenti i log di audit di Microsoft Entra: `AADAuditLog_example.onmicrosoft.com_YYYY-MM-DD.json`.
- nella cartella `azure_ad_signin`:
- file JSON contenenti i log di accesso di Microsoft Entra: `YYYY-MM-DD/AADSigninLog_example.onmicrosoft.com_YYYY-MM-DD_HH-00-00.json`.
- `Get-AzRMActivityLogs` creerà:
- nella cartella `azure_rm_subscriptions`:
- un file JSON contenente informazioni generali sulle sottoscrizioni: `AzRMsubscriptions_example.onmicrosoft.com.json`.
- nella cartella `azure_rm_activity`:
- file JSON contenenti i log di attività di Azure Monitor: `YYYY-MM-DD/AzRM_example.onmicrosoft.com_%SubscriptionID%_YYYY-MM-DD_HH-00-00.json`.
- `Get-AzDevOpsActivityLogs` creerà:
- nella cartella `azure_DevOps_orgs`:
- un file JSON contenente informazioni generali sulle organizzazioni di Azure DevOps: `AzdevopsOrgs_example.onmicrosoft.com.json`.
- nella cartella `azure_DevOps_activity`:
- file JSON contenenti i log di audit di Azure DevOps: `YYYY-MM-DD/AzDevOps_example.onmicrosoft.com_%AzureDevOpsOrg%_YYYY-MM-DD_HH-00-00.json`.
- `Get-O365Full` creerà nella cartella `O365_unified_audit_logs` (rispettivamente `O365_unified_audit_logs_purview` quando si utilizza Purview):
- file JSON contenenti i log di audit unificati: `YYYY-MM-DD/UnifiedAuditLog_example.onmicrosoft.com_YYYY-MM-DD_HH-00-00.json` (rispettivamente `*/UnifiedAuditLogPurview_*` quando si utilizza Purview);
- file JSON contenenti i log di audit unificati per [RecordTypes](https://learn.microsoft.com/en-us/office/office-365-management-api/office-365-management-activity-api-schema#enum-auditlogrecordtype---type-edmint32) specificati: `YYYY-MM-DD/UnifiedAuditLog_example.onmicrosoft.com_YYYY-MM-DD_HH-00-00_%RecordType%.json` (rispettivamente `*/UnifiedAuditLogPurview_*` quando si utilizza Purview).
- `Get-O365Light` creerà nella cartella `O365_unified_audit_logs` (rispettivamente `O365_unified_audit_logs_purview` quando si utilizza Purview):
- file JSON contenenti i log di audit unificati per un sottoinsieme di *operazioni* considerate di interesse: `YYYY-MM-DD/UnifiedAuditLog_example.onmicrosoft.com_YYYY-MM-DD_HH-00-00.json` (rispettivamente `*/UnifiedAuditLogPurview_*` quando si utilizza Purview).
- `Get-O365Defender` creerà nella cartella `O365_unified_audit_logs` (rispettivamente `O365_unified_audit_logs_purview` quando si utilizza Purview):
- file JSON contenenti i log di audit unificati per i [RecordTypes](https://learn.microsoft.com/en-us/office/office-365-management-api/office-365-management-activity-api-schema#enum-auditlogrecordtype---type-edmint32) associati a Defender: `YYYY-MM-DD/UnifiedAuditLog_example.onmicrosoft.com_YYYY-MM-DD_HH-00-00_%RecordType%.json` (rispettivamente `*/UnifiedAuditLogPurview_*` quando si utilizza Purview).
- `Search-O365` creerà:
- nella cartella `O365_unified_audit_logs` (rispettivamente `O365_unified_audit_logs_purview` quando si utilizza Purview):
- file JSON contenenti i log di audit unificati per il `RequestType` specificato (`FreeText`, `IPAddresses` o `UserIds`): `YYYY-MM-DD/UnifiedAuditLog_example.onmicrosoft.com_YYYY-MM-DD_HH-00-00_%RequestType%_YYYY-MM-DD-HH-MM-SS.json` (rispettivamente `*/UnifiedAuditLogPurview_*` quando si utilizza Purview). `YYYY-MM-DD-HH-MM-SS` rappresenta l'ora in cui è stato effettuato il recupero. Quando si cerca con `FreeText`, viene aggiunto un ulteriore `_%i` alla fine, che indica che questo è il risultato della ricerca dell'`%i`-esimo testo libero.
- nella cartella `Exchange_mailbox_audit_logs`:
- file JSON contenenti i log di audit delle cassette postali (solo quando si cerca per 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` rappresenta l'ora in cui è stato effettuato il recupero. `%UserID%` indica che questo è il risultato della ricerca di questo UserID.
Lanciando le varie funzioni verrà generata una struttura di directory simile a questa:```
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
│ │ [...]
│ │
│ ├───[...]
| Origine dati / Endpoint | Conservazione | Prestazioni | Ambito |
|---|
| Unified Audit Log / Exchange Online PowerShell | 90 giorni | Scarse | Tutti i log di Microsoft 365 (inclusi Entra) |
| Unified Audit Log / Purview | 180 giorni | Buone | Tutti i log di Microsoft 365 (inclusi Entra) |
| Unified Audit Log / Office 365 Management API * | 7 giorni | Buone | Tutti i log di Microsoft 365 (inclusi Entra) |
| Log di Microsoft Entra / Microsoft Graph PowerShell | 30 giorni | Buone | Solo log di accesso e di controllo di Entra |
| Log di Microsoft Entra / Microsoft Graph REST API | 30 giorni | Buone | Solo log di accesso e di controllo di Entra |