
Módulo PowerShell para coleta de logs do Office 365 e Azure

O DFIR-O365RC foi apresentado no SSTIC 2021 (Symposium sur la sécurité des technologies de l'information et des communications). Os slides e a gravação da apresentação, em francês, estão disponíveis aqui.
⚠️ Em 31 de março de 2024, a Microsoft descontinuou o método de autenticação que usávamos para o DFIR-O365RC. Isso levou ao lançamento da versão 2.0.0 em agosto de 2024, com mudanças significativas em relação à autenticação e uma reestruturação global do código. ⚠️
O módulo PowerShell DFIR-O365RC é um conjunto de funções que permite a um analista forense coletar logs relevantes para comprometimentos do Microsoft 365 e realizar investigações no Entra ID.
Os logs são gerados no formato JSON e recuperados de duas fontes de dados principais:
Essas duas fontes de dados podem ser consultadas a partir de diferentes endpoints:
* A Office 365 Management API tem como objetivo analisar dados em tempo real com um SIEM. O DFIR-O365RC é uma ferramenta forense, seu objetivo não é monitorar um ambiente Microsoft 365 em tempo real.
O DFIR-O365RC buscará dados de:
Se você está investigando atividades maliciosas no Microsoft 365, o Search-O365 (do Exchange Online PowerShell) também buscará o Log de Auditoria de Caixa Postal, embora o cmdlet Search-MailboxAuditLog esteja sendo descontinuado.
Se você está investigando outros recursos do Azure, com o DFIR-O365RC:
Esta é a maneira recomendada de usar o DFIR-O365RC
Basta digitar:```bash sudo docker pull anssi/dfir-o365rc:latest sudo docker run --rm -v .:/mnt/host -it anssi/dfir-o365rc:latest
DFIR-O365RC está pronto 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>
Se deseja construir sua imagem Docker manualmente, clone o repositório e use docker compose (ou o legado docker-compose) para construir a imagem, executar o container e montar um volume (na pasta output/):```bash
sudo docker compose build dfir-o365rc
sudo docker compose run dfir-o365rc
sudo docker-compose run dfir-o365rc
### Usando PowerShell
Pode instalar o módulo no *PowerShell Desktop* e no *PowerShell Core*.
Observe que o cmdlet `Connect-ExchangeOnline` [requer o Microsoft .NET Framework 4.7.2 ou posterior](https://learn.microsoft.com/en-us/powershell/exchange/exchange-online-powershell-v2?view=exchange-ps#windows).
Para instalar o módulo da PowerShell Gallery :```powershell
Install-Module -Name DFIR-O365RC
Você também pode instalar o módulo manualmente clonando o repositório DFIR-O365RC, instalar as dependências necessárias (verifique DFIR-O365RC.psd1) e adicionar o diretório DFIR-O365RC em um dos caminhos de módulos do PowerShell.
Depois que o módulo for importado, você precisará criar um aplicativo Entra, que gerenciará o processo de coleta de logs para você.
Para fazer isso:
Crie um certificado autoassinado e obtenha a parte pública codificada em base64:
No Linux, usando o PowerShell Core ou o contêiner Docker:
powershell 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"
No 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()))
New-Application do módulo DFIR-O365RC: ```powershell
$certificateb64="<base64-encoded public part from step 1>"
New-Application -certificateb64 $certificateb64
Opcionalmente, se desejar poder recolher registos nas subscrições do inquilino (não necessário se não planeia usar Get-AzRMActivityLogs): ```powershell
New-Application -certificateb64 $certificateb64 -subscriptions
Opcionalmente, se deseja poder coletar logs nas organizações do Azure DevOps do tenant (isso pode demorar muito e não é necessário se você não planeja usar `Get-AzDevOpsActivityLogs`): ```powershell
New-Application -certificateb64 $certificateb64 -organizations
Para criar a aplicação, você precisará fazer login no Azure várias vezes, usando uma conta com privilégios elevados.
Assim que a aplicação for criada, você obterá uma saída semelhante 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
### Atualizando o aplicativo
Depois que o aplicativo for criado, você ainda pode, usando o cmdlet `Update-Application` do módulo, atualizar suas credenciais e permissões:
- Você pode adicionar um novo certificado ao aplicativo:
`Update-Application -certificateb64 <parte pública codificada em base64>`
- Você pode especificar novas assinaturas nas quais gostaria de poder coletar logs:
`Update-Application -subscriptions`
- Você pode especificar novas organizações do Azure DevOps nas quais gostaria de poder coletar logs:
`Update-Application -organizations`
- Você pode atualizar as permissões do aplicativo, o que é especialmente útil se você tiver um aplicativo antigo e as permissões foram atualizadas desde que você o criou:
`Update-Application -permissions`
### Removendo o aplicativo
Quando terminar a coleta de logs, você pode excluir o aplicativo usando o cmdlet `Remove-Application` do módulo.
Para remover o aplicativo, você precisará fazer login no Azure várias vezes, usando uma conta **altamente privilegiada**.
Se o aplicativo foi capaz de coletar logs de assinaturas ou organizações do Azure DevOps, você precisará adicionar os parâmetros `-organizations` e/ou `-subscriptions`.
## Requisitos de permissões e licença
⚠️
A partir da versão 2.0.0, a ferramenta agora é executada no contexto de um Service Principal com [acesso somente para aplicativo / permissões de aplicativo](https://learn.microsoft.com/pt-br/entra/identity-platform/permissions-consent-overview#app-only-access-access-without-a-user).
Para usar a versão 2.0.0 e superiores, você precisará [criar um aplicativo](#criando-o-aplicativo).
Após a criação do aplicativo, o script será executado usando as credenciais e permissões do aplicativo.
⚠️
O aplicativo será criado com o menor conjunto de permissões possível exigido:
- `Exchange.ManageAsApp` para a API `Office 365 Exchange Online` (necessário para poder executar cmdlets do PowerShell do Exchange Online)
- `AuditLog.Read.All` para a API `Microsoft Graph` (necessário para coleta de logs do Microsoft Entra)
- `AuditLogsQuery.Read.All` para a API `Microsoft Graph` (necessário para coleta do Unified Audit Log usando Purview)
- `Application.Read.All` e `DelegatedPermissionGrant.Read.All` para a API `Microsoft Graph` (necessário para o enriquecimento de logs do Microsoft Entra relacionados a aplicativos e service principals)
- `Device.Read.All` para a API `Microsoft Graph` (necessário para o enriquecimento de logs do Microsoft Entra relacionados a dispositivos)
- `User.Read.All` para a API `Microsoft Graph` (necessário para obter informações sobre os usuários)
- `UserAuthenticationMethod.Read.All` para a API `Microsoft Graph` (necessário para obter informações sobre os métodos de autenticação dos usuários)
- `Organization.Read.All` para a API `Microsoft Graph` (necessário para obter informações gerais sobre o tenant)
- `Logs de auditoria somente visualização` no `Exchange Online` (necessário para usar o cmdlet `Search-UnifiedAuditLog`)
Opcionalmente (se usar o parâmetro `-subscriptions`):
- Para o subconjunto selecionado de assinaturas: função `Leitor` em `Microsoft.Insights/eventtypes/*` (necessário para obter o log de atividade do Azure Monitor)
Opcionalmente (se usar o parâmetro `-organizations`):
- Para o subconjunto selecionado de assinaturas do Azure DevOps: `Visualizar log de auditoria` (necessário para obter o log de auditoria do Azure DevOps)
Para recuperar logs do Microsoft Entra com a API Microsoft Graph, você precisa de pelo menos um usuário com uma licença [Microsoft Entra ID P1](https://www.microsoft.com/pt-br/security/business/microsoft-entra-pricing). Esta licença pode ser adquirida para um único usuário ou pode estar incluída em alguns planos de licenciamento, como o plano *Microsoft 365 Business Premium*.
## Funções incluídas no módulo
O módulo possui 10 funções:
| **Função** | **Fonte de dados** | Retenção | **Desempenho** | **Completude** | **Detalhes** |
|---|---|---|---|---|---|
| `Get-O365Full` | Unified Audit Log | 90 dias / 180 dias* | Ruim | Todo o Unified Audit Log | Por padrão, recupera todo o Unified Audit Log. Isso deve ser usado apenas em um tenant pequeno ou por um curto período de tempo.<br />Você também pode usar este cmdlet para coletar eventos para alguns [tipos de registro](https://learn.microsoft.com/pt-br/office/office-365-management-api/office-365-management-activity-api-schema#enum-auditlogrecordtype---type-edmint32) específicos. |
| `Get-O365Light` | Unified Audit Log | 90 dias / 180 dias* | Bom | Apenas um subconjunto do Unified Audit Log | Apenas um subconjunto de *operações*, consideradas de interesse, são recuperadas. |
| `Get-O365Defender` | Unified Audit Log | 90 dias / 180 dias* | Bom | Apenas um subconjunto do Unified Audit Log | Recupera eventos relacionados ao Microsoft Defender para Microsoft 365. Requer pelo menos uma licença [Office 365 E5](https://www.microsoft.com/pt-br/microsoft-365/enterprise/office-365-e5?activetab=pivot:overviewtab) ou um plano de licenciamento que inclua o Microsoft Defender para Office 365. |
| `Get-AADLogs` | Logs do Microsoft Entra | 30 dias | Bom | Todos os logs do Microsoft Entra | Obtém informações do tenant e todos os logs do Microsoft Entra: logs de entrada e logs de auditoria. |
| `Get-AADApps` | N/D | N/D | Bom | Completa | Service principals do Microsoft Entra ID e seus aplicativos, oauth2PermissionGrants e appRoleAssignments |
| `Get-AADDevices` | N/D | N/D | Bom | Completa | Dispositivos do Microsoft Entra ID e seus proprietários/usuários |
| `Get-AADUsers` | N/D | N/D | Bom | Completa | Usuários do Microsoft Entra ID e seus métodos de autenticação |
| `Search-O365` | Unified Audit Log / Mailbox Audit Log** | 90 dias / 180 dias* | Ruim | Apenas um subconjunto do Unified Audit Log | Pesquisa atividade relacionada a usuários específicos, endereços IP ou textos livres. |
| `Get-AzRMActivityLogs` | Log de atividade do Azure Monitor | 90 dias | Bom | Todo o log de atividade do Azure Monitor | Obtém todo o log de atividade do Azure Monitor para um subconjunto selecionado de assinaturas. |
| `Get-AzDevOpsActivityLogs` | Log de auditoria do Azure DevOps | 90 dias | Bom | Todo o log de auditoria do Azure DevOps | Obtém todo o log de auditoria do Azure DevOps para um subconjunto selecionado de organizações do Azure DevOps. |
\* Você pode obter 180 dias de retenção usando Purview, em comparação com os 90 dias padrão usando o Exchange Online.
** Ao pesquisar por usuários, o cmdlet `Search-O365` também pesquisará no Mailbox Audit Log.
Cada função possui uma ajuda baseada em comentários que você pode invocar com o 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 função recebe como parâmetro:
-startDate);-endDate);-appId), que é obtido ao criar a aplicação;-tenant);-certificatePath), que é obtido ao criar a aplicação.Exemplos:
Para legibilidade, assumiremos que:```powershell $appId = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" $tenant = "example.onmicrosoft.com" $certificatePath = "./example.pfx"
Numa situação real, esses parâmetros são obtidos ao [criar a aplicação](#creating-the-application).
Para recuperar os logs do Microsoft Entra dos últimos 30 dias, bem como informações gerais sobre o inquilino:```powershell
$endDate = Get-Date
$startDate = $endDate.AddDays(-30)
Get-AADLogs -startDate $startDate -endDate $endDate -appId $appId -tenant $tenant -certificatePath $certificatePath
Obter service principals do Microsoft Entra e seus application, oauth2PermissionGrant e appRoleAssignment:```powershell $endDate = Get-Date $startDate = $endDate.AddDays(-30) Get-AADApps --appId $appId -tenant $tenant -certificatePath $certificatePath
Obter dispositivos Microsoft Entra e seus proprietários e usuários:```powershell
$endDate = Get-Date
$startDate = $endDate.AddDays(-30)
Get-AADDevices -appId $appId -tenant $tenant -certificatePath $certificatePath
Obter usuários do Microsoft Entra e as configurações de seus métodos de autenticação:```powershell Get-AADUsers -appId $appId -tenant $tenant -certificatePath $certificatePath -authenticationMethods
Recupere eventos do Unified Audit log considerados de interesse dos últimos 30 dias, exceto aqueles relacionados ao Entra ID, que já foram recuperados pelo primeiro 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 log de auditoria unificada considerados de interesse em uma janela de tempo entre -90 dias e -30 dias a partir de agora:```powershell $endDate = (Get-Date).AddDays(-30) $startDate = (Get-Date).AddDays(-90) Get-O365Light -startDate $startDate -endDate $endDate -appId $appId -tenant $tenant -certificatePath $certificatePath
Se a auditoria de caixa de correio estiver ativada, você também pode recuperar operações de `MailboxLogin` usando o switch dedicado:
_Cuidado com um limite global de 50.000 eventos por pesquisa_```powershell
Get-O365Light -startDate $startDate -endDate $endDate -appId $appId -tenant $tenant -certificatePath $certificatePath -mailboxLogin
Se houver usuários com licenças Office 365 E5 ou se houver um Microsoft Defender for Office 365 Plan no tenant, você pode recuperar logs relacionados ao Microsoft Defender dos últimos 90 dias:```powershell $endDate = Get-Date $startDate = $endDate.AddDays(-90) Get-O365Defender -startDate $startDate -endDate $endDate -appId $appId -tenant $tenant -certificatePath $certificatePath
Para recuperar todos os eventos do Unified Audit Log entre a véspera de Natal de 2020 e o Boxing Day de 2020:
_Cuidado: o desempenho ao usar esse cmdlet é ruim_```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
Você pode usar a função de pesquisa para procurar endereços IP, atividades relacionadas a usuários específicos ou realizar uma pesquisa de texto livre no 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]"
Ao pesquisar por **usuários** específicos, o `Search-O365` também pesquisará no Log de Auditoria da Caixa de Correio. Isso ocorre porque, dependendo do nível de licença e das configurações do usuário, alguns logs da caixa de correio podem não estar presentes no Log de Auditoria Unificada.
Para recuperar todos os logs de atividade do Azure Resource Manager das assinaturas às quais o aplicativo tem acesso:```powershell
$endDate = Get-Date
$startDate = $endDate.AddDays(-90)
Get-AzRMActivityLogs -startDate $startDate -endDate $endDate -appId $appId -tenant $tenant -certificatePath $certificatePath
Para recuperar todos os logs de atividade do Azure DevOps das organizações às quais o aplicativo tem acesso:```powershell $endDate = Get-Date $startDate = $endDate.AddDays(-90) Get-AzDevOpsActivityLogs -startDate $startDate -endDate $endDate -appId $appId -tenant $tenant -certificatePath $certificatePath
## Ficheiros gerados
Todos os ficheiros gerados estão em formato JSON.
_A execução de vários cmdlets que utilizam o Purview e que escrevem no mesmo ficheiro de saída pode resultar num JSON inválido devido a uma concatenação "ingénua"_
- `Get-AADApps` criará na pasta `azure_ad_apps`:
- um ficheiro JSON contendo as aplicações existentes e eliminadas: `AADApps_example.onmicrosoft.com_applications_raw.json`;
- um ficheiro JSON contendo os service principals existentes e eliminados: `AADApps_example.onmicrosoft.com_service_principals_raw.json`;
- um ficheiro JSON contendo os service principals enriquecidos: `AADApps_example.onmicrosoft.com.json`.
- `Get-AADDevices` criará na pasta `azure_ad_devices`:
- um ficheiro JSON contendo os dispositivos existentes e eliminados: `AADDevices_example.onmicrosoft.com_devices_raw.json`;
- um ficheiro JSON contendo os dispositivos enriquecidos: `AADDevices_example.onmicrosoft.com.json`.
- `Get-AADUsers` criará na pasta `azure_ad_users`:
- um ficheiro JSON contendo os utilizadores existentes e eliminados: `AADUsers_example.onmicrosoft.com_users_raw.json`;
- um ficheiro JSON contendo as definições de autenticação dos utilizadores: `AADUsers_example.onmicrosoft.com_users_settings_raw.json`;
- um ficheiro JSON contendo os utilizadores enriquecidos: `AADUsers_example.onmicrosoft.com.json`.
- `Get-AADLogs` criará:
- na pasta `azure_ad_tenant`:
- um ficheiro JSON contendo informações gerais sobre o tenant: `AADTenant_example.onmicrosoft.com.json`.
- na pasta `azure_ad_audit`:
- ficheiros JSON contendo os registos de auditoria do Microsoft Entra: `AADAuditLog_example.onmicrosoft.com_YYYY-MM-DD.json`.
- na pasta `azure_ad_signin`:
- ficheiros JSON contendo os registos de início de sessão do Microsoft Entra: `YYYY-MM-DD/AADSigninLog_example.onmicrosoft.com_YYYY-MM-DD_HH-00-00.json`.
- `Get-AzRMActivityLogs` criará:
- na pasta `azure_rm_subscriptions`:
- um ficheiro JSON contendo informações gerais sobre as subscrições: `AzRMsubscriptions_example.onmicrosoft.com.json`.
- na pasta `azure_rm_activity`:
- ficheiros JSON contendo os registos de Atividade do Azure Monitor: `YYYY-MM-DD/AzRM_example.onmicrosoft.com_%SubscriptionID%_YYYY-MM-DD_HH-00-00.json`.
- `Get-AzDevOpsActivityLogs` criará:
- na pasta `azure_DevOps_orgs`:
- um ficheiro JSON contendo informações gerais sobre as organizações do Azure DevOps: `AzdevopsOrgs_example.onmicrosoft.com.json`.
- na pasta `azure_DevOps_activity`:
- ficheiros JSON contendo os registos de auditoria do Azure DevOps: `YYYY-MM-DD/AzDevOps_example.onmicrosoft.com_%AzureDevOpsOrg%_YYYY-MM-DD_HH-00-00.json`.
- `Get-O365Full` criará na pasta `O365_unified_audit_logs` (respetivamente `O365_unified_audit_logs_purview` ao utilizar o Purview):
- ficheiros JSON contendo os registos de Auditoria Unificada: `YYYY-MM-DD/UnifiedAuditLog_example.onmicrosoft.com_YYYY-MM-DD_HH-00-00.json` (respetivamente `*/UnifiedAuditLogPurview_*` ao utilizar o Purview);
- ficheiros JSON contendo os registos de Auditoria Unificada para os [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` (respetivamente `*/UnifiedAuditLogPurview_*` ao utilizar o Purview).
- `Get-O365Light` criará na pasta `O365_unified_audit_logs` (respetivamente `O365_unified_audit_logs_purview` ao utilizar o Purview):
- ficheiros JSON contendo os registos de Auditoria Unificada para um subconjunto de *operações*, consideradas de interesse: `YYYY-MM-DD/UnifiedAuditLog_example.onmicrosoft.com_YYYY-MM-DD_HH-00-00.json` (respetivamente `*/UnifiedAuditLogPurview_*` ao utilizar o Purview).
- `Get-O365Defender` criará na pasta `O365_unified_audit_logs` (respetivamente `O365_unified_audit_logs_purview` ao utilizar o Purview):
- ficheiros JSON contendo os registos de Auditoria Unificada para os [RecordTypes](https://learn.microsoft.com/en-us/office/office-365-management-api/office-365-management-activity-api-schema#enum-auditlogrecordtype---type-edmint32) associados ao Defender: `YYYY-MM-DD/UnifiedAuditLog_example.onmicrosoft.com_YYYY-MM-DD_HH-00-00_%RecordType%.json` (respetivamente `*/UnifiedAuditLogPurview_*` ao utilizar o Purview).
- `Search-O365` criará:
- na pasta `O365_unified_audit_logs` (respetivamente `O365_unified_audit_logs_purview` ao utilizar o Purview):
- ficheiros JSON contendo os registos de Auditoria Unificada para o `RequestType` especificado (`FreeText`, `IPAddresses` ou `UserIds`): `YYYY-MM-DD/UnifiedAuditLog_example.onmicrosoft.com_YYYY-MM-DD_HH-00-00_%RequestType%_YYYY-MM-DD-HH-MM-SS.json` (respetivamente `*/UnifiedAuditLogPurview_*` ao utilizar o Purview). `YYYY-MM-DD-HH-MM-SS` representa a hora em que a recolha foi efetuada. Ao pesquisar por `FreeText`, é adicionado um `_%i` extra no final, que indica que este é o resultado da pesquisa do `%i`-ésimo texto livre.
- na pasta `Exchange_mailbox_audit_logs`:
- ficheiros JSON contendo os registos de Auditoria de Caixa de Correio (apenas ao pesquisar por 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 a hora em que a recolha foi efetuada. `%UserID%` indica que este é o resultado da pesquisa deste UserID.
A execução das várias funções gerará uma estrutura de diretórios semelhante 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
│ │ [...]
│ │
│ ├───[...]
| Fonte de dados / Endpoint | Retenção | Desempenho | Escopo |
|---|
| Unified Audit Log / Exchange Online PowerShell | 90 dias | Ruim | Todos os logs do Microsoft 365 (incluindo Entra) |
| Unified Audit Log / Purview | 180 dias | Bom | Todos os logs do Microsoft 365 (incluindo Entra) |
| Unified Audit Log / Office 365 Management API * | 7 dias | Bom | Todos os logs do Microsoft 365 (incluindo Entra) |
| Logs do Microsoft Entra / Microsoft Graph PowerShell | 30 dias | Bom | Apenas logs de entrada e auditoria do Entra |
| Logs do Microsoft Entra / Microsoft Graph REST API | 30 dias | Bom | Apenas logs de entrada e auditoria do Entra |