Recoger registros de Sysdig
Este analizador extrae datos de eventos de seguridad de los registros JSON de Sysdig, transforma y asigna los campos de registro sin procesar al formato UDM de Google Security Operations. Gestiona varios campos, como metadatos, información principal o de destino, detalles de resultados de seguridad y contexto relacionado con Kubernetes, lo que enriquece los datos para analizarlos en Google SecOps. El analizador también realiza conversiones de tipos de datos, gestión de errores y lógica condicional en función de los valores de los campos para asegurar una representación precisa y completa de UDM.
Antes de empezar
Asegúrate de que cumples los siguientes requisitos previos:
- Instancia de Google SecOps.
- Acceso privilegiado a Sysdig Secure.
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 Google Security Operations.
Opción 1
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 Sysdig).
- Selecciona Webhook como Tipo de fuente.
- Seleccione Sysdig 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.
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 Webhook en Sysdig
- Inicia sesión en Sysdig Secure con privilegios de administrador.
- Ve a Perfil > Ajustes > Reenvío de eventos.
- Haz clic en + Añadir integración y selecciona Webhook en el menú desplegable.
Especifique los valores de los siguientes parámetros de entrada:
- Nombre de la integración: proporciona un nombre descriptivo para el webhook (por ejemplo, Webhook de Google SecOps).
- Endpoint: introduce el webhook
<ENDPOINT_URL>
, seguido de<API_KEY
y<SECRET>
. Datos que enviar: en el menú desplegable, selecciona los tipos de datos de Sysdig que se deben reenviar.
Prueba la integración y, a continuación, activa Habilitado para activarla.
Haz clic en Guardar.
Opción 2
Reenviar datos directamente a Google SecOps
- Inicia sesión en Sysdig Secure con tus credenciales de administrador.
- Ve a Ajustes > Reenvío de eventos.
- Haga clic en + Añadir integración y seleccione Google Chronicle en el menú desplegable.
- Especifique valores para los siguientes parámetros de entrada:
- Nombre de la integración: proporcione un nombre descriptivo para la integración (por ejemplo, Integración de Google SecOps).
- ID de cliente: el ID de cliente de Google asociado a tu cuenta de Google Cloud . En Google SecOps, ve a Ajustes > Perfil.
- Espacio de nombres: opcional. Úsalo como etiqueta para identificar el dominio de datos adecuado para la indexación y el enriquecimiento.
- Credenciales JSON: sube tus credenciales JSON de Google SecOps.
- Región: selecciona tu región, como EE. UU., Europa o Asia.
- Datos que enviar: en el menú desplegable, seleccione los tipos de datos de Sysdig que se deben reenviar.
- Prueba la integración y, a continuación, activa Habilitado para activarla.
- Haz clic en Guardar.
Tabla de asignación de UDM
Campo de registro | Asignación de UDM | Lógica |
---|---|---|
agentId |
read_only_udm.metadata.product_deployment_id |
El valor de agentId del registro sin procesar se asigna directamente a este campo de UDM. |
category |
read_only_udm.security_result.category_details |
El valor de category del registro sin procesar se asigna directamente a este campo de UDM. |
content.fields.container.id |
read_only_udm.target.asset.asset_id |
El valor de content.fields.container.id del registro sin procesar se añade con el prefijo "container_id:" y se asigna a este campo de UDM. Se usa si containerId está vacío. |
content.fields.container.image.repository |
read_only_udm.target.file.full_path |
El valor de content.fields.container.image.repository del registro sin procesar se asigna directamente a este campo de UDM. |
content.fields.container.image.tag |
read_only_udm.metadata.ingestion_labels.value donde key es tag |
El valor de content.fields.container.image.tag del registro sin procesar se asigna directamente a este campo de UDM. |
content.fields.evt.res |
read_only_udm.metadata.ingestion_labels.value donde key es evt_res |
El valor de content.fields.evt.res del registro sin procesar se asigna directamente a este campo de UDM. |
content.fields.evt.type |
read_only_udm.metadata.event_type |
El valor de content.fields.evt.type del registro sin procesar se asigna directamente a este campo de UDM. |
content.fields.falco.rule |
read_only_udm.security_result.rule_name |
El valor de content.fields.falco.rule del registro sin procesar se asigna directamente a este campo de UDM. Se usa si content.ruleName está vacío. |
content.fields.group.gid |
read_only_udm.target.group.product_object_id |
El valor de content.fields.group.gid del registro sin procesar se asigna directamente a este campo de UDM. |
content.fields.group.name |
read_only_udm.target.group.group_display_name |
El valor de content.fields.group.name del registro sin procesar se asigna directamente a este campo de UDM. |
content.fields.proc.cmdline |
read_only_udm.target.process.command_line |
El valor de content.fields.proc.cmdline del registro sin procesar se asigna directamente a este campo de UDM. |
content.fields.proc.pcmdline |
read_only_udm.target.process.parent_process.command_line |
El valor de content.fields.proc.pcmdline del registro sin procesar se asigna directamente a este campo de UDM. |
content.fields.proc.pid |
read_only_udm.target.process.pid |
El valor de content.fields.proc.pid del registro sin procesar se asigna directamente a este campo de UDM. |
content.fields.proc.ppid |
read_only_udm.target.process.parent_process.pid |
El valor de content.fields.proc.ppid del registro sin procesar se asigna directamente a este campo de UDM. |
content.fields.proc.sid |
read_only_udm.metadata.ingestion_labels.value donde key es sid |
El valor de content.fields.proc.sid del registro sin procesar se asigna directamente a este campo de UDM. |
content.fields.user.loginname |
read_only_udm.principal.user.user_display_name |
El valor de content.fields.user.loginname del registro sin procesar se asigna directamente a este campo de UDM. |
content.fields.user.uid |
read_only_udm.principal.user.userid |
El valor de content.fields.user.uid del registro sin procesar se asigna directamente a este campo de UDM. |
content.output |
read_only_udm.additional.fields.value.string_value donde key es content_output |
El valor de content.output del registro sin procesar se asigna directamente a este campo de UDM. |
content.policyId |
read_only_udm.security_result.rule_id |
El valor de content.policyId del registro sin procesar se asigna directamente a este campo de UDM. |
content.policyOrigin |
read_only_udm.additional.fields.value.string_value donde key es content_policyOrigin |
El valor de content.policyOrigin del registro sin procesar se asigna directamente a este campo de UDM. |
content.policyVersion |
read_only_udm.additional.fields.value.string_value donde key es content_policyVersion |
El valor de content.policyVersion del registro sin procesar se asigna directamente a este campo de UDM. |
content.ruleName |
read_only_udm.security_result.rule_name |
El valor de content.ruleName del registro sin procesar se asigna directamente a este campo de UDM. |
content.ruleTags |
read_only_udm.security_result.rule_labels |
Los valores de la matriz content.ruleTags del registro sin procesar se asignan a este campo de UDM, con claves generadas dinámicamente como "ruletag_index". |
content.ruleType |
read_only_udm.additional.fields.value.string_value donde key es content_ruleType |
El valor de content.ruleType del registro sin procesar se asigna directamente a este campo de UDM. |
containerId |
read_only_udm.target.asset.asset_id |
El valor de containerId del registro sin procesar se añade con el prefijo "container_id:" y se asigna a este campo de UDM. |
description |
read_only_udm.metadata.description |
El valor de description del registro sin procesar se asigna directamente a este campo de UDM. |
id |
read_only_udm.metadata.product_log_id |
El valor de id del registro sin procesar se asigna directamente a este campo de UDM. |
labels.container.label.io.kubernetes.container.name |
read_only_udm.additional.fields.value.string_value donde key es container_name |
El valor de labels.container.label.io.kubernetes.container.name del registro sin procesar se asigna directamente a este campo de UDM. |
labels.container.label.io.kubernetes.pod.name |
read_only_udm.additional.fields.value.string_value donde key es pod_name |
El valor de labels.container.label.io.kubernetes.pod.name del registro sin procesar se asigna directamente a este campo de UDM. Se usa si labels.kubernetes.pod.name está vacío. |
labels.container.label.io.kubernetes.pod.namespace |
read_only_udm.principal.namespace |
El valor de labels.container.label.io.kubernetes.pod.namespace del registro sin procesar se asigna directamente a este campo de UDM. Se usa si labels.kubernetes.namespace.name está vacío. |
labels.aws.instanceId |
read_only_udm.target.resource.product_object_id |
El valor de labels.aws.instanceId del registro sin procesar se asigna directamente a este campo de UDM. |
labels.aws.region |
read_only_udm.target.resource.attribute.cloud.availability_zone |
El valor de labels.aws.region del registro sin procesar se asigna directamente a este campo de UDM. |
labels.host.hostName |
read_only_udm.principal.ip O read_only_udm.principal.hostname |
Si el valor contiene "ip", se analiza como una dirección IP y se asigna a principal.ip . De lo contrario, se asigna a principal.hostname . |
labels.host.mac |
read_only_udm.principal.mac |
El valor de labels.host.mac del registro sin procesar se asigna directamente a este campo de UDM. Se usa si machineId está vacío. |
labels.kubernetes.cluster.name |
read_only_udm.additional.fields.value.string_value donde key es kubernetes_cluster_name |
El valor de labels.kubernetes.cluster.name del registro sin procesar se asigna directamente a este campo de UDM. |
labels.kubernetes.deployment.name |
read_only_udm.additional.fields.value.string_value donde key es kubernetes_deployment_name |
El valor de labels.kubernetes.deployment.name del registro sin procesar se asigna directamente a este campo de UDM. |
labels.kubernetes.namespace.name |
read_only_udm.principal.namespace |
El valor de labels.kubernetes.namespace.name del registro sin procesar se asigna directamente a este campo de UDM. |
labels.kubernetes.node.name |
read_only_udm.additional.fields.value.string_value donde key es kubernetes_node_name |
El valor de labels.kubernetes.node.name del registro sin procesar se asigna directamente a este campo de UDM. |
labels.kubernetes.pod.name |
read_only_udm.additional.fields.value.string_value donde key es pod_name |
El valor de labels.kubernetes.pod.name del registro sin procesar se asigna directamente a este campo de UDM. |
labels.kubernetes.service.name |
read_only_udm.additional.fields.value.string_value donde key es kubernetes_service_name |
El valor de labels.kubernetes.service.name del registro sin procesar se asigna directamente a este campo de UDM. |
machineId |
read_only_udm.principal.mac |
El valor de machineId del registro sin procesar se asigna directamente a este campo de UDM. |
name |
read_only_udm.security_result.summary |
El valor de name del registro sin procesar se asigna directamente a este campo de UDM. |
severity |
read_only_udm.security_result.severity |
El valor de severity del registro sin procesar se asigna a un valor de cadena en función de estos intervalos: <4 = ALTO, >3 y <6 = MEDIO, 6 = BAJO y 7 = INFORMATIVO. |
source |
read_only_udm.security_result.description |
El valor de source del registro sin procesar se asigna directamente a este campo de UDM. |
timestampRFC3339Nano |
read_only_udm.metadata.event_timestamp |
El valor de timestampRFC3339Nano del registro sin procesar se analiza como una marca de tiempo y se asigna a este campo de UDM. |
type |
read_only_udm.metadata.product_event_type |
El valor de type del registro sin procesar se asigna directamente a este campo de UDM. |
(Lógica del analizador) | read_only_udm.metadata.product_name |
Codificado como "SYSDIG". |
(Lógica del analizador) | read_only_udm.metadata.vendor_name |
Codificado como "SYSDIG". |
(Lógica del analizador) | read_only_udm.metadata.event_type |
El valor predeterminado es "PROCESS_UNCATEGORIZED" o "GENERIC_EVENT" si labels.host.hostName está vacío. |
(Lógica del analizador) | read_only_udm.metadata.log_type |
Codificado como "SYSDIG". |
(Lógica del analizador) | read_only_udm.target.resource.resource_type |
Se asigna el valor "CLOUD_PROJECT" si existe labels.aws.instanceId . |
¿Necesitas más ayuda? Recibe respuestas de los miembros de la comunidad y de los profesionales de Google SecOps.