Búsqueda de sitios web

Utilice Azure Automation y PowerShell para crear un informe diario de riesgos de Microsoft Entra


Supervise el riesgo de forma continua o prepárese para sorpresas

Las funciones de Microsoft Entra ID Protection incluidas con las suscripciones de Microsoft Entra ID P2 son una forma muy poderosa de combatir los ataques basados en la identidad. ID Protection permite a los administradores usar el estado de riesgo (según lo determine Microsoft) generado en tiempo real para los inicios de sesión y mediante el análisis de comportamiento de Microsoft Entra para bloquear automáticamente los inicios de sesión o forzar el restablecimiento de contraseñas si las conexiones exceden un umbral de riesgo configurable.

Bloquear los inicios de sesión automáticamente es excelente para los inquilinos con las licencias adecuadas, pero no ayuda a todos. Dejando de lado cualquier conversación sobre la activación de funciones de seguridad detrás de SKU de licencias de primer nivel, no todo está perdido para las organizaciones sin suscripciones premium. Si bien se requiere una licencia premium para algunas de las características mejoradas de detalle y corrección automatizada, los usuarios riesgosos, los inicios de sesión y los informes de detección de riesgos están disponibles para los inquilinos con Entra ID P1 o Entra ID Free (los inquilinos de Entra ID Free no obtienen detección de riesgos). informes) en una capacidad limitada como se detalla en la documentación de Microsoft.

Los administradores ocupados a menudo pueden pasar por alto los eventos de riesgo en Microsoft Entra, especialmente en entornos más pequeños donde puede que no haya un equipo de operaciones de seguridad dedicado responsable de monitorear el riesgo. Como ocurre con muchas cosas en Microsoft 365, un poco de automatización puede ser de gran ayuda para cerrar algunas de estas brechas. En este artículo, explico cómo crear un runbook de Azure Automation (código disponible en GitHub) para informar detecciones de riesgos en un inquilino y enviar el informe por correo electrónico a los administradores diariamente.

Empezando

El primer requisito es una cuenta de Azure Automation. Azure Automation es una excelente manera de administrar informes automatizados, como monitorear eventos de registros de auditoría unificada y realizar tareas repetitivas, como aprovisionar Microsoft Teams en función de plantillas.

Para simplificar las cosas, el script utiliza una identidad administrada para conectarse al SDK de Microsoft Graph. Como el script utiliza una identidad administrada, la cuenta de Automatización debe estar asociada con el directorio de ID de Entra del inquilino en el que se ejecutará el script.

A continuación, la entidad de servicio de la cuenta de automatización necesita los siguientes permisos Graph para ejecutar el script:

  • “IdentityRiskyUser.Read.All”: este permiso es necesario para recuperar los datos del usuario arriesgado.
  • “IdentityRiskEvent.Read.All”: este permiso es necesario para recuperar los datos del evento de riesgo.
  • “IdentityRiskyServicePrincipal.Read.All”: este permiso es necesario para recuperar los datos del principal de servicio riesgoso.
  • “Mail.Send”: se requiere este permiso para enviar el informe por correo electrónico al final del script.

La asignación de los permisos necesarios a la entidad de servicio se realiza mediante el SDK de Microsoft Graph PowerShell siguiendo los pasos descritos en el artículo sobre el uso de Power Automate y Azure Automation para administrar el ciclo de vida de los sitios de SharePoint.

Este código muestra cómo asignar los permisos mediante:

  • Definir los permisos necesarios en una matriz.
  • Obteniendo la entidad de servicio de la aplicación Microsoft Graph.
  • Obtener el identificador de la entidad de servicio de la cuenta de automatización.
  • Obtener los ID de función para cada uno de los permisos necesarios.
  • Recorrer cada función y asignar la función a la entidad de servicio de la cuenta de automatización

Todo lo que necesitas hacer es reemplazar el nombre de la cuenta de automatización (aa-EntraRiskReport' en mi ejemplo).

##List Required Permissions
$Permissions = @(
              "IdentityRiskyUser.Read.All"
              "IdentityRiskEvent.Read.All"
              "IdentityRiskyServicePrincipal.Read.All"
              "Mail.Send"
)
##Get Graph Service Principal
$GraphApp = Get-MgServicePrincipal -Filter "AppId eq '00000003-0000-0000-c000-000000000000'"
##Get Automation Account Service Principal ID
$MIID = (Get-MgServicePrincipal -Filter "displayName eq 'aa-EntraRiskReport'").id
##Get Graph Role IDs
[array]$Roles = $GraphApp.AppRoles | Where-Object {$Permissions -contains $_.Value}
##Assign each permission
foreach($role in $roles){
    $AppRoleAssignment = @{
        "PrincipalId" = $MIID
        "ResourceId" = $GraphApp.Id
        "AppRoleId" = $Role.Id
    }
    # Assign the Graph permission
    New-MgServicePrincipalAppRoleAssignment -ServicePrincipalId $MIID -BodyParameter $AppRoleAssignment
}

A continuación, se deben instalar los siguientes módulos del SDK de Microsoft Graph PowerShell como recursos para la cuenta de automatización de Azure:

  • Autenticación.de.Microsoft.Graph.
  • Microsoft.Graph.Identity.SignIns.
  • Microsoft.Graph.Users.Actions.

Los módulos del SDK de Microsoft Graph reciben actualizaciones periódicas, por lo que es importante asegurarse de que estén actualizados. Para obtener más información sobre la actualización de los módulos en Azure Automation, consulte este artículo sobre cómo mantener actualizados los módulos de Microsoft Graph PowerShell para Azure Automation.

Agregar el código

El script para esta tarea está disponible en GitHub. En un nivel alto, el script realiza las siguientes tareas:

  • Declara variables para la dirección del remitente, la dirección del destinatario y el asunto del correo electrónico del informe.
  • Se conecta a Microsoft Graph mediante el SDK de PowerShell.
  • Reúne las detecciones de riesgo, los usuarios de riesgo y las entidades principales de servicio de riesgo del inquilino, incluyendo solo las entradas que tienen un estado "en riesgo".
  • Analiza los datos en colecciones que contienen la información que debe contener el informe.
  • Convierte los datos al formato HTML para el informe.
  • Agrega algo de formato HTML básico a la salida.
  • Agrega el informe HTML al cuerpo de un correo nuevo junto con los parámetros de asunto y destinatario.
  • Envía el informe utilizando el cmdlet Send-MgUserMail especificando la variable de dirección del remitente.

Para ejecutarse en su entorno, las variables de remitente y destinatario en las líneas 20 y 21 del script deben actualizarse con direcciones válidas de remitente y destinatario de su inquilino.

Revisar el informe

El informe incluye tres tablas: Detecciones de riesgos, Usuarios riesgosos y Principales de servicios riesgosos. La tabla Detecciones de riesgos, que se muestra en la Figura 1, enumera los eventos de riesgo que han ocurrido en el inquilino que se encuentran en el Estado de riesgo "en riesgo". Esto significa que un administrador no ha actualizado el estado del evento desencadenante, lo que normalmente implica que aún no se ha revisado.

Las tablas segunda y tercera contienen la lista de usuarios (Figura 2) y principales de servicio donde el estado de riesgo está "en riesgo". Generalmente, si un usuario o entidad de servicio tiene un estado de riesgo listado, tendrá una o más detecciones de riesgo que contribuirán a ese estado. La tabla Detecciones de riesgos se puede utilizar para proporcionar contexto a las identidades enumeradas en las tablas de usuarios y principales de servicios.

Cuando un administrador actúa sobre un riesgo dentro del centro de administración de Microsoft Entra, el estado del riesgo se actualiza y el riesgo ya no aparece en el informe.

Programe el informe

Una ventaja clave de ejecutar scripts como este en Azure Automation es la funcionalidad de programación. Para ejecutar el script todas las mañanas, cree un horario diario en la cuenta de automatización como el que se muestra en la Figura 3.

A continuación, desde el runbook, vincule la programación al runbook (Figura 4) para programar la ejecución del script cada mañana.

Simple, pero efectivo

La cuenta de Automatización ejecutará el script según el cronograma y entregará el informe cada mañana por correo electrónico. Es importante no solo leer el informe, sino también asegurarse de tomar medidas sobre el estado de los riesgos en su entorno y actualizar el estado de los riesgos a medida que se mitigan. Si bien esta información está disponible en el centro de administración de Entra, entregarla en un informe diario es una buena manera de garantizar que la información sea visible para las personas que la necesitan fácilmente. No hay nada particularmente complicado en el script, pero hace lo que necesita al conectarse con el inquilino, recopilar datos, formatearlos y luego enviarlos por correo electrónico. Estoy seguro de que se pueden hacer mejoras, particularmente en el formato del informe, pero se lo dejo a alguien con mejor ojo para el diseño que yo.

Artículos relacionados