El centro de seguridad y cumplimiento de Microsoft con Microsoft Secure Score tiene una larga lista de consejos de seguridad buenos, excelentes y no relevantes. A veces parecen un poco incompatibles juntos ...

Considere una situación en la que estos ya están hechos:

  1. Habilitar MFA para roles privilegiados de Azure AD
  2. Habilitar MFA para (todos) los usuarios

Luego: habilite la auditoría de buzones de correo para todos los usuarios que
usan O365-InvestigationTooling / EnableMailboxAuditing.ps1 :

#This script will enable non-owner mailbox access auditing on every mailbox in your tenancy
#First, let's get us a cred!
$userCredential = Get-Credential

#This gets us connected to an Exchange remote powershell service
$ExoSession = New-PSSession -ConfigurationName Microsoft.Exchange `
    -ConnectionUri https://outlook.office365.com/powershell-liveid/ `
    -Credential $userCredential -Authentication Basic -AllowRedirection
Import-PSSession $ExoSession

#Enable global audit logging
Get-Mailbox -ResultSize Unlimited -Filter {RecipientTypeDetails -eq "UserMailbox" `
    -or RecipientTypeDetails -eq "SharedMailbox" -or RecipientTypeDetails `
    -eq "RoomMailbox" -or RecipientTypeDetails -eq "DiscoveryMailbox"} `
    | Set-Mailbox -AuditEnabled $true -AuditLogAgeLimit 180 -AuditAdmin Update, `
        MoveToDeletedItems, SoftDelete, HardDelete, SendAs, SendOnBehalf, Create, `
        UpdateFolderPermission -AuditDelegate Update, SoftDelete, HardDelete, SendAs, `
        Create, UpdateFolderPermissions, MoveToDeletedItems, SendOnBehalf `
        -AuditOwner UpdateFolderPermission, MailboxLogin, Create, `
        SoftDelete, HardDelete, Update, MoveToDeletedItems 

#Double-Check It!
Get-Mailbox -ResultSize Unlimited `
    | Select Name, AuditEnabled, AuditLogAgeLimit `
    | Out-Gridview

Sin embargo, New-PSSessionfalla con una cuenta de administrador global:

New-PSSession : [outlook.office365.com] Connecting to remote server 
outlook.office365.com failed with the following error message : 
Access is denied.

Creo que esto se debe a que Get-Credentialo New-PSSessionno es compatible con MFA. La documentación de AuthenticationMechanism Enum no parece tener tal autenticación: cambiar Basica Defaultno ayuda. ¿Me equivoco?

¿Existe alguna otra forma de habilitar la auditoría de acceso al buzón para todos los usuarios / verificar su estado?

answer

Tenía razón en que el culpable era MFA solo. Inhabilité temporalmente MFA para una cuenta de administrador global y el script funcionó bien. Después de todo, solo necesita hacer esto una vez, o tal vez ocasionalmente solo para actualizarlo para nuevos buzones de correo. La deshabilitación y habilitación de MFA ocurre de inmediato, y para una seguridad máxima (es decir, sombrero de papel de aluminio), incluso puede cambiar la contraseña justo antes de ejecutar el script.

ACTUALIZACIÓN: ¡Una contraseña de aplicación también funciona! No estoy seguro de si esa es realmente una opción segura de Microsoft, considerando la información que podría obtener y la configuración que podría alterar, omitiendo por completo el MFA.

Publicación anterior, pero para usar PowerShell compatible con MFA y autenticación moderna, debe usar el módulo Powershell de Microsoft Exchange Online; esto se puede descargar desde la sección "híbrida" del centro de administración en línea de Exchange.

https://docs.microsoft.com/en-us/powershell/exchange/exchange-online/connect-to-exchange-online-powershell/mfa-connect-to-exchange-online-powershell?view=exchange-ps