Saltar al contenido
Microsoft scripts

Scripts de Purview

Estado de la auditoría unificada

Te dice si Microsoft 365 está registrando la actividad de tu tenant. Si está apagada, cuando necesites investigar algo no habrá registros nuevos.

Antes de correrloCorre siempre con Connect-ExchangeOnline: en Security & Compliance PowerShell el valor sale False aunque la auditoría esté activa. Por eso el script cierra primero tus sesiones de Exchange Online y Security & Compliance en esa ventana. Microsoft indica que la auditoría no viene activa de forma predeterminada en licencias para pequeña y mediana empresa, incluida Business Premium.

Ejemplo en México

Despacho contable en Guadalajara, 35 personas

Contrataron Microsoft 365 Business Premium hace dos años y nadie revisó la auditoría. Antes del cierre fiscal quieren saber si podrían investigar un incidente.

.\get-estado-auditoria.ps1 -RutaCsv .\estado-auditoria.csv

Obtienen un CSV con el estado y la acción a seguir. Si está activa, lo archivan: te ayuda a documentar tus medidas de seguridad frente a la LFPDPPP.

Cómo implementarlo

  1. Instala el módulo si no lo tienes: Install-Module ExchangeOnlineManagement -Scope CurrentUser.
  2. Ejecuta el script con -RutaCsv e inicia sesión con una cuenta que tenga el rol indicado.
  3. Revisa la columna Estado: Activa o Inactiva.
  4. Si sale Inactiva, actívala en el portal de Microsoft Purview, en Auditoría, y guarda el CSV como evidencia de la revisión.
Ver el código completo de get-estado-auditoria.ps1
<#
.SYNOPSIS
    Responde si la auditoría unificada de Microsoft 365 está activa en tu tenant.

.DESCRIPTION
    Lee UnifiedAuditLogIngestionEnabled con Get-AdminAuditLogConfig en Exchange Online PowerShell.
    Si está inactiva, no se registra actividad nueva y las búsquedas de auditoría no devuelven nada.
    Solo lectura: no cambia nada en el tenant.

.PARAMETER RutaCsv
    Ruta del CSV de salida. Si se omite, solo se muestra en pantalla.

.EXAMPLE
    .\get-estado-auditoria.ps1 -RutaCsv .\estado-auditoria.csv

.NOTES
    Permisos: ninguno de Graph; usa ExchangeOnlineManagement.
    Rol mínimo: Audit Logs o View-Only Audit Logs en Exchange Online (incluidos en Compliance Management y Organization Management).
    Licencia: Microsoft Purview Audit (Standard), incluido en suscripciones de Microsoft 365 y Office 365 que admiten el registro de auditoría unificado.
    Licencia del código: MIT. Se entrega TAL CUAL, sin garantía. Pruébalo primero en un tenant de pruebas.
#>
[CmdletBinding()]
param(
    [string]$RutaCsv
)

$ErrorActionPreference = 'Stop'

if (-not (Get-Command Connect-ExchangeOnline -ErrorAction SilentlyContinue)) {
    throw 'Falta el módulo. Instálalo con: Install-Module ExchangeOnlineManagement -Scope CurrentUser'
}

# Con una sesión previa de Connect-IPPSSession el valor puede salir siempre False, aunque la auditoría esté activa.
Disconnect-ExchangeOnline -Confirm:$false -ErrorAction SilentlyContinue
Connect-ExchangeOnline -ShowBanner:$false
try {
    $config = Get-AdminAuditLogConfig
} finally {
    Disconnect-ExchangeOnline -Confirm:$false
}

$activa = $config.UnifiedAuditLogIngestionEnabled -eq $true
$fila = [pscustomobject]@{
    Control = 'Auditoría unificada (UnifiedAuditLogIngestionEnabled)'
    Valor   = $config.UnifiedAuditLogIngestionEnabled
    Estado  = if ($activa) { 'Activa' } else { 'Inactiva' }
    Accion  = if ($activa) { 'Sin acción. Guarda este resultado como evidencia de la revisión.' } else { 'Actívala en el portal de Microsoft Purview, en Auditoría, o con Set-AdminAuditLogConfig -UnifiedAuditLogIngestionEnabled $true. Puede tardar hasta 60 minutos.' }
}

Write-Host "Auditoría unificada: $($fila.Estado)"
if ($RutaCsv) {
    # UTF-8 con BOM para que Excel en español muestre bien los acentos.
    $fila | Export-Csv -Path $RutaCsv -NoTypeInformation -Encoding utf8BOM
    Write-Host "CSV guardado en $RutaCsv"
} else {
    $fila | Format-List
}

Relacionados