Tutoriales

Cómo consultar los registros de auditoría de Microsoft 365 usando PowerShell – 2xsoftware

Los registros de auditoría unificados de Microsoft 365 (también conocidos como registros de auditoría de Office 365) sirven como un recurso valioso para las organizaciones que usan Microsoft 365. Estos registros consolidan datos de múltiples servicios dentro de la suite de Microsoft 365, proporcionando una vista unificada de actividades y eventos.

El acceso y el análisis de los registros de auditoría de Microsoft 365 se pueden realizar a través de varios métodos, incluidos el Centro de cumplimiento y seguridad de Microsoft 365 y los cmdlets de PowerShell. PowerShell, en particular, ofrece una forma poderosa y eficiente de consultar estos registros, lo que facilita la extracción y el análisis de datos de registro de auditoría específicos.

En esta publicación de blog, exploraremos cómo PowerShell puede consultar los registros de auditoría de Office 365 de manera efectiva. Únase a nosotros mientras nos sumergimos en el mundo de los registros de auditoría de Microsoft 365 y descubra cómo PowerShell puede cambiar las reglas del juego en la administración y consulta de estos valiosos datos.

¿Qué datos incluyen los registros de auditoría de Office 365?

Los registros de auditoría de Office 365 registran varios tipos de eventos, incluidos:

  1. Actividades de usuario y administrador: Esto incluye acciones como acceso a archivos, uso compartido de documentos, actividades de correo electrónico, eventos de inicio de sesión de usuarios, cambios en las funciones y permisos de los usuarios y otras actividades relacionadas con los usuarios.
  2. Intercambio de eventos en línea: cubren actividades relacionadas con Exchange Online, como envíos y recepciones de correo electrónico, acceso a buzones, eliminación de mensajes y cambios en las configuraciones de buzones.
  3. Eventos de SharePoint Online y OneDrive para empresas: realiza un seguimiento de las actividades dentro de SharePoint Online y OneDrive for Business, incluidas las cargas, descargas, uso compartido y modificaciones de archivos.
  4. Eventos de Azure Active Directory: Esto incluye eventos relacionados con la administración de usuarios y grupos, restablecimientos de contraseñas, eventos de inicio de sesión de usuarios y otras actividades dentro del servicio de Azure Active Directory.
  5. Eventos de Azure Information Protection: Registra actividades relacionadas con la protección y clasificación de datos, incluido el etiquetado de documentos, el cifrado y otras acciones relacionadas con la seguridad.

Pero primero, activa la auditoría…

Antes de continuar, debe confirmar que la auditoría esté activada en su inquilino. Sin él, no hay registros para buscar.

Para hacerlo, conéctese a la sesión de Exchange Online PowerShell. Esto requiere instalar el Exchange Online PowerShell V3 módulo en su computadora.

Connect-ExchangeOnline -Organization tenant.onmicrosoft.com

A continuación, ejecute el siguiente comando para confirmar la UnifiedAuditLogIngestionEnabled propiedad.

Get-AdminAuditLogConfig | Format-List UnifiedAuditLogIngestionEnabled

Si el UnifiedAuditLogIngestionEnabled dice Verdaderoentonces ya está todo listo.

De lo contrario, ejecute el siguiente comando para activar la auditoría. Tenga en cuenta que debe ser un Gestión de la organización miembro del grupo de roles para que este comando funcione.

Set-AdminAuditLogConfig -UnifiedAuditLogIngestionEnabled $true

Buscar registros de auditoría de Office 365 con Search-UnifiedAuditLog

Un poderoso cmdlet en PowerShell que le permite buscar y recuperar información de los registros de auditoría unificados de Microsoft 365 es «Búsqueda-UnifiedAuditLog.”

Este cmdlet le permite especificar varios criterios de búsqueda, como intervalos de fechas, actividades específicas, usuarios o incluso direcciones IP, para restringir su búsqueda y recuperar las entradas de registro de auditoría relevantes.

Sintaxis, tipo de registro y operaciones

A continuación se muestra la sintaxis para el Búsqueda-UnifiedAuditLog cmdlet. Como puede ver, sólo el Fecha de inicio y Fecha final son requeridos. Pero en la mayoría de los casos, reducir la búsqueda filtrando la Tipo de registro y Se recomiendan operaciones.

