Recoger registros de alertas de Microsoft Defender for Cloud

Disponible en:

Información general

Este analizador extrae datos de alertas de seguridad de los registros con formato JSON de Microsoft Defender for Cloud. Transforma y asigna los campos de registro sin procesar al modelo de datos unificado (UDM) de Google SecOps, gestionando varios tipos de datos y estructuras anidadas, al tiempo que enriquece los datos con contexto y etiquetas adicionales para mejorar el análisis.

Antes de empezar

Asegúrate de que cumples los siguientes requisitos previos:

  • Instancia de Google SecOps.
  • Acceso con privilegios a Microsoft Defender for Cloud.

Configurar feeds

Para configurar un feed, sigue estos pasos:

  1. Ve a Configuración de SIEM > Feeds.
  2. Haz clic en Añadir feed.
  3. En la página siguiente, haga clic en Configurar un solo feed.
  4. En el campo Nombre del feed, escriba un nombre para el feed; por ejemplo, Registros de alertas de Microsoft Defender for Cloud.
  5. Selecciona Webhook como Tipo de fuente.
  6. Seleccione Microsoft Defender for Cloud como Tipo de registro.
  7. Haz clic en Siguiente.
  8. Opcional: especifica los valores de los siguientes parámetros de entrada:
    • Delimitador de división: el delimitador que se usa para separar las líneas de registro, como \n.
  9. Haz clic en Siguiente.
  10. Revise la configuración del feed en la pantalla Finalizar y, a continuación, haga clic en Enviar.
  11. Haz clic en Generar clave secreta para generar una clave secreta que autentique este feed.
  12. Copia y guarda la clave secreta. No podrás volver a ver esta clave secreta. Si es necesario, puedes volver a generar una clave secreta, pero esta acción hará que la clave secreta anterior quede obsoleta.
  13. En la pestaña Detalles, copie la URL del endpoint del feed del campo Información del endpoint. Debes especificar esta URL de endpoint en tu aplicación cliente.
  14. Haz clic en Listo.

Crear una clave de API para la feed de webhook

  1. Ve a la consolaGoogle Cloud > Credenciales.

    Ir a Credenciales

  2. Haz clic en Crear credenciales y, a continuación, selecciona Clave de API.

  3. Restringe el acceso de la clave de API a la API Google Security Operations.

Especificar la URL del endpoint

  1. En tu aplicación cliente, especifica la URL del endpoint HTTPS proporcionada en el feed de webhook.
  2. Para habilitar la autenticación, especifica la clave de API y la clave secreta como parte del encabezado personalizado con el siguiente formato:

    X-goog-api-key = API_KEY
    X-Webhook-Access-Key = SECRET
    

    Recomendación: Especifica la clave de API como encabezado en lugar de hacerlo en la URL. Si tu cliente de webhook no admite encabezados personalizados, puedes especificar la clave de API y la clave secreta mediante parámetros de consulta con el siguiente formato:

    ENDPOINT_URL?key=API_KEY&secret=SECRET
    

Haz los cambios siguientes:

  • ENDPOINT_URL: URL del endpoint del feed.
  • API_KEY: la clave de API para autenticarte en Google Security Operations.
  • SECRET: la clave secreta que has generado para autenticar el feed.

Crear una aplicación lógica de Azure

  1. Inicia sesión en Azure Portal (https://portal.azure.com).
  2. Haz clic en Crear un recurso y busca Aplicación lógica.
  3. Haz clic en Crear para iniciar el proceso de implementación.
  4. Configurar aplicación lógica:
    • Nombre: proporciona un nombre descriptivo para la aplicación lógica (por ejemplo, GoogleSecOpsWebhook).
    • Suscripción: selecciona la suscripción adecuada.
    • Grupo de recursos: elija un grupo de recursos que ya tenga o cree uno.
    • Ubicación: elige la ubicación más cercana a tu entorno.
    • Analíticas de Registros: habilita esta opción si quieres registrar datos de diagnóstico de la aplicación lógica.
  5. Haz clic en Revisar y crear para crear la aplicación lógica.
  6. Haz clic en Crear para implementar la aplicación lógica.

Configurar la conexión de webhook de Azure Logic App

  1. Ve a la aplicación lógica que has creado en el paso anterior.
  2. Haz clic en Herramientas de desarrollo > Diseñador de aplicaciones lógicas.
  3. Haz clic en Añadir un activador.
  4. Busca Microsoft Defender for Cloud > When a Microsoft Defender for Cloud alert is created or triggered (Cuando se crea o se activa una alerta de Microsoft Defender for Cloud) como activador.

  5. Haz clic en Crear nuevo y sigue las instrucciones para autenticarte.

  6. Haz clic en Insertar un nuevo paso para añadir un paso al flujo de trabajo.

  7. Haz clic en Añadir una acción.

  8. Busca HTT.

  9. Selecciona HTTP como acción.

  10. Configura la acción HTTP:

    • URI: aquí es donde introducirás la URL del endpoint de la API Google SecOps.
    • Método: POST
    • Añadir encabezado Content-Type: define Content-Type como clave de encabezado y application/json como valor de encabezado. De esta forma, Google SecOps sabe el formato de los datos que se envían.
    • Añadir clave de API a las consultas: define key como la primera clave de consulta y <API_KEY> como el valor de la consulta. API_KEY es el valor de la clave de API que se genera durante la configuración del feed de Google SecOps.
    • Añadir clave secreta a las consultas: define secret como la segunda clave de consulta y <SECRET_KEY> como el valor de la consulta. SECRET_KEY es la clave secreta que se genera durante la configuración del feed de Google SecOps.
    • Definir el cuerpo a partir del paso anterior: haz clic en Introducir contenido de la solicitud > Introducir los datos de los pasos anteriores (botón con el icono de un rayo situado a la izquierda del campo de entrada).
  11. Haz clic en Guardar.

Configurar el webhook de alertas de Microsoft Defender Cloud

  1. Ve a Microsoft Defender for Cloud.
  2. Haz clic en Gestión > Automatización de flujos de trabajo.
  3. Haz clic en Añadir automatización de flujo de trabajo.
    • Nombre: proporciona un nombre descriptivo para la regla de automatización (por ejemplo, ForwardAlertsToGoogleSecOps).
    • Grupo de recursos: elige un grupo de recursos.
    • Tipo de datos de Defender for Cloud: elija Alerta de seguridad.
    • Gravedad de la alerta: elige Seleccionar todo.
    • Mostrar instancias de aplicaciones lógicas de las siguientes suscripciones: elija la suscripción en la que se creó la aplicación lógica.
    • Seleccionar aplicación lógica: elige la aplicación lógica creada en los pasos anteriores.
  4. Haz clic en Crear para guardar la automatización del flujo de trabajo.

Tabla de asignación de UDM

Campo de registro Asignación de UDM Lógica
AlertLink principal.resource.attribute.labels.AlertLink.value Asignación directa.
AlertName security_result.rule_name Asignación directa.
AlertSeverity security_result.severity Se asigna directamente si el valor es HIGH, MEDIUM, LOW, CRITICAL o UNKNOWN_SEVERITY. De lo contrario, se asigna a security_result.severity_details. El valor se convierte a mayúsculas antes de la comparación.
AlertType security_result.threat_name Asignación directa.
CompromisedEntity principal.resource.attribute.labels.CompromisedEntity.value Asignación directa.
Description security_result.description Asignación directa.
DisplayName security_result.summary Asignación directa.
EndTime about.resource.attribute.labels.EndTime.value Asignación directa.
Entities[].Location.City principal.location.city Asignación directa.
Entities[].Location.CountryName principal.location.country_or_region Asignación directa.
ExtendedLinks[].Category about.resource.attribute.labels.extendedLink_Category.value Asignación directa.
ExtendedLinks[].Href about.resource.attribute.labels.extendedLink_Href.value Asignación directa.
ExtendedLinks[].Label about.resource.attribute.labels.extendedLink_Label.value Asignación directa.
ExtendedLinks[].Type about.resource.attribute.labels.extendedLink_Type.value Asignación directa.
ExtendedProperties.Account Session Id network.session_id Se asigna directamente después de cambiar el nombre a accountSessionId.
ExtendedProperties.Alert Id metadata.product_log_id Se asigna directamente después de cambiar el nombre a alertId.
ExtendedProperties.Authentication type extensions.auth.auth_details Se asigna directamente después de cambiar el nombre a authenticationType.
ExtendedProperties.Client Application principal.application Se asigna directamente después de cambiar el nombre a clientApplication.
ExtendedProperties.Client Hostname principal.asset.hostname, principal.hostname Se asigna directamente después de cambiar el nombre a clientHostName.
ExtendedProperties.Client IP address principal.asset.ip, principal.ip Se asigna directamente después de cambiar el nombre a clientIpAddress.
ExtendedProperties.Client IP location principal.location.country_or_region Se asigna directamente después de cambiar el nombre a clientIpLocation.
ExtendedProperties.Client Location principal.location.country_or_region Se asigna directamente después de cambiar el nombre a clientLocation.
ExtendedProperties.Client Principal Name principal.user.userid Se asigna directamente después de cambiar el nombre a clientPrincipalName.
ExtendedProperties.Compromised Host principal.asset.hostname, principal.hostname Se asigna directamente después de cambiar el nombre a compromisedHost.
ExtendedProperties.Suspicious Command Line target.process.command_line Se asigna directamente después de cambiar el nombre a suspiciousCommandLine.
ExtendedProperties.Suspicious Process target.process.file.full_path Se asigna directamente después de cambiar el nombre a suspiciousProcess.
ExtendedProperties.Suspicious Process Id target.process.pid Se asigna directamente después de cambiar el nombre a suspiciousProcessId.
ExtendedProperties.User agent network.http.user_agent Se asigna directamente después de cambiar el nombre a userAgent.
ExtendedProperties.User Name principal.user.user_display_name Se asigna directamente después de cambiar el nombre a userName.
ExtendedProperties.resourceType principal.resource.name Asignación directa.
IsIncident security_result.detection_fields.IsIncident.value Asignación directa. Se ha convertido en una cadena.
ProcessingEndTime about.resource.attribute.labels.ProcessingEndTime.value Asignación directa.
ProductName metadata.product_name Asignación directa.
ResourceId principal.resource.product_object_id Asignación directa.
SourceSystem security_result.detection_fields.SourceSystem.value Asignación directa.
StartTime about.resource.attribute.labels.StartTime.value Asignación directa.
Status security_result.detection_fields.Status.value Asignación directa.
SystemAlertId metadata.product_log_id Asignación directa.
Tactics security_result.attack_details.tactics.name Asignación directa.
TenantId additional.fields.TenantId.string_value Asignación directa.
TimeGenerated about.resource.attribute.labels.TimeGenerated.value Asignación directa.
VendorName metadata.vendor_name Asignación directa.
WorkspaceResourceGroup target.resource.attribute.labels.WorkspaceResourceGroup.value Asignación directa.
WorkspaceSubscriptionId target.resource.attribute.labels.WorkspaceSubscriptionId.value Asignación directa.
_Internal_WorkspaceResourceId target.resource.product_object_id Asignación directa.
properties.alertDisplayName security_result.rule_name Asignación directa.
properties.alertType security_result.threat_name Asignación directa.
properties.alertUri principal.resource.attribute.labels.AlertUri.value Asignación directa.
properties.correlationKey principal.resource.attribute.labels.correlationKey.value Asignación directa.
properties.description security_result.description Asignación directa.
properties.endTimeUtc additional.fields.EndTime.string_value Asignación directa.
properties.entities[].location.city principal.location.city Asignación directa.
properties.entities[].location.countryName principal.location.country_or_region Asignación directa.
properties.entities[].location.latitude principal.location.region_coordinates.latitude Asignación directa. Se ha convertido en flotante.
properties.entities[].location.longitude principal.location.region_coordinates.longitude Asignación directa. Se ha convertido en flotante.
properties.extendedProperties.alert_Id metadata.product_log_id Asignación directa.
properties.extendedProperties.clientApplication principal.application Asignación directa.
properties.extendedProperties.clientIpAddress principal.asset.ip, principal.ip Asignación directa. Analizada como dirección IP.
properties.extendedProperties.clientLocation principal.location.country_or_region Asignación directa.
properties.extendedProperties.clientPrincipalName principal.user.userid Asignación directa.
properties.extendedProperties.compromisedEntity principal.resource.attribute.labels.CompromisedEntity.value Asignación directa.
properties.extendedProperties.resourceType principal.resource.name Asignación directa.
properties.IsIncident security_result.detection_fields.isIncident.value Asignación directa. Se ha convertido en una cadena.
properties.productName metadata.product_name Asignación directa.
properties.resourceIdentifiers[].<key> additional.fields.<key>_<index>.string_value Asignación directa. Las claves $id y type se añaden con el índice del elemento en la matriz.
properties.severity security_result.severity Se asigna directamente si el valor es HIGH, MEDIUM, LOW, CRITICAL o UNKNOWN_SEVERITY. De lo contrario, se asigna a security_result.severity_details. El valor se convierte a mayúsculas antes de la comparación.
properties.startTimeUtc additional.fields.StartTime.string_value Asignación directa.
properties.status security_result.detection_fields.Status.value Asignación directa.
properties.timeGeneratedUtc additional.fields.TimeGenerated.string_value Asignación directa. Se define como "MICROSOFT_DEFENDER_CLOUD_ALERTS" si no se proporciona en el registro. Se ha definido como "MICROSOFT_DEFENDER_CLOUD_ALERTS". Se asigna el valor "USER_RESOURCE_ACCESS" si están presentes el principal o el destino. De lo contrario, se asigna el valor "GENERIC_EVENT".

¿Necesitas más ayuda? Recibe respuestas de los miembros de la comunidad y de los profesionales de Google SecOps.