Recoger registros de Datadog
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
- Configura una integración para Google Cloud Platform en Datadog. Para obtener más información, consulta la configuración de la integración de Datadog Google Cloud .
Crea un Google Cloud segmento de almacenamiento
- Inicia sesión en la Google Cloud consola.
Ve a la página Segmentos de Cloud Storage.
Haz clic en Crear.
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:
En la sección Empezar, haz lo siguiente:
- Introduce un nombre único que cumpla los requisitos de los nombres de los segmentos (por ejemplo, datadog-data).
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.
Para añadir una etiqueta de contenedor, haz clic en la flecha para desplegar la sección Etiquetas.
Haga clic en Añadir etiqueta y especifique una clave y un valor para la etiqueta.
En la sección Elige dónde quieres almacenar los datos, haz lo siguiente:
- Selecciona un Tipo de ubicación.
- 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.
- Para configurar la replicación entre contenedores, despliega la sección Configurar la replicación entre contenedores.
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.
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.
En la sección Elige cómo proteger los datos de los objetos, haz lo siguiente:
- Selecciona cualquiera de las opciones de Protección de datos que quieras configurar para tu contenedor.
- 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.
Haz clic en Crear.
Crear una cuenta de servicio de Google Cloud
- Ve a IAM y administración > Cuentas de servicio.
- Crear una nueva cuenta de servicio.
- Ponle un nombre descriptivo (por ejemplo, datadog-user).
- 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.
- Crea una clave SSH para la cuenta de servicio.
- 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
- Inicia sesión en Datadog con una cuenta con privilegios.
- Ve a Registros > Reenvío de registros.
- Haz clic en Crear archivo.
- Selecciona Google Cloud Storage.
- 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:
- Ve a Configuración de SIEM > Feeds.
- Haz clic en Añadir feed.
- En la página siguiente, haga clic en Configurar un solo feed.
- En el campo Nombre del feed, introduce un nombre para el feed (por ejemplo, Registros de Datadog).
- Selecciona Webhook como Tipo de fuente.
- Seleccione Datadog como Tipo de registro.
- Haz clic en Siguiente.
- 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
.
- Delimitador de división: el delimitador que se usa para separar las líneas de registro, como
- Haz clic en Siguiente.
- Revise la configuración del feed en la pantalla Finalizar y, a continuación, haga clic en Enviar.
- Haz clic en Generar clave secreta para generar una clave secreta que autentique este feed.
- 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.
- 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.
- Haz clic en Listo.
Crear una clave de API para la feed de webhook
Ve a la consolaGoogle Cloud > Credenciales.
Haz clic en Crear credenciales y, a continuación, selecciona Clave de API.
Restringe el acceso de la clave de API a la API Chronicle.
Especificar la URL del endpoint
- En tu aplicación cliente, especifica la URL del endpoint HTTPS proporcionada en el feed de webhook.
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 SecOps.SECRET
: la clave secreta que has generado para autenticar el feed.
Configurar Datadog para enviar registros a un webhook
- Inicia sesión en Datadog con una cuenta con privilegios.
- Ve a Registros > Reenvío de registros.
- Selecciona Destinos personalizados.
- Haga clic en + Crear un nuevo destino.
- Especifique valores para los siguientes parámetros de entrada:
- Elige un tipo de destino: selecciona HTTP.
- Asigna un nombre al destino: proporciona un nombre descriptivo para el webhook (por ejemplo, Webhook de Google SecOps).
- Configura el destino: introduce el ENDPOINT_URL, seguido de API_KEY y SECRET.
- 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
.
- Nombre del encabezado:
- Haz clic en Guardar.
Enlaces de referencia
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.