Compartir a través de


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 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 de manera escalable desde la línea de comandos de PowerShell mediante el SDK de PowerShell de Microsoft Graph. También puede incluir los cmdlets de PowerShell de Microsoft Graph desde un runbook basado en PowerShell en Azure Automation, de modo que pueda automatizar las tareas de Microsoft Entra utilizando un script sencillo.

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

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.

Rol de requisito previo: 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 Ver 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 de cómo crear un certificado autofirmado, opción 2, 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. Debe agregar Microsoft.Graph.Authentication y, a continuación, 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 galería.

  2. En la barra de búsqueda, escriba Microsoft.Graph.Authentication. Seleccione el módulo, seleccione Importar y seleccione Aceptar para que microsoft Entra ID empiece 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 ha cambiado a Disponible, puede importar el siguiente módulo.

  4. Si usa los cmdlets para las características de Microsoft Entra ID Governance, como la gestió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 podría requerir, como Microsoft.Graph.Users. Por ejemplo, si usa Microsoft Entra ID Protection, podría 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.

  1. Inicie sesión en el Centro de administración de Microsoft Entra como al menos un administrador de aplicaciones.
  2. Vaya a Entra ID>Registros de aplicaciones.
  3. Seleccione Nuevo registro.
  4. Escriba un nombre para la aplicación y seleccione Registrar.
    1. Una vez creado el registro de la aplicación, anote el identificador de aplicación (cliente) y el identificador de directorio (inquilino) cuando necesite estos elementos más adelante.
  5. Seleccione Certificados y Secretos>Certificados>Cargar certificado.
    1. Cargue el archivo .crt creado anteriormente.
  6. Seleccione Permisos> de APIAgregar un permiso.
  7. SeleccionePermisos de aplicación de >.
    1. Seleccione cada uno de los permisos que requiere la cuenta de Azure Automation y, a continuación, seleccione Agregar permisos.

      • Si el runbook solo realiza consultas o actualizaciones en un solo catálogo, no es necesario que le asigne permisos de aplicación a nivel de inquilino; en su lugar, puede asignar al principal de servicio el rol de Propietario del catálogo o Lector de catálogo.
      • Si su runbook solo está realizando consultas para la gestión de derechos, entonces puede usar el permiso EntitlementManagement.Read.All.
      • Si el runbook realiza cambios en la gestió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 agregue el permiso necesario. Por ejemplo, para Microsoft Entra ID Protección, es posible que se necesite el permiso IdentityRiskyUser.Read.All.

La aplicación creada en la sección anterior tiene permisos que requieren que alguien con al menos el rol de administrador de roles con privilegios los apruebe antes de que funcione según lo previsto.

  1. Inicie sesión en el Centro de administración de Microsoft Entra como al menos un administrador de roles con privilegios.
  2. Vaya a Entra ID>Registros de aplicaciones>Todas las aplicaciones.
  3. Selecciona la aplicación que has creado en la sección anterior.
  4. Seleccione Permisos de API y revise los permisos necesarios.
  5. Si procede, seleccione Conceder consentimiento del administrador para "Su nombre de inquilino" para conceder a la aplicación esos permisos.

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 denominada Thumbprint. Como valor de la variable, escriba la huella digital del certificado que se generó anteriormente.

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

  5. Cree una variable denominada 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 el 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 el panel 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 Bienvenido a 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 la aplicación para su runbook tiene los permisos EntitlementManagement.Read.All o EntitlementManagement.ReadWrite.All, entonces puede usar las API de gestió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 el panel 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, cuando pruebe su runbook podrá proporcionar valores en la página de 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 Logic App en el Diseñador de Logic Apps comenzando con Recurrencia.

  2. Agregue la operación Create job from Azure Automation (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 trabajo.

  3. Agregue el parámetro Nombre del 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 salida del trabajo. Seleccione la misma suscripción, grupo de recursos, cuenta de Automation que 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 se completa el runbook. (Si está generando automáticamente el esquema Parse JSON a partir de una carga de ejemplo, 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" a "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 la aplicación, la pantalla Certificados y secretos muestra la fecha de expiración del certificado usado para la cuenta de Azure Automation.

Pasos siguientes