Search-UnifiedAuditLog 
-EndDate <ExDateTime> 
-StartDate <ExDateTime> 
[-Formatted] 
[-FreeText <String>] 
[-IPAddresses <String[]>] 
[-ObjectIds <String[]>] 
[-Operations <String[]>] 
[-RecordType <AuditRecordType>] 
[-ResultSize <Int32>] 
[-SessionCommand <UnifiedAuditSessionCommand>] 
[-SessionId <String>] 
[-SiteIds <String[]>] 
[-UserIds <String[]>] 
[<CommonParameters>]

Tipo de registro — Este es el tipo de registro específico del servicio que desea filtrar. Por ejemplo, ExchangeAdmin es el tipo de registro que contiene las operaciones relacionadas con la administración realizadas en Exchange Online. Otro ejemplo es el SharePointFileOperationSharePointFileOperation tipo de registro, que consta de operaciones o eventos relacionados con archivos en SharePoint Online.

Operaciones — Los hechos o acciones que sucedieron. Un ejemplo de operación es Acceso al archivo Para el SharePointFileOperationSharePointFileOperation registro, una entrada para cuando se accedió a un archivo desde una biblioteca de SharePoint Online. Bajo la ExchangeAdmin tipo de registro, verá el nombre del cmdlet ejecutado, como Set-TransportConfig, Establecer-Buzóny Set-UnifiedGroup.

Referirse a Esquema de API de actividad de administración de Office 365 para ver los tipos de registros válidos y la lista de operaciones.

Las siguientes secciones muestran ejemplos del uso del Búsqueda-UnifiedAuditLog cmdlet. Sumerjámonos.

Buscar en el registro de auditoría de SharePoint Online

Suponga que necesita informar cuántos sitios de SharePoint Online se crearon en los últimos 90 días. Para hacer eso, usaremos el SharePoint tipo de registro.

Copie el código a continuación y ejecútelo en su sesión de Exchange Online PowerShell.

$startDate = (Get-Date).AddDays(-90) 
$endDate = (Get-Date) 
$result = Search-UnifiedAuditLog ` 
-StartDate $startDate ` 
-EndDate $endDate ` 
-RecordType SharePoint ` 
-Operations SiteCollectionCreated ` 
-Formatted 
$result | Group-Object -Property Operations

Tenga en cuenta que el -Formateado interruptor asegura que el Tipo de registro y Operaciones los atributos de los resultados se devuelven como nombres, no como números enteros.

Según el resultado, ha habido tres SiteCollectionCreated eventos en los últimos 90 días.

registro de auditoría de office 365

Los detalles de cada registro de auditoría se encuentran en el AuditData propiedad en formato JSON. Ahora vamos a inspeccionar uno de los resultados.

$result[0].AuditData | ConvertFrom-Json

registro de actividad de usuario de office 365

Buscar registros de auditoría en línea de Exchange

Un área en Exchange Online que los administradores tienden a monitorear son las acciones ejecutadas por los administradores. En este ejemplo, podemos ejecutar el Búsqueda-UnifiedAuditLog y especificar el ExchangeAdmin tipo de registro.

Por ejemplo, el siguiente comando devuelve todos los cmdlets de Exchange ejecutados en los últimos 90 días.

$startDate = (Get-Date).AddDays(-90) 
$endDate = (Get-Date) 
$result = Search-UnifiedAuditLog ` 
-StartDate $startDate ` 
-EndDate $endDate ` 
-RecordType ExchangeAdmin ` 
-Formatted 
$result | Group-Object -Property Operations | Select-Object Count, Name

registro de auditoría o365

Pero, ¿cómo sabemos quién hizo qué? Inspeccionemos una entrada de registro.

$result[0].AuditData | ConvertFrom-Json

El resultado muestra que el Establecer-AdminAuditLogConfig El comando fue ejecutado por el AUTORIDADSISTEMA DE NT (Microsoft.Exchange.ServiceHost) cuenta.

registro de auditoría m365

¿Qué tal enumerar todos los eventos? Para eso, podemos aplicar una iteración como la para cada declaración.

foreach ($item in $result) { 
$audit = $item.AuditData | ConvertFrom-Json 
New-Object psobject -Property $([ordered]@{ 
TimeStamp = $audit.CreationTime 
UserId = $audit.UserId 
Operation = $audit.Operation 
# Parameters = $audit.Parameters 
Parameters = [string]$( 
$audit.Parameters | ForEach-Object { 
"$($_.Name):$($_.Value);" 
} 
) 
} 
) 
}

auditoria office 365

Puede haber entradas de registro irrelevantes. Tal vez desee ignorar los eventos creados por el AUTORIDADSISTEMA DE NT (Microsoft.Exchange.ServiceHost) y AUTORIDADSISTEMA NT (w3wp) cuentas? Podemos agregar una matriz de ID de usuario para ignorar.

# List of UserIds to ignore 
$ignoreEventsBy = @( 
'NT AUTHORITYSYSTEM (Microsoft.Exchange.ServiceHost)', 
'NT AUTHORITYSYSTEM (w3wp)' 
)

E inserte una declaración if que verifique si el ID de usuario está listado en el $ignorarEventosPor formación. Si es así, el para cada loop omitirá este evento.

foreach ($item in $result) { 
$audit = $item.AuditData | ConvertFrom-Json 

if ($ignoreEventsBy -contains $audit.UserId) { 
# skip this event 
continue 
} 

New-Object psobject -Property $([ordered]@{ 
TimeStamp = $audit.CreationTime 
UserId = $audit.UserId 
Operation = $audit.Operation 
Parameters = [string]$( 
$audit.Parameters | ForEach-Object { 
"$($_.Name):$($_.Value);" 
} 
) 
} 
) 
}

Esta vez, solo se incluyen en el informe los eventos de los usuarios reales.

Registro de auditoría 365

Manejo de grandes resultados del registro de auditoría de Office 365

El Búsqueda-UnifiedAuditLog El comando devuelve 100 elementos de forma predeterminada, que no es mucho. Cuando ejecuta el siguiente comando, devuelve 100 entradas de registros de auditoría.

$startDate = (Get-Date).AddDays(-10) 
$endDate = (Get-Date) 
$result = Search-UnifiedAuditLog ` 
-StartDate $startDate ` 
-EndDate $endDate ` 
-RecordType SharePoint ` 
-Formatted 
$result.Count

oficina de búsqueda de registro de auditoría 365

Puede aumentar el tamaño del resultado hasta un máximo de 5000 agregando el -Tamaño de resultado 5000 y -SessionCommand ReturnLargeSet parámetros

$result = Search-UnifiedAuditLog ` 
-StartDate $startDate ` 
-EndDate $endDate ` 
-RecordType SharePoint ` 
-SessionCommand ReturnLargeSet ` 
-ResultSize 5000 ` 
-Formatted 
$result.Count

registro de actividad de office 365

¿Qué sucede si hay más de 5000 elementos de registro de auditoría de Office 365? No te preocupes; el máximo que puede recuperar es hasta 50.000 mediante paginación. Cada resultado de página puede tener un máximo de 5.000 elementos. Puede lograr esto especificando el -ID de sesión parámetro.

Primero, cree una ID de sesión única, puede ser cualquier valor, pero prefiero usar un GUID. A continuación, adjuntaremos el Búsqueda-UnifiedAuditLog comando en un bucle do-while. El comando se ejecutará hasta que no haya más resultados. Cada iteración usará el mismo ID de sesión valor.

$sessionID = (New-Guid).Guid 
$startDate = (Get-Date).AddDays(-4) 
$endDate = (Get-Date) 
$result = [System.Collections.ArrayList]@() 

do { 
$temp = Search-UnifiedAuditLog ` 
-StartDate $startDate ` 
-EndDate $endDate ` 
-RecordType SharePoint ` 
-SessionId $sessionId ` 
-SessionCommand ReturnLargeSet ` 
-ResultSize 5000 ` 
-Formatted 

foreach ($item in $temp) { 
$audit = $item.AuditData | ConvertFrom-Json 
$null = $result.Add($( 
New-Object psobject -Property $([ordered]@{ 
TimeStamp = $audit.CreationTime 
UserId = $audit.UserId 
Operation = $audit.Operation 
ObjectID = $audit.ObjectId 
} 
) 
) 
) 
} 
} 
while ($temp.count -gt 0) 
$result.count

En este ejemplo, el resultado total es de más de 41 000 elementos de registro.

registros de auditoría de administración de office 365

Puede exportar el resultado a un archivo CSV usando el Exportar-Csv cmdlet si es necesario.

$result | Export-Csv -NoTypeInformation .auditlog.csv

auditoría microsoft 365

Conclusión

Consultar los registros de auditoría de Microsoft 365 con PowerShell es una forma poderosa y eficiente de obtener información valiosa sobre las actividades, la seguridad y el cumplimiento de su organización. Al aprovechar las capacidades de PowerShell y el Búsqueda-UnifiedAuditLogpuede recuperar y analizar fácilmente la información almacenada en sus registros de auditoría.