Automatización de tareas de Gobierno de id. de Microsoft Entra mediante Azure Automation y Microsoft Graph

Azure Automation es un servicio en la nube de Azure que permite automatizar procesos y tareas de administración de sistemas comunes o repetitivos. Microsoft Graph es el punto de conexión de API unificado de Microsoft para las características de Microsoft Entra que administran usuarios, grupos, paquetes de acceso, revisiones de acceso y otros recursos del directorio. Puede administrar Microsoft Entra ID a gran escala desde la línea de comandos de PowerShell mediante el SDK de PowerShell de Microsoft Graph. También puede incluir los cmdlets de Microsoft Graph en PowerShell desde un runbook basado en PowerShell en Azure Automation, de modo que pueda automatizar las tareas de Microsoft Entra desde un simple script.

Azure Automation y el SDK de Graph de PowerShell admiten autenticación basada en certificados y permisos de aplicación, por lo que puede hacer que los runbooks de Azure Automation se autentiquen en Microsoft Entra ID sin necesidad de un contexto de usuario.

En este artículo, se muestra cómo empezar a usar Azure Automation para Gobierno de id. de Microsoft Entra mediante la creación de un runbook sencillo que consulta la administración de derechos mediante PowerShell de Microsoft Graph.

Creación de una cuenta de Azure Automation

Sugerencia

Los pasos de este artículo pueden variar ligeramente en función del portal desde donde comienza.

Azure Automation proporciona un entorno hospedado en la nube para la ejecución de runbooks. Estos runbooks se pueden iniciar automáticamente según una programación, o bien desencadenarse mediante webhooks o Logic Apps.

El uso de Azure Automation requiere que tenga una suscripción de Azure.

Requisitos previos de rol: propietario de la suscripción o del grupo de recursos de Azure

  1. Inicie sesión en Azure Portal. Asegúrese de que tiene acceso a la suscripción o al grupo de recursos donde se encontrará la cuenta de Azure Automation.

  2. Seleccione la suscripción o el grupo de recursos y seleccione Crear. Escriba Automation, seleccione el servicio Azure Automation de Microsoft y, a continuación, seleccione Crear.

  3. Una vez creada la cuenta de Azure Automation, seleccione Control de acceso (IAM). A continuación, seleccione Ver en Consulta del acceso a este recurso. Posteriormente, estos usuarios y entidades de servicio podrán interactuar con el servicio de Microsoft mediante los scripts que se van a crear en esa cuenta de Azure Automation.

  4. Revise los usuarios y las entidades de servicio que aparecen en la lista y asegúrese de que estén autorizados. Quite los usuarios que no estén autorizados.

Creación de un par de claves y un certificado autofirmado en el equipo

Así que, para que pueda funcionar sin necesidad de sus credenciales personales, la cuenta de Azure Automation que ha creado tendrá que autenticarse en Microsoft Entra ID con un certificado.

Si ya tiene un par de claves para autenticar el servicio en Microsoft Entra ID y un certificado recibido de una entidad de certificación, vaya a la sección siguiente.

Para generar un certificado autofirmado:

  1. Siga las instrucciones que se indican en la opción 2 de Creación de un certificado público autofirmado para autenticar la aplicación para crear y exportar un certificado con su clave privada.

  2. Muestre la huella digital del certificado.

     $cert | ft Thumbprint
    
  3. Después de exportar los archivos, puede quitar el certificado y el par de claves del almacén de certificados de usuario local. En pasos posteriores, también quitará los archivos .pfx y .crt, una vez que el certificado y la clave privada se hayan cargado en los servicios Azure Automation y Microsoft Entra.

Carga del par de claves en Azure Automation

El runbook de Azure Automation recupera la clave privada del archivo .pfx y la usará para autenticarse en Microsoft Graph.

  1. En Azure Portal, para la cuenta de Azure Automation, seleccione Certificados y Agregar un certificado.

  2. Cargue el archivo .pfx creado anteriormente y escriba la contraseña que proporcionó al crear el archivo.

  3. Después de cargar la clave privada, registre la fecha de expiración del certificado.

  4. Ahora puede eliminar el archivo .pfx del equipo local. Sin embargo, no elimine todavía el archivo .crt, ya que lo necesitará en un paso posterior.

Adición de módulos para Microsoft Graph a la cuenta de Azure Automation

De manera predeterminada, Azure Automation no tiene ningún módulo de PowerShell cargado previamente para Microsoft Graph. Deberá agregar Microsoft.Graph.Authentication y, después, módulos adicionales desde la galería a la cuenta de Automation.

  1. En Azure Portal, para la cuenta de Azure Automation, seleccione Módulos y, a continuación, Examinar la galería.

  2. En la barra de búsqueda, escriba Microsoft.Graph.Authentication. Seleccione el módulo, seleccione Importar y, luego, Aceptar para que Microsoft Entra ID comience a importar el módulo. Después de seleccionar Aceptar, la importación de un módulo puede tardar varios minutos. No intente agregar más módulos de Microsoft Graph hasta que se haya completado la importación del módulo Microsoft.Graph.Authentication, ya que esos otros módulos tienen a Microsoft.Graph.Authentication como requisito previo.

  3. Vuelva a la lista Módulos y seleccione Actualizar. Una vez que el estado del módulo Microsoft.Graph.Authentication haya cambiado a Disponible, puede importar el módulo siguiente.

  4. Si va a usar los cmdlets para las características de Gobierno de id. de Microsoft Entra, como la administración de derechos, repita el proceso de importación para el módulo Microsoft.Graph.Identity.Governance.

  5. Importe otros módulos que el script pueda requerir, como Microsoft.Graph.Users. Por ejemplo, si usa Identity Protection, puede importar el módulo Microsoft.Graph.Identity.SignIns.

