Búsqueda de sitios web

Configurar la autenticación basada en certificados de Exchange Online para scripts desatendidos


¿Cómo programar un script de Exchange Online PowerShell con fines de automatización? Por ejemplo, tiene un script de PowerShell de Exchange Online que debe ejecutarse diariamente en el inquilino de Exchange Online desatendido y sin ninguna interacción. En este artículo, aprenderá cómo configurar la autenticación basada en certificados (CBA) de Exchange Online y automatizar los scripts de PowerShell de Exchange Online.

Autenticación basada en certificados

La ejecución de scripts en Microsoft 365 a menudo implica scripts desatendidos en Exchange Online PowerShell. En el pasado, el inicio de sesión desatendido requería que almacenara el nombre de usuario y la contraseña en un archivo local o en una bóveda secreta a la que se accedía en tiempo de ejecución. Pero, como todos sabemos, almacenar las credenciales de los usuarios localmente no es una buena práctica de seguridad.

Ahí es donde la autenticación basada en certificados (CBA) viene al rescate. Admite escenarios de automatización y scripts desatendidos mediante aplicaciones de Azure AD y certificados autofirmados. . Esto elimina nombres de usuario, contraseñas y MFA al autenticarse.

Cómo funciona la autenticación basada en certificados

El módulo Exchange Online PowerShell utiliza la biblioteca de autenticación de Active Directory para recuperar un token exclusivo de la aplicación mediante el identificador de la aplicación, el identificador del inquilino (organización) y la huella digital del certificado. El objeto de aplicación aprovisionado dentro de Azure AD tiene asignada una función de directorio, que se devuelve en el token de acceso. El control de acceso basado en roles (RBAC) de la sesión se configura utilizando la información de rol del directorio que está disponible en el token.

Cómo configurar la autenticación basada en certificados en Exchange Online

Sigamos los pasos a continuación y configuremos la autenticación basada en certificados de Exchange Online para scripts desatendidos.

1. Generar certificado autofirmado

Para generar un certificado autofirmado, inicie sesión en cualquier servidor o escritorio de Windows con Windows PowerShell. Es mejor generar el certificado en la máquina en la que desea ejecutar el script de PowerShell desatendido.

Necesitará el certificado autofirmado más adelante en los pasos cuando lo cargue en la aplicación en Azure y si desea utilizar el certificado en otros sistemas.

Nota: De forma predeterminada, los certificados autofirmados son válidos por un año.

En este caso, agregamos 5 años al certificado autofirmado, por lo que no tenemos que renovarlo anualmente.

PS C:\> $mycert = New-SelfSignedCertificate -DnsName "exoip.com" -CertStoreLocation "cert:\LocalMachine\My" -NotAfter (Get-Date).AddYears(5) -KeySpec KeyExchange -FriendlyName "EXO unattended cert"

Confirme el certificado, copie la ThumbPrint y péguela en el Bloc de notas. Lo necesitará más adelante cuando se conecte a Exchange Online.

PS C:\> $mycert | Select-Object -Property Subject,Thumbprint,NotBefore,NotAfter

Subject      Thumbprint                               NotBefore             NotAfter
-------      ----------                               ---------             --------
CN=exoip.com 4F1C50EFC978A355227459E2D54FA9BEE8B93B78 12/28/2022 6:26:21 PM 12/28/2027 6:36:22 PM

Exportar certificado a archivo .cer.

Necesitará ese archivo .cer cuando lo cargue en la aplicación de Azure, que creará en los siguientes pasos.

PS C:\> $mycert | Export-Certificate -FilePath "C:\temp\EXOUnattendedCert.cer"


    Directory: C:\temp


Mode                LastWriteTime         Length Name
----                -------------         ------ ----
-a----       12/28/2022   6:46 PM            796 EXOUnattendedCert.cer

Exportar certificado a archivo .pfx.

Necesitará ese archivo .pfx cuando utilice otra máquina para conectarse con la autenticación basada en certificados. Copie o envíe el archivo .pfx e instálelo en otras máquinas.

PS C:\> $mycert | Export-PfxCertificate -FilePath "C:\temp\EXOUnattendedCert.pfx" -Password $(ConvertTo-SecureString -String "P@ssw0Rd1234" -AsPlainText -Force)


    Directory: C:\temp


Mode                LastWriteTime         Length Name
----                -------------         ------ ----
-a----       12/28/2022   6:47 PM           2725 EXOUnattendedCert.pfx

2. Registrar la aplicación en Azure

Para registrar una aplicación en Azure AD, siga estos pasos:

  • Iniciar sesión en Microsoft Azure
  • Haga clic en Menú > Azure Active Directory
  • Seleccione Registro de aplicación > Nuevo registro

  • Complete el nombre EXO PowerShell desatendido
  • Mantenga los tipos de cuenta admitidos predeterminados Cuentas en este directorio organizacional únicamente - (inquilino único)
  • Haga clic en Registrarse

  • Aparece la aplicación EXO PowerShell desatendida Descripción general
  • Copie la Aplicación (ID de cliente) y péguela en el Bloc de notas porque la necesitará más adelante cuando se conecte a Exchange Online.

3. Configurar los permisos de la API de la aplicación Azure

Debe agregar permisos de API a la aplicación EXO PowerShell desatendida que creó, siguiendo los pasos a continuación:

  • Haga clic en Permisos de API > Agregar un permiso

  • Haga clic en API que utiliza mi organización.
  • Busque Office 365
  • Seleccione Office 365 Exchange Online de la lista de resultados.

  • Seleccione Permisos de la aplicación
  • Expanda Exchange y seleccione Exchange.ManageAsApp
  • Haga clic en Agregar permisos

  • Haga clic en Otorgar consentimiento de administrador
  • Haga clic en Sí

  • El estado muestra una marca de verificación verde

4. Cargue el certificado en la aplicación

Es hora de cargar el certificado autofirmado que creó en el paso anterior:

  • Haga clic en Certificados y secretos
  • Haga clic en Certificados > Cargar certificado

  • Haga clic en el icono de exploración y seleccione el archivo autofirmado EXOUnattatended.cer en C:\temp
  • Agregue la descripción Certificado desatendido EXO
  • Haga clic en Agregar

  • El certificado aparece en la lista.

Nota: Confirme que tenga la misma huella digital del certificado que exportó en el paso anterior.

5. Asignar la aplicación al rol de administrador de Exchange

El último paso es agregar la aplicación como miembro del rol de Administrador de Exchange:

  • Haga clic en Menú > Azure Active Directory
  • Seleccione Funciones y administradores
  • Seleccione Todos los roles y busque intercambio
  • Haga clic en Administrador de Exchange

  • Haga clic en Asignaciones > Agregar tareas

  • Busque el nombre de la aplicación de Azure EXO PowerShell desatendido
  • Seleccione la aplicación de los resultados
  • Haga clic en Agregar

  • La aplicación desatendida EXO PowerShell se agrega a la lista de asignaciones de funciones de administrador de Exchange

Todos los pasos están completos.

Conéctese a Exchange Online PowerShell con autenticación basada en certificados

Veamos cómo conectarnos a EXO PowerShell con CBA (autenticación basada en certificados).

Es esencial instalar el módulo Exchange Online PowerShell en la máquina. Si no lo tienes instalado, es imposible conectarse.

Complete las tres variables siguientes para conectarse a Exchange Online PowerShell con autenticación basada en certificados:

  1. $ID de aplicación
  2. $CertificadoThumbPrint
  3. $Organización
$AppId = "cd4fad71-3820-4198-8748-b88035aeec51"
$CertificateThumbprint = "4F1C50EFC978A355227459E2D54FA9BEE8B93B78"
$Organization = "exoip365.onmicrosoft.com"

Connect-ExchangeOnline -AppId $AppId -CertificateThumbprint $CertificateThumbprint -Organization $Organization -ShowBanner:$false

Ahora que está conectado a Exchange Online PowerShell, ejecute el cmdlet Get-EXOMailbox para recuperar los buzones.

PS C:\> Get-EXOMailbox -ResultSize 5 | ft Name,UserPrincipalName

Name          UserPrincipalName
----          -----------------
Amanda Morgan Amanda.Morgan@exoip.com
Amelia Nash   Amelia.Nash@exoip.com
Carol Baker   Carol.Baker@exoip.com
Craig Hansen  Craig.Hansen@exoip.com
Curt Berry    Curt.Berry@exoip.com

Esto es lo que parece.

Ejemplo de script de PowerShell desatendido

Aquí hay un script de PowerShell desatendido que exportará una lista de buzones de correo en Exchange Online a un archivo CSV en C:\temp. El script se agrega a una tarea programada que se ejecutará todos los días.

Nota: Agregue Disconnect-ExchangeOnline -Confirm:$false al final del script de PowerShell. Si el script se ejecuta sin desconectar la sesión, podría utilizar todas las sesiones remotas de PowerShell disponibles y deberá esperar a que caduquen.

# Connect Exchange Online PowerShell
$AppId = "cd4fad71-3820-4198-8748-b88035aeec51"
$CertificateThumbprint = "4F1C50EFC978A355227459E2D54FA9BEE8B93B78"
$Organization = "exoip365.onmicrosoft.com"

Connect-ExchangeOnline -AppId $AppId -CertificateThumbprint $CertificateThumbprint -Organization $Organization -ShowBanner:$false

# Split path
$Path = Split-Path -Parent "C:\temp\*.*"

# Create variable for the date stamp
$LogDate = Get-Date -f yyyyMMddhhmm

# Define CSV and log file location variables
$Csvfile = $Path + "\AllMailboxes_$logDate.csv"

Get-EXOMailbox -ResultSize Unlimited | Select-Object DisplayName, PrimarySmtpAddress | Sort-Object PrimarySmtpAddress | Export-CSV -Path $Csvfile -NoTypeInformation -Encoding UTF8

# Disconnect Exchange Online PowerShell
Disconnect-ExchangeOnline -Confirm:$false

Así se ve al abrir el archivo CSV con el Bloc de notas.

¡Eso es todo!

Configuró correctamente la autenticación basada en certificados de Exchange Online en Exchange Online.

Leer más: Configurar la protección con contraseña de Microsoft Entra para el entorno local »

Conclusión

Aprendió a configurar la autenticación basada en certificados de Exchange Online para scripts desatendidos. Siga la guía paso a paso y podrá autenticarse con Exchange Online PowerShell sin interacción del usuario. Recuerde hacer una copia de seguridad del certificado autofirmado para poder importarlo y utilizarlo en otras máquinas.

¿Disfrutaste este artículo? También te puede interesar Prevenir ataques de fatiga de MFA en la organización. No olvides seguirnos y compartir este artículo.

Artículos relacionados