Recoger registros de Datadog

Disponible en:

Información general

Este analizador extrae campos de los registros de Datadog, realiza varias mutaciones y coincidencias de Grok para estructurar los datos y asigna los campos extraídos al UDM. Gestiona diferentes formatos de registro en el campo message, incluidos los pares clave-valor y los objetos JSON, y convierte campos específicos en etiquetas compatibles con UDM y campos adicionales.

Antes de empezar

Asegúrate de que cumples los siguientes requisitos previos:

  • Instancia de Google SecOps.
  • Acceso privilegiado a Google Cloud IAM.
  • Acceso privilegiado a Cloud Storage.
  • logs_write_archive acceso de los usuarios a Datadog.

Opción 1: Compartir registros de Datadog mediante la configuración de Cloud Storage

Configurar la integración de Datadog con la plataforma Google Cloud

Crea un Google Cloud segmento de almacenamiento

  1. Inicia sesión en la Google Cloud consola.
  2. Ve a la página Segmentos de Cloud Storage.

    Ir a Contenedores

  3. Haz clic en Crear.

  4. En la página Crear un segmento, introduce la información del segmento. Después de cada uno de los pasos siguientes, haga clic en Continuar para pasar al siguiente:

    1. En la sección Empezar, haz lo siguiente:

      1. Introduce un nombre único que cumpla los requisitos de los nombres de los segmentos (por ejemplo, datadog-data).
      2. Para habilitar el espacio de nombres jerárquico, haz clic en la flecha para desplegar la sección Optimizar para cargas de trabajo orientadas a archivos y con gran cantidad de datos y, a continuación, selecciona Habilitar espacio de nombres jerárquico en este contenedor.

      3. Para añadir una etiqueta de contenedor, haz clic en la flecha para desplegar la sección Etiquetas.

      4. Haga clic en Añadir etiqueta y especifique una clave y un valor para la etiqueta.

    2. En la sección Elige dónde quieres almacenar los datos, haz lo siguiente:

      1. Selecciona un Tipo de ubicación.
      2. Usa el menú desplegable de tipo de ubicación para seleccionar una Ubicación en la que se almacenarán permanentemente los datos de los objetos de tu segmento.
        • Si selecciona el tipo de ubicación de dos regiones, también puede habilitar la replicación turbo marcando la casilla correspondiente.
      3. Para configurar la replicación entre contenedores, despliega la sección Configurar la replicación entre contenedores.
    3. En la sección Elige una clase de almacenamiento para tus datos, selecciona una clase de almacenamiento predeterminada para el segmento o Autoclass para gestionar automáticamente la clase de almacenamiento de los datos del segmento.

    4. En la sección Elige cómo quieres controlar el acceso a los objetos, selecciona no para aplicar la prevención del acceso público y elige un modelo de control de acceso para los objetos del segmento.

    5. En la sección Elige cómo proteger los datos de los objetos, haz lo siguiente:

      1. Selecciona cualquiera de las opciones de Protección de datos que quieras configurar para tu contenedor.
      2. Para elegir cómo se cifrarán los datos de los objetos, haga clic en la flecha del desplegable Cifrado de datos y seleccione un Método de cifrado de datos.
  5. Haz clic en Crear.

Crear una cuenta de servicio de Google Cloud

  1. Ve a IAM y administración > Cuentas de servicio.
  2. Crear una nueva cuenta de servicio.
  3. Ponle un nombre descriptivo (por ejemplo, datadog-user).
  4. Concede a la cuenta de servicio el rol Administrador de objetos de Storage en el segmento de Cloud Storage que has creado en el paso anterior.
  5. Crea una clave SSH para la cuenta de servicio.
  6. Descarga un archivo de clave JSON de la cuenta de servicio. Guarda este archivo de forma segura.

Configurar Datadog para enviar registros a Cloud Storage

  1. Inicia sesión en Datadog con una cuenta con privilegios.
  2. Ve a Registros > Reenvío de registros.
  3. Haz clic en Crear archivo.
  4. Selecciona Google Cloud Storage.
  5. Introduzca los parámetros obligatorios y haga clic en Guardar.

Opción 2: Compartir registros de Datadog mediante la configuración de Webhook

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, introduce un nombre para el feed (por ejemplo, Registros de Datadog).
  5. Selecciona Webhook como Tipo de fuente.
  6. Seleccione Datadog 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, copia 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 Chronicle.

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.

  3. 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 SecOps.
    • SECRET: la clave secreta que has generado para autenticar el feed.

Configurar Datadog para enviar registros a un webhook

  1. Inicia sesión en Datadog con una cuenta con privilegios.
  2. Ve a Registros > Reenvío de registros.
  3. Selecciona Destinos personalizados.
  4. Haga clic en + Crear un nuevo destino.
  5. Especifique valores para los siguientes parámetros de entrada:
    1. Elige un tipo de destino: selecciona HTTP.
    2. Asigna un nombre al destino: proporciona un nombre descriptivo para el webhook (por ejemplo, Webhook de Google SecOps).
    3. Configura el destino: introduce el ENDPOINT_URL, seguido de API_KEY y SECRET.
    4. Configura los ajustes de autenticación: añade un encabezado general como el siguiente. De esta forma, no se deformará la solicitud HTTP y Datadog podrá completar la creación del webhook.
      • Nombre del encabezado: Accept.
      • Valor de encabezado: application/json.
    5. Haz clic en Guardar.

Tabla de asignación de UDM

Campo de registro Asignación de UDM Lógica
_id read_only_udm.metadata.product_log_id Se asigna directamente desde el campo _id.
alert read_only_udm.security_result.about.resource.attribute.labels Se extrae del campo alert y se añade como etiqueta en el objeto security_result.
attributes.@timestamp read_only_udm.metadata.event_timestamp La marca de tiempo del evento se extrae del campo attributes.@timestamp y se convierte a segundos y nanosegundos.
attributes.@version read_only_udm.metadata.product_version Se asigna directamente desde el campo attributes.@version.
attributes.level_value read_only_udm.security_result.about.resource.attribute.labels Se extrae del campo attributes.level_value y se añade como etiqueta en el objeto security_result.
attributes.logger_name read_only_udm.principal.application Se asigna directamente desde el campo attributes.logger_name.
attributes._trace.baggage._sli_service read_only_udm.additional.fields Se asigna directamente desde el campo attributes._trace.baggage._sli_service y se añade como campo adicional.
attributes._trace.baggage.device_id read_only_udm.principal.asset.asset_id Se asigna directamente desde el campo attributes._trace.baggage.device_id, precedido de "Device Id:" (ID de dispositivo).
attributes._trace.origin.operation read_only_udm.metadata.product_event_type Se asigna directamente desde el campo attributes._trace.origin.operation.
caller read_only_udm.security_result.about.resource.attribute.labels Se extrae del campo caller y se añade como etiqueta en el objeto security_result.
component read_only_udm.security_result.about.resource.attribute.labels Se extrae del campo component y se añade como etiqueta en el objeto security_result.
context.AlertName read_only_udm.security_result.threat_name Se asigna directamente desde el campo context.AlertName.
context.BusArch read_only_udm.security_result.about.resource.attribute.labels Se extrae del campo context.BusArch y se añade como etiqueta en el objeto security_result.
context.CANDBVersion read_only_udm.security_result.about.resource.attribute.labels Se extrae del campo context.CANDBVersion y se añade como etiqueta en el objeto security_result.
context.esn read_only_udm.security_result.about.resource.attribute.labels Se extrae del campo context.esn y se añade como etiqueta en el objeto security_result.
context.ftcpVersion read_only_udm.security_result.about.resource.attribute.labels Se extrae del campo context.ftcpVersion y se añade como etiqueta en el objeto security_result.
context.ingestMessageId read_only_udm.security_result.about.resource.attribute.labels Se extrae del campo context.ingestMessageId y se añade como etiqueta en el objeto security_result.
context.redactedVin read_only_udm.security_result.about.resource.attribute.labels Se extrae del campo context.redactedVin y se añade como etiqueta en el objeto security_result.
context.vehicleId read_only_udm.security_result.about.resource.attribute.labels Se extrae del campo context.vehicleId y se añade como etiqueta en el objeto security_result.
date read_only_udm.metadata.collected_timestamp La marca de tiempo recogida se extrae del campo date (que se ha renombrado como date1 en el analizador) y se convierte a segundos y nanosegundos.
host read_only_udm.principal.hostname Se asigna directamente desde el campo host.
message read_only_udm.security_result.about.resource.attribute.labels El campo message se analiza y algunas de sus partes se usan para rellenar los campos summary y json_data. El resto se trata como pares clave-valor y se añade como etiquetas en el objeto security_result.
msg read_only_udm.security_result.about.resource.attribute.labels Se extrae del campo msg y se añade como etiqueta en el objeto security_result.
service read_only_udm.metadata.product_name Se asigna directamente desde el campo service.
status read_only_udm.security_result.severity La gravedad se determina en función del campo status. "INFO", "DEBUG", "debug" e "info" se asignan a "LOW", "WARN" se asigna a "MEDIUM" y otros valores no se asignan explícitamente en el fragmento de código proporcionado.
tags read_only_udm.additional.fields Cada etiqueta de la matriz tags se analiza para obtener pares clave-valor y se añade como campos adicionales.
N/A read_only_udm.metadata.event_type Se asigna el valor "STATUS_UPDATE" si el campo host está presente y "GENERIC_EVENT" en caso contrario.

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