Creación de un registro de aplicación y asignación de permisos

Después, creará un registro de aplicación en Microsoft Entra ID, de modo que esta solución reconoce el certificado del runbook de Azure Automation para la autenticación.

Requisitos previos de rol: administrador global u otro administrador que pueda dar su consentimiento a las aplicaciones para los permisos de aplicación

  1. Inicie sesión en el centro de administración de Microsoft Entra por lo menos como administrador global.

  2. Vaya a>Identidad>Aplicaciones>Registros de aplicaciones.

  3. Seleccione Nuevo registro.

  4. Escriba un nombre para la aplicación y seleccione Registrar.

  5. Una vez creado el registro de aplicación, anote el id. de aplicación (cliente) y el id. de directorio (inquilino), ya que necesitará estos elementos más adelante.

  6. Seleccione Certificados y secretos y Cargar certificado.

  7. Cargue el archivo .crt creado anteriormente.

  8. Seleccione Permisos de API y Agregar un permiso.

  9. Seleccione Microsoft Graph y Permisos de la aplicación.

  10. Seleccione cada uno de los permisos que necesita la cuenta de Azure Automation y, después, seleccione Agregar permisos.

    • Si el runbook solo realiza consultas o actualizaciones dentro de un único catálogo, no es necesario asignarle permisos de aplicación para todo el inquilino; en su lugar, puede asignar la entidad de servicio al rol Propietario de catálogo o Lector de catálogo.
    • Si el runbook solo realiza consultas para la administración de derechos, puede usar el permiso EntitlementManagement.Read.All.
    • Si el runbook realiza cambios en la administración de derechos, por ejemplo, para crear asignaciones en varios catálogos, use el permiso EntitlementManagement.ReadWrite.All.
    • Para las otras API, asegúrese de que se haya agregado el permiso necesario. Por ejemplo, para la protección de identidades, se debe agregar el permiso IdentityRiskyUser.Read.All.
  11. Seleccione Grant admin permissions (Conceder permisos de administrador) para conceder esos permisos a la aplicación.

Creación de variables de Azure Automation

En este paso, creará tres variables en la cuenta de Azure Automation, que usará el runbook para determinar cómo autenticarse en Microsoft Entra ID.

  1. En Azure Portal, vuelva a la cuenta de Azure Automation.

  2. Seleccione Variables y Agregar variable.

  3. Cree una variable llamada Thumbprint. Como valor de la variable, escriba la huella digital del certificado que se generó anteriormente.

  4. Cree una variable llamada ClientId. Como valor de la variable, escriba el identificador de cliente de la aplicación registrada en Microsoft Entra ID.

  5. Cree una variable llamada TenantId. Como valor de la variable, escriba el identificador de inquilino del directorio en el que se registró la aplicación.

Creación de un runbook de PowerShell de Azure Automation que pueda usar Graph

En este paso, creará un runbook inicial. Puede desencadenar este runbook para comprobar que la autenticación mediante el certificado creado anteriormente se ha realizado correctamente.

  1. Seleccione Runbooks y Crear un Runbook.

  2. Escriba el nombre del runbook, seleccione PowerShell como tipo de runbook que se va a crear y seleccione Crear.

  3. Una vez creado el runbook, aparece un panel de edición de texto para que escriba el código fuente de PowerShell del runbook.

  4. Escriba el siguiente código de PowerShell en el editor de texto.

Import-Module Microsoft.Graph.Authentication
$ClientId = Get-AutomationVariable -Name 'ClientId'
$TenantId = Get-AutomationVariable -Name 'TenantId'
$Thumbprint = Get-AutomationVariable -Name 'Thumbprint'
Connect-MgGraph -clientId $ClientId -tenantId $TenantId -certificatethumbprint $Thumbprint
  1. Seleccione Panel de prueba y seleccione Iniciar. Espere unos segundos a que se complete el procesamiento de Azure Automation del script del runbook.

  2. Si la ejecución del runbook se realiza correctamente, aparecerá el mensaje Welcome to Microsoft Graph!.

Ahora que ha comprobado que el runbook puede autenticarse en Microsoft Graph, amplíelo agregando cmdlets para interactuar con las características de Microsoft Entra.

Extensión del runbook para usar la administración de derechos

Si el registro de aplicación del runbook tiene los permisos EntitlementManagement.Read.All o EntitlementManagement.ReadWrite.All, puede usar las API de administración de derechos.

  1. Por ejemplo, para obtener una lista de paquetes de acceso de administración de derechos de Microsoft Entra, puede actualizar el runbook creado anteriormente y reemplazar el texto por el siguiente código de PowerShell.
