Recopila registros de Sysdig
Este analizador extrae datos de eventos de seguridad de los registros JSON de Sysdig, transformando y asignando los campos de registro sin procesar al formato de UDM de Google Security Operations. Maneja varios campos, incluidos los metadatos, la información del principal o del objetivo, los detalles de los resultados de seguridad y el contexto relacionado con Kubernetes, lo que enriquece los datos para el análisis dentro de las SecOps de Google. El analizador también realiza conversiones de tipos de datos, manejo de errores y lógica condicional según los valores de los campos para garantizar una representación precisa y completa del UDM.
Antes de comenzar
Asegúrate de cumplir con los siguientes requisitos previos:
- Instancia de Google SecOps.
- Acceso privilegiado a Sysdig Secure
Crea una clave de API para el feed del webhook
Ve a Google Cloud consola > Credenciales.
Haz clic en Crear credenciales y selecciona Clave de API.
Restringe el acceso a la clave de API a la API de Google Security Operations.
Opción 1
Configura feeds
Existen dos puntos de entrada diferentes para configurar feeds en la plataforma de Google SecOps:
- Configuración de SIEM > Feeds
- Centro de contenido > Paquetes de contenido
Configura feeds en Configuración del SIEM > Feeds
Para configurar un feed, sigue estos pasos:
- Ve a Configuración del SIEM > Feeds.
- Haz clic en Agregar feed nuevo.
- En la siguiente página, haz clic en Configurar un solo feed.
- En el campo Nombre del feed, ingresa un nombre para el feed, por ejemplo, Registros de Sysdig.
- Selecciona Webhook como el Tipo de origen.
- Selecciona Sysdig como el Tipo de registro.
- Haz clic en Siguiente.
Opcional: Especifica valores para los siguientes parámetros de entrada:
- Delimitador de división: Es el delimitador que se usa para separar las líneas de registro, como
\n
.
- Delimitador de división: Es el delimitador que se usa para separar las líneas de registro, como
Haz clic en Siguiente.
Revisa la configuración del feed en la pantalla Finalizar y, luego, haz clic en Enviar.
Haz clic en Generar clave secreta para generar una clave secreta que autentique este feed.
Copia y almacena la clave secreta. No podrás volver a ver esta clave secreta. Si es necesario, puedes regenerar una clave secreta nueva, pero esta acción hace que la clave secreta anterior quede obsoleta.
En la pestaña Detalles, copia la URL del extremo del feed del campo Información del extremo. Debes especificar esta URL de extremo en tu aplicación cliente.
Haz clic en Listo.
Configura feeds desde el Centro de contenido
Especifica valores para los siguientes campos:
- Delimitador de división: Es el delimitador que se usa para separar las líneas de registro, como
\n
.
Opciones avanzadas
- Nombre del feed: Es un valor completado previamente que identifica el feed.
- Tipo de fuente: Es el método que se usa para recopilar registros en Google SecOps.
- Espacio de nombres del activo: Es el espacio de nombres asociado con el feed.
Etiquetas de transferencia: Son las etiquetas que se aplican a todos los eventos de este feed.
Haz clic en Generar clave secreta para generar una clave secreta que autentique este feed.
Copia y almacena la clave secreta. No podrás volver a ver esta clave secreta. Si es necesario, puedes regenerar una clave secreta nueva, pero esta acción hace que la clave secreta anterior quede obsoleta.
En la pestaña Detalles, copia la URL del extremo del feed del campo Información del extremo. Debes especificar esta URL de extremo en tu aplicación cliente.
Especifica la URL del extremo
- En tu aplicación cliente, especifica la URL del extremo HTTPS que se proporciona 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 un 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 con parámetros de búsqueda en el siguiente formato:
ENDPOINT_URL?key=API_KEY&secret=SECRET
Reemplaza lo siguiente:
ENDPOINT_URL
: Es la URL del extremo del feed.API_KEY
: Es la clave de API para autenticarse en Google SecOps.SECRET
: Es la clave secreta que generaste para autenticar el feed.
Configura el webhook en Sysdig
- Accede a Sysdig Secure con privilegios de administrador.
- Ve a Perfil > Configuración > Reenvío de eventos.
- Haz clic en +Add Integration y selecciona Webhook en el menú desplegable.
Especifica valores para los siguientes parámetros de entrada:
- Nombre de la integración: Proporciona un nombre descriptivo para el webhook (por ejemplo, Webhook de SecOps de Google).
- Endpoint: Ingresa el webhook
<ENDPOINT_URL>
, seguido de<API_KEY
y<SECRET>
. Data to Send: En el menú desplegable, selecciona los tipos de datos de Sysdig que se deben reenviar.
Prueba la integración y, luego, activa Habilitada.
Haz clic en Guardar.
Opción 2
Envía datos directamente a Google SecOps
- Accede a Sysdig Secure con tus credenciales de administrador.
- Ve a Configuración > Reenvío de eventos.
- Haz clic en + Agregar integración y selecciona Google Chronicle en el menú desplegable.
- Especifica valores para los siguientes parámetros de entrada:
- Nombre de la integración: Proporciona un nombre descriptivo para la integración (por ejemplo, Integración de Google SecOps).
- ID de cliente: Es el ID de cliente de Google asociado a tu cuenta de Google Cloud . (En Google SecOps, busca esta opción en Configuración > Perfil).
- Espacio de nombres: Opcional. Se usa 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.
- Data to Send: En el menú desplegable, selecciona los tipos de datos de Sysdig que se deben reenviar.
- Prueba la integración y, luego, activa Habilitada.
- 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 antepone con "container_id:" y se asigna a este campo del 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 la clave 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 la clave 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 la clave 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 la clave 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 la clave 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 la clave 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 del array content.ruleTags del registro sin procesar se asignan a este campo del UDM, con claves generadas de forma dinámica como "ruletag_index". |
content.ruleType |
read_only_udm.additional.fields.value.string_value , donde la clave 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 antepone con "container_id:" y se asigna a este campo del 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 la clave 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 la clave 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 la clave 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 la clave 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 la clave 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 la clave 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 la clave 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 según estos rangos: <4 = ALTO, >3 y <6 = MEDIO, 6 = BAJO, 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 del 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 |
Se codifica de forma rígida como "SYSDIG". |
(Lógica del analizador) | read_only_udm.metadata.vendor_name |
Se codifica de forma rígida como "SYSDIG". |
(Lógica del analizador) | read_only_udm.metadata.event_type |
Se establece en "PROCESS_UNCATEGORIZED" de forma predeterminada o en "GENERIC_EVENT" si labels.host.hostName está vacío. |
(Lógica del analizador) | read_only_udm.metadata.log_type |
Se codifica de forma rígida como "SYSDIG". |
(Lógica del analizador) | read_only_udm.target.resource.resource_type |
Se establece en "CLOUD_PROJECT" si existe labels.aws.instanceId . |
¿Necesitas más ayuda? Obtén respuestas de miembros de la comunidad y profesionales de Google SecOps.