
Módulo de PowerShell para la recopilación de registros de Office 365 y Azure

DFIR-O365RC fue presentado en SSTIC 2021 (Symposium sur la sécurité des technologies de l'information et des communications). Las diapositivas y una grabación de la presentación, en francés, están disponibles aquí.
⚠️ El 31 de marzo de 2024, Microsoft desaprobó el método de autenticación que usábamos para DFIR-O365RC. Esto llevó al lanzamiento de la versión 2.0.0 en agosto de 2024, con cambios importantes en cuanto a la autenticación y una refactorización global del código. ⚠️
El módulo de PowerShell DFIR-O365RC es un conjunto de funciones que permiten a un analista forense recopilar registros relevantes para compromisos de Microsoft 365 y realizar investigaciones en Entra ID.
Los registros se generan en formato JSON y se obtienen de dos fuentes de datos principales:
Estas dos fuentes de datos se pueden consultar desde diferentes puntos finales:
* La Office 365 Management API está destinada a analizar datos en tiempo real con un SIEM. DFIR-O365RC es una herramienta forense, su objetivo no es monitorear un entorno de Microsoft 365 en tiempo real.
DFIR-O365RC obtendrá datos de:
Si está investigando actividades maliciosas en Microsoft 365, el cmdlet Search-O365 (desde Exchange Online PowerShell) también obtendrá el registro de auditoría del buzón, aunque el cmdlet Search-MailboxAuditLog está siendo desaprobado.
Si está investigando otros recursos de Azure, con DFIR-O365RC:
Esta es la forma recomendada de usar DFIR-O365RC
Simplemente escriba:```bash sudo docker pull anssi/dfir-o365rc:latest sudo docker run --rm -v .:/mnt/host -it anssi/dfir-o365rc:latest
DFIR-O365RC está listo para usar:```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>
Si desea construir su imagen Docker manualmente, clone el repositorio y use docker compose (o el antiguo docker-compose) para construir la imagen, ejecutar el contenedor y montar un volumen (en la carpeta output/):```bash
sudo docker compose build dfir-o365rc
sudo docker compose run dfir-o365rc
sudo docker-compose run dfir-o365rc
### Usando PowerShell
Puede instalar el módulo en *PowerShell Desktop* y *PowerShell Core*.
Tenga en cuenta que el cmdlet `Connect-ExchangeOnline` [requiere Microsoft .NET Framework 4.7.2 o posterior](https://learn.microsoft.com/en-us/powershell/exchange/exchange-online-powershell-v2?view=exchange-ps#windows).
Para instalar el módulo desde la Galería de PowerShell :```powershell
Install-Module -Name DFIR-O365RC
También puedes instalar el módulo manualmente clonando el repositorio DFIR-O365RC, instalar las dependencias requeridas (consulta DFIR-O365RC.psd1) y agregar el directorio DFIR-O365RC en una de las rutas de módulos de tu PowerShell.
Una vez importado el módulo, necesitarás crear una aplicación de Entra, que se encargará del proceso de recopilación de registros por ti.
Para hacerlo:
Crea un certificado autofirmado y obtén la parte pública codificada en base64:
En Linux, usando PowerShell Core o el contenedor 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"
En Windows, usando 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) Use el cmdlet `New-Application` del módulo DFIR-O365RC: ```powershell
$certificateb64="<base64-encoded public part from step 1>"
New-Application -certificateb64 $certificateb64
Opcionalmente, si desea poder recopilar registros en las suscripciones del inquilino (no es necesario si no planea usar Get-AzRMActivityLogs): ```powershell
New-Application -certificateb64 $certificateb64 -subscriptions
Opcionalmente, si desea poder recopilar registros en las organizaciones de Azure DevOps del inquilino (esto puede llevar mucho tiempo y no es necesario si no planea usar `Get-AzDevOpsActivityLogs`): ```powershell
New-Application -certificateb64 $certificateb64 -organizations
Para crear la aplicación, necesitará iniciar sesión en Azure varias veces, utilizando una cuenta altamente privilegiada.
Una vez creada la aplicación, obtendrá una salida similar 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
### Actualizando la aplicación
Una vez creada la aplicación, aún puede, usando el cmdlet `Update-Application` del módulo, actualizar sus credenciales y permisos:
- Puede agregar un nuevo certificado a la aplicación:
`Update-Application -certificateb64 <base64-encoded public part>`
- Puede especificar nuevas suscripciones en las que desee poder recopilar registros:
`Update-Application -subscriptions`
- Puede especificar nuevas organizaciones de Azure DevOps en las que desee poder recopilar registros:
`Update-Application -organizations`
- Puede actualizar los permisos de la aplicación, lo cual es especialmente útil si tiene una aplicación antigua y los permisos se han actualizado desde que la creó:
`Update-Application -permissions`
### Eliminando la aplicación
Una vez que haya terminado con la recopilación de registros, puede eliminar la aplicación usando el cmdlet `Remove-Application` del módulo.
Para eliminar la aplicación, necesitará iniciar sesión en Azure varias veces, usando una cuenta **altamente privilegiada**.
Si la aplicación pudo recopilar registros de suscripciones u organizaciones de Azure DevOps, deberá agregar los conmutadores `-organizations` y/o `-subscriptions`.
## Requisitos de permisos y licencias
⚠️
A partir de la versión 2.0.0, la herramienta se ejecuta en el contexto de una entidad de servicio con [acceso solo de aplicación / Permisos de aplicación](https://learn.microsoft.com/en-us/entra/identity-platform/permissions-consent-overview#app-only-access-access-without-a-user).
Para usar la versión 2.0.0 y posteriores, deberá [crear una aplicación](#creating-the-application).
Una vez creada la aplicación, el script se ejecutará usando las credenciales y permisos de la aplicación.
⚠️
La aplicación se creará con el conjunto de permisos mínimos requeridos posibles:
- `Exchange.ManageAsApp` para la API de `Office 365 Exchange Online` (requerido para poder ejecutar cmdlets de Exchange Online PowerShell)
- `AuditLog.Read.All` para la API de `Microsoft Graph` (requerido para la recopilación de registros de Microsoft Entra)
- `AuditLogsQuery.Read.All` para la API de `Microsoft Graph` (requerido para la recopilación del Registro de auditoría unificado mediante Purview)
- `Application.Read.All` y `DelegatedPermissionGrant.Read.All` para la API de `Microsoft Graph` (requerido para el enriquecimiento de registros de Microsoft Entra relacionados con aplicaciones y entidades de servicio)
- `Device.Read.All` para la API de `Microsoft Graph` (requerido para el enriquecimiento de registros de Microsoft Entra relacionados con dispositivos)
- `User.Read.All` para la API de `Microsoft Graph` (requerido para obtener información sobre los usuarios)
- `UserAuthenticationMethod.Read.All` para la API de `Microsoft Graph` (requerido para obtener información sobre los métodos de autenticación de los usuarios)
- `Organization.Read.All` para la API de `Microsoft Graph` (requerido para obtener información general sobre el inquilino)
- `View-only audit logs` en `Exchange Online` (requerido para usar el cmdlet `Search-UnifiedAuditLog`)
Opcionalmente (si se usa el conmutador `-subscriptions`):
- Para el subconjunto seleccionado de suscripciones: rol `Reader` en `Microsoft.Insights/eventtypes/*` (requerido para obtener el registro de actividad de Azure Monitor)
Opcionalmente (si se usa el conmutador `-organizations`):
- Para el subconjunto seleccionado de suscripciones de Azure DevOps: `View audit log` (requerido para obtener el registro de auditoría de Azure DevOps)
Para recuperar registros de Microsoft Entra con la API de Microsoft Graph, necesita al menos un usuario con una licencia [Microsoft Entra ID P1](https://www.microsoft.com/en-us/security/business/microsoft-entra-pricing). Esta licencia se puede adquirir para un solo usuario o puede estar incluida en algunos planes de licencia, como el plan *Microsoft 365 Business Premium*.
## Funciones incluidas en el módulo
El módulo tiene 10 funciones:
| **Función** | **Fuente de datos** | Retención | **Rendimiento** | **Completitud** | **Detalles** |
|---|---|---|---|---|---|
| `Get-O365Full` | Registro de auditoría unificado | 90 días / 180 días* | Bajo | Todo el registro de auditoría unificado | De forma predeterminada, recupera todo el registro de auditoría unificado. Esto solo debe usarse en un inquilino pequeño o durante un período de tiempo corto.<br />También puede usar este cmdlet para recopilar eventos de algunos [tipos de registro](https://learn.microsoft.com/en-us/office/office-365-management-api/office-365-management-activity-api-schema#enum-auditlogrecordtype---type-edmint32) específicos. |
| `Get-O365Light` | Registro de auditoría unificado | 90 días / 180 días* | Bueno | Solo un subconjunto del registro de auditoría unificado | Solo se recupera un subconjunto de *operaciones* consideradas de interés. |
| `Get-O365Defender` | Registro de auditoría unificado | 90 días / 180 días* | Bueno | Solo un subconjunto del registro de auditoría unificado | Recupera eventos relacionados con Microsoft Defender para Microsoft 365. Requiere al menos una licencia [Office 365 E5](https://www.microsoft.com/en-us/microsoft-365/enterprise/office-365-e5?activetab=pivot:overviewtab) o un plan de licencia que incluya Microsoft Defender para Office 365. |
| `Get-AADLogs` | Registros de Microsoft Entra | 30 días | Bueno | Todos los registros de Microsoft Entra | Obtiene información del inquilino y todos los registros de Microsoft Entra: registros de inicio de sesión y registros de auditoría. |
| `Get-AADApps` | N/D | N/D | Bueno | Completo | Entidades de servicio de Microsoft Entra ID y sus aplicaciones, oauth2PermissionGrants y appRoleAssignments |
| `Get-AADDevices` | N/D | N/D | Bueno | Completo | Dispositivos de Microsoft Entra ID y sus propietarios/usuarios |
| `Get-AADUsers` | N/D | N/D | Bueno | Completo | Usuarios de Microsoft Entra ID y sus métodos de autenticación |
| `Search-O365` | Registro de auditoría unificado / Registro de auditoría de buzón** | 90 días / 180 días* | Bajo | Solo un subconjunto del registro de auditoría unificado | Busca actividad relacionada con usuarios específicos, direcciones IP o textos libres. |
| `Get-AzRMActivityLogs` | Registro de actividad de Azure Monitor | 90 días | Bueno | Todo el registro de actividad de Azure Monitor | Obtiene todo el registro de actividad de Azure Monitor para un subconjunto seleccionado de suscripciones. |
| `Get-AzDevOpsActivityLogs` | Registro de auditoría de Azure DevOps | 90 días | Bueno | Todo el registro de auditoría de Azure DevOps | Obtiene todo el registro de auditoría de Azure DevOps para un subconjunto seleccionado de organizaciones de Azure DevOps. |
\* Puede obtener 180 días de retención usando Purview, en comparación con los 90 días predeterminados usando Exchange Online.
** Al buscar usuarios, el cmdlet `Search-O365` también buscará en el Registro de auditoría de buzón.
Cada función tiene una ayuda basada en comentarios que puede invocar con el 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
Cada función toma como parámetro:
-startDate) ;-endDate) ;-appId), que se obtiene al crear la aplicación ;-tenant) ;-certificatePath), que se obtiene al crear la aplicación.Ejemplos:
Para facilitar la lectura, supondremos que:```powershell $appId = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" $tenant = "example.onmicrosoft.com" $certificatePath = "./example.pfx"
En un caso real, esos parámetros se recopilan al [crear la aplicación](#creating-the-application).
Para recuperar los Microsoft Entra Logs de los últimos 30 días, así como información general sobre el inquilino:```powershell
$endDate = Get-Date
$startDate = $endDate.AddDays(-30)
Get-AADLogs -startDate $startDate -endDate $endDate -appId $appId -tenant $tenant -certificatePath $certificatePath
Obtener los service principals de Microsoft Entra y su aplicación, oauth2PermissionGrant y appRoleAssignment:```powershell $endDate = Get-Date $startDate = $endDate.AddDays(-30) Get-AADApps --appId $appId -tenant $tenant -certificatePath $certificatePath
Obtener dispositivos de Microsoft Entra y sus propietarios y usuarios:```powershell
$endDate = Get-Date
$startDate = $endDate.AddDays(-30)
Get-AADDevices -appId $appId -tenant $tenant -certificatePath $certificatePath
Obtener usuarios de Microsoft Entra y su configuración de métodos de autenticación:```powershell Get-AADUsers -appId $appId -tenant $tenant -certificatePath $certificatePath -authenticationMethods
Recuperar los eventos del registro de auditoría unificada considerados de interés de los últimos 30 días, excepto aquellos relacionados con Entra ID, que ya fueron recuperados por el primer comando:```powershell
$endDate = Get-Date
$startDate = $endDate.AddDays(-30)
Get-O365Light -startDate $startDate -endDate $endDate -appId $appId -tenant $tenant -certificatePath $certificatePath -operationsSet "allButAzureAD"
Recuperar eventos de registro de auditoría unificada considerados de interés en un intervalo de tiempo entre -90 días y -30 días desde ahora:```powershell $endDate = (Get-Date).AddDays(-30) $startDate = (Get-Date).AddDays(-90) Get-O365Light -startDate $startDate -endDate $endDate -appId $appId -tenant $tenant -certificatePath $certificatePath
Si la auditoría de buzón está habilitada, también puede recuperar operaciones `MailboxLogin` usando el conmutador dedicado:
_Tenga en cuenta un límite global de 50.000 eventos por búsqueda_```powershell
Get-O365Light -startDate $startDate -endDate $endDate -appId $appId -tenant $tenant -certificatePath $certificatePath -mailboxLogin
Si hay usuarios con licencias de Office 365 E5 o si existe un plan de Microsoft Defender para Office 365 en el inquilino, puede recuperar los registros relacionados con Microsoft Defender de los últimos 90 días:```powershell $endDate = Get-Date $startDate = $endDate.AddDays(-90) Get-O365Defender -startDate $startDate -endDate $endDate -appId $appId -tenant $tenant -certificatePath $certificatePath
Para recuperar todos los eventos del Unified Audit Log entre la Nochebuena de 2020 y el Boxing Day de 2020:
_Cuidado: el rendimiento al usar ese cmdlet es pobre_```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
Puede usar la función de búsqueda para buscar direcciones IP, actividad relacionada con usuarios específicos o realizar una búsqueda de texto libre en el Registro de auditoría unificado:```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]"
Cuando se buscan **usuarios** específicos, `Search-O365` también buscará en el Mailbox Audit Log. Esto se debe a que, dependiendo del nivel de licencia y la configuración del usuario, algunos de los registros del buzón pueden no estar presentes en el Unified Audit Log.
Para recuperar todos los registros de actividad de Azure Resource Manager de las suscripciones a las que la aplicación tiene acceso:```powershell
$endDate = Get-Date
$startDate = $endDate.AddDays(-90)
Get-AzRMActivityLogs -startDate $startDate -endDate $endDate -appId $appId -tenant $tenant -certificatePath $certificatePath
Para recuperar todos los registros de actividad de Azure DevOps de las organizaciones a las que la aplicación tiene acceso:```powershell $endDate = Get-Date $startDate = $endDate.AddDays(-90) Get-AzDevOpsActivityLogs -startDate $startDate -endDate $endDate -appId $appId -tenant $tenant -certificatePath $certificatePath
## Archivos generados
Todos los archivos generados están en formato JSON.
_Lanzar varios cmdlets que utilizan Purview y escriben en el mismo archivo de salida puede resultar en un JSON no válido debido a una concatenación "ingenua"_
- `Get-AADApps` creará en la carpeta `azure_ad_apps`:
- un archivo JSON que contiene aplicaciones existentes y eliminadas: `AADApps_example.onmicrosoft.com_applications_raw.json`;
- un archivo JSON que contiene entidades de servicio existentes y eliminadas: `AADApps_example.onmicrosoft.com_service_principals_raw.json`;
- un archivo JSON que contiene las entidades de servicio enriquecidas: `AADApps_example.onmicrosoft.com.json`.
- `Get-AADDevices` creará en la carpeta `azure_ad_devices`:
- un archivo JSON que contiene dispositivos existentes y eliminados: `AADDevices_example.onmicrosoft.com_devices_raw.json`;
- un archivo JSON que contiene los dispositivos enriquecidos: `AADDevices_example.onmicrosoft.com.json`.
- `Get-AADUsers` creará en la carpeta `azure_ad_users`:
- un archivo JSON que contiene usuarios existentes y eliminados: `AADUsers_example.onmicrosoft.com_users_raw.json`;
- un archivo JSON que contiene la configuración de autenticación de los usuarios: `AADUsers_example.onmicrosoft.com_users_settings_raw.json`;
- un archivo JSON que contiene los usuarios enriquecidos: `AADUsers_example.onmicrosoft.com.json`.
- `Get-AADLogs` creará:
- en la carpeta `azure_ad_tenant`:
- un archivo JSON que contiene información general del inquilino: `AADTenant_example.onmicrosoft.com.json`.
- en la carpeta `azure_ad_audit`:
- archivos JSON que contienen registros de auditoría de Microsoft Entra: `AADAuditLog_example.onmicrosoft.com_YYYY-MM-DD.json`.
- en la carpeta `azure_ad_signin`:
- archivos JSON que contienen registros de inicio de sesión de Microsoft Entra: `YYYY-MM-DD/AADSigninLog_example.onmicrosoft.com_YYYY-MM-DD_HH-00-00.json`.
- `Get-AzRMActivityLogs` creará:
- en la carpeta `azure_rm_subscriptions`:
- un archivo JSON que contiene información general de las suscripciones: `AzRMsubscriptions_example.onmicrosoft.com.json`.
- en la carpeta `azure_rm_activity`:
- archivos JSON que contienen registros de actividad de Azure Monitor: `YYYY-MM-DD/AzRM_example.onmicrosoft.com_%SubscriptionID%_YYYY-MM-DD_HH-00-00.json`.
- `Get-AzDevOpsActivityLogs` creará:
- en la carpeta `azure_DevOps_orgs`:
- un archivo JSON que contiene información general de las organizaciones de Azure DevOps: `AzdevopsOrgs_example.onmicrosoft.com.json`.
- en la carpeta `azure_DevOps_activity`:
- archivos JSON que contienen registros de auditoría de Azure DevOps: `YYYY-MM-DD/AzDevOps_example.onmicrosoft.com_%AzureDevOpsOrg%_YYYY-MM-DD_HH-00-00.json`.
- `Get-O365Full` creará en la carpeta `O365_unified_audit_logs` (respectivamente `O365_unified_audit_logs_purview` cuando se usa Purview):
- archivos JSON que contienen registros de auditoría unificados: `YYYY-MM-DD/UnifiedAuditLog_example.onmicrosoft.com_YYYY-MM-DD_HH-00-00.json` (respectivamente `*/UnifiedAuditLogPurview_*` cuando se usa Purview);
- archivos JSON que contienen registros de auditoría unificados para tipos de registro [RecordTypes](https://learn.microsoft.com/en-us/office/office-365-management-api/office-365-management-activity-api-schema#enum-auditlogrecordtype---type-edmint32) especificados: `YYYY-MM-DD/UnifiedAuditLog_example.onmicrosoft.com_YYYY-MM-DD_HH-00-00_%RecordType%.json` (respectivamente `*/UnifiedAuditLogPurview_*` cuando se usa Purview).
- `Get-O365Light` creará en la carpeta `O365_unified_audit_logs` (respectivamente `O365_unified_audit_logs_purview` cuando se usa Purview):
- archivos JSON que contienen registros de auditoría unificados para un subconjunto de *operaciones*, consideradas de interés: `YYYY-MM-DD/UnifiedAuditLog_example.onmicrosoft.com_YYYY-MM-DD_HH-00-00.json` (respectivamente `*/UnifiedAuditLogPurview_*` cuando se usa Purview).
- `Get-O365Defender` creará en la carpeta `O365_unified_audit_logs` (respectivamente `O365_unified_audit_logs_purview` cuando se usa Purview):
- archivos JSON que contienen registros de auditoría unificados para los [RecordTypes](https://learn.microsoft.com/en-us/office/office-365-management-api/office-365-management-activity-api-schema#enum-auditlogrecordtype---type-edmint32) asociados con Defender: `YYYY-MM-DD/UnifiedAuditLog_example.onmicrosoft.com_YYYY-MM-DD_HH-00-00_%RecordType%.json` (respectivamente `*/UnifiedAuditLogPurview_*` cuando se usa Purview).
- `Search-O365` creará:
- en la carpeta `O365_unified_audit_logs` (respectivamente `O365_unified_audit_logs_purview` cuando se usa Purview):
- archivos JSON que contienen registros de auditoría unificados para el `RequestType` especificado (`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` (respectivamente `*/UnifiedAuditLogPurview_*` cuando se usa Purview). `YYYY-MM-DD-HH-MM-SS` representa la hora en que se realizó la recolección. Al buscar `FreeText`, se agrega un `_%i` adicional al final, lo que indica que este es el resultado de la búsqueda del `%i`-ésimo texto libre.
- en la carpeta `Exchange_mailbox_audit_logs`:
- archivos JSON que contienen registros de auditoría de buzón (solo al buscar 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` representa la hora en que se realizó la recolección. `%UserID%` indica que este es el resultado de la búsqueda de este UserID.
Al ejecutar las diversas funciones se generará una estructura de directorios similar a esta:```
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
│ │ [...]
│ │
│ ├───[...]
| Fuente de datos / Punto final | Retención | Rendimiento | Alcance |
|---|
| Unified Audit Log / Exchange Online PowerShell | 90 días | Malo | Todos los registros de Microsoft 365 (incluye Entra) |
| Unified Audit Log / Purview | 180 días | Bueno | Todos los registros de Microsoft 365 (incluye Entra) |
| Unified Audit Log / Office 365 Management API * | 7 días | Bueno | Todos los registros de Microsoft 365 (incluye Entra) |
| Microsoft Entra logs / Microsoft Graph PowerShell | 30 días | Bueno | Solo registros de inicio de sesión y auditoría de Entra |
| Microsoft Entra logs / Microsoft Graph REST API | 30 días | Bueno | Solo registros de inicio de sesión y auditoría de Entra |