Import-Module Microsoft.Graph.Authentication
$ClientId = Get-AutomationVariable -Name 'ClientId'
$TenantId = Get-AutomationVariable -Name 'TenantId'
$Thumbprint = Get-AutomationVariable -Name 'Thumbprint'
$auth = Connect-MgGraph -clientId $ClientId -tenantid $TenantId -certificatethumbprint $Thumbprint
Import-Module Microsoft.Graph.Identity.Governance
$ap = @(Get-MgEntitlementManagementAccessPackage -All -ErrorAction Stop)
if ($null -eq $ap -or $ap.Count -eq 0) {
   ConvertTo-Json @()
} else {
   $ap | Select-Object -Property Id,DisplayName | ConvertTo-Json -AsArray
}
  1. Seleccione Panel de prueba y seleccione Iniciar. Espere unos segundos a que se complete el procesamiento de Azure Automation del script del runbook.

  2. Si la ejecución se ha realizado correctamente, la salida será una matriz JSON en lugar del mensaje de bienvenida. La matriz JSON incluye el identificador y el nombre para mostrar de cada paquete de acceso devuelto por la consulta.

Proporcionar parámetros al runbook (opcional)

También puede agregar parámetros de entrada al runbook agregando una sección Param en la parte superior del script de PowerShell. Por ejemplo,

Param
(
    [String] $AccessPackageAssignmentId
)

El formato de los parámetros permitidos depende del servicio de llamada. Si el runbook toma parámetros del autor de la llamada, debe agregar lógica de validación al runbook para asegurarse de que los valores de parámetro proporcionados son adecuados para cómo se puede iniciar el runbook. Por ejemplo, si un webhook inicia el runbook, Azure Automation no realiza ninguna autenticación en una solicitud de webhook siempre que se realice en la dirección URL correcta, por lo que necesita un medio alternativo para validar la solicitud.

Una vez configurados los parámetros de entrada del runbook, al probar el runbook, puede proporcionar valores a través de la página Prueba. Más adelante, cuando se publica el runbook, puede proporcionar parámetros al iniciar el runbook desde PowerShell, la API de REST o una aplicación lógica.

Análisis de la salida de una cuenta de Azure Automation en Logic Apps (opcional)

Una vez publicado el runbook, puede crear una programación en Azure Automation y vincular el runbook a esa programación para que se ejecute automáticamente. La programación de runbooks desde Azure Automation es adecuada para runbooks que no necesitan interactuar con otros servicios de Azure u Office 365 que no tienen interfaces de PowerShell.

Si desea enviar la salida del runbook a otro servicio, puede considerar la posibilidad de usar Azure Logic Apps para iniciar el runbook de Azure Automation, ya que Logic Apps también puede analizar los resultados.

  1. En Azure Logic Apps, cree una aplicación lógica en el Diseñador de aplicaciones lógicas a partir de Periodicidad.

  2. Agregue la operación Crear trabajo desde Azure Automation. Autentíquese en Microsoft Entra ID y seleccione la suscripción, el grupo de recursos y la cuenta de Automation que creó anteriormente. Seleccione Esperar al trabajo.

  3. Agregue el parámetro Nombre de runbook y escriba el nombre del runbook que se va a iniciar. Si el runbook tiene parámetros de entrada, puede proporcionarles los valores.

  4. Seleccione Nuevo paso y agregue la operación Obtener resultado del trabajo. Seleccione la misma suscripción, grupo de recursos y cuenta de Automation que en el paso anterior y seleccione el valor dinámico del identificador de trabajo del paso anterior.

  5. A continuación, puede agregar más operaciones a la aplicación lógica, como la acción Analizar JSON, que usa el contenido devuelto cuando finaliza el runbook. (Si está autogenerando el esquema Parse JSON a partir de una carga útil de muestra, asegúrese de tener en cuenta que el script de PowerShell puede devolver null; es posible que tenga que cambiar algunos de los "type": ​"string" por "type": [​"string",​ "null"​] en el esquema).

En Azure Automation, un runbook de PowerShell puede no completarse si intenta escribir una gran cantidad de datos en el flujo de salida a la vez. Normalmente, puede evitar este problema si el runbook genera solo la información necesaria para la aplicación lógica, por ejemplo, mediante el cmdlet Select-Object -Property para excluir las propiedades innecesarias.

Planeamiento para mantener actualizado el certificado

Si ha creado un certificado autofirmado según los pasos anteriores para la autenticación, tenga en cuenta que el certificado tiene una duración limitada antes de que expire. Debe volver a generar el certificado y cargar el nuevo certificado antes de su fecha de expiración.

Hay dos lugares en los que puede ver la fecha de expiración en Azure Portal.

  • En Azure Automation, la pantalla Certificados muestra la fecha de expiración del certificado.
  • En Microsoft Entra ID, en el registro de aplicación, la pantalla Secretos y certificados muestra la fecha de expiración del certificado utilizado para la cuenta de Azure Automation.

Pasos siguientes