Extensiones de analizadores
En este documento, se explica cómo crear extensiones de analizador para extraer campos de los datos de registro sin procesar y asignarlos a campos de UDM (modelo de datos unificado) de destino en la plataforma de Google Security Operations.
En el documento, se describe el proceso de creación de la extensión del analizador:
- Crear extensiones de analizador
- Requisitos previos y limitaciones.
- Identifica los campos de origen en los datos de registro sin procesar.
- Selecciona los campos de la UDM de destino adecuados.
Elige el enfoque de definición de extensión del analizador adecuado:
La definición de una extensión de analizador incluye el diseño de la lógica de análisis para filtrar los datos de registro sin procesar, transformarlos y asignarlos a campos de UDM de destino. Google SecOps proporciona dos enfoques para crear extensiones de analizador:
- Crea extensiones de analizador con el enfoque sin código (Map data fields).
- Crea extensiones de analizador con el enfoque de fragmento de código.
Ejemplos ilustrativos de creación de extensiones de analizador para varios formatos y situaciones de registro. Por ejemplo, ejemplos sin código que usan JSON y fragmentos de código para lógica compleja o formatos que no son JSON (CSV, XML, Syslog).
Crea extensiones de analizador
Las extensiones de analizador proporcionan una forma flexible de extender las capacidades de los analizadores predeterminados (y personalizados) existentes. Las extensiones de analizador proporcionan una forma flexible de extender las capacidades de los analizadores predeterminados (o personalizados) existentes sin reemplazarlos. Las extensiones te permiten personalizar la canalización del analizador agregando una nueva lógica de análisis, extrayendo y transformando campos, y actualizando o quitando las asignaciones de campos de la UDM.
Una extensión de analizador no es lo mismo que un analizador personalizado. Puedes crear un analizador personalizado para el tipo de registro que no tiene un analizador predeterminado o para inhabilitar las actualizaciones del analizador.
Proceso de extracción y normalización del analizador
Google SecOps recibe los datos de registro originales como registros sin procesar. Los analizadores predeterminados (y personalizados) extraen y normalizan los campos de registro principales en campos de UDM estructurados en los registros de UDM. Esto representa solo un subconjunto de los datos de registro sin procesar originales. Puedes definir extensiones de analizador para extraer valores de registro que no controlan los analizadores predeterminados. Una vez activadas, las extensiones del analizador forman parte del proceso de extracción y normalización de datos de Google SecOps.
Define nuevas extensiones del analizador
Los analizadores predeterminados contienen conjuntos predefinidos de instrucciones de asignación que especifican cómo extraer, transformar y normalizar los valores de seguridad principales. Puedes crear extensiones de analizador nuevas definiendo instrucciones de asignación con el enfoque sin código (Asignar campos de datos) o el enfoque de fragmento de código:
Enfoque sin código
El enfoque sin código es más adecuado para extracciones simples de registros sin procesar en formato JSON, XML o CSV nativo. Te permite especificar campos de fuente de registro sin procesar y asignar los campos de UDM de destino correspondientes.
Por ejemplo, para extraer datos de registros JSON con hasta 10 campos, usa comparaciones de igualdad simples.
Enfoque de fragmento de código
El enfoque de fragmento de código te permite definir instrucciones para extraer y transformar valores del registro sin procesar y asignarlos a campos de la AUA. Los fragmentos de código usan la misma sintaxis similar a Logstash que el analizador predeterminado (o personalizado).
Este enfoque se aplica a todos los formatos de registro compatibles. Es mejor para las siguientes situaciones:
- Extracción de datos o lógica complejas
- Datos no estructurados que requieren analizadores basados en Grok
- Formatos que no son JSON, como CSV y XML
Los fragmentos de código usan funciones para extraer datos específicos de los datos de registro sin procesar. Por ejemplo, Grok, JSON, KV y XML.
En la mayoría de los casos, es mejor usar el enfoque de asignación de datos que se usó en el analizador predeterminado (o personalizado).
Cómo combinar los valores extraídos recientemente en los campos de la AUA
Una vez activadas, las extensiones del analizador combinan los valores extraídos recientemente en campos de la UDM designados en el registro de la UDM correspondiente según principios de combinación predefinidos. Por ejemplo:
Reemplazar valores existentes: Los valores extraídos reemplazan los valores existentes en los campos de la UDM de destino.
La única excepción son los campos repetidos, en los que puedes configurar la extensión del analizador para que adjunte valores nuevos cuando escribas datos en un campo repetido en el registro del UDM.
La extensión del analizador tiene prioridad: Las instrucciones de asignación de datos en una extensión del analizador tienen prioridad sobre las del analizador predeterminado (o personalizado) para ese tipo de registro. Si hay un conflicto en las instrucciones de asignación, la extensión del analizador reemplazará el valor establecido por el valor predeterminado.
Por ejemplo, si el analizador predeterminado asigna un campo de registro sin procesar al campo UDM
event.metadata.description
y la extensión del analizador asigna un campo de registro sin procesar diferente a ese mismo campo UDM, la extensión del analizador reemplaza el valor establecido por el analizador predeterminado.
Limitaciones
- Una extensión de analizador por tipo de registro: Solo puedes crear una extensión de analizador por tipo de registro.
- Solo un enfoque de instrucción de asignación de datos: Puedes compilar una extensión de analizador con el enfoque sin código o con el de fragmento de código, pero no ambos enfoques juntos.
- Muestras de registro para la validación: Se requieren muestras de registro de los últimos 30 días para validar una extensión del analizador de UDM. Para obtener más información, consulta Asegúrate de que haya un analizador activo para el tipo de registro.
- Errores del analizador básico: Los errores del analizador básico no se pueden identificar ni corregir dentro de las extensiones del analizador.
- Campos repetidos en fragmentos de código: Ten cuidado cuando reemplaces objetos repetidos completos en fragmentos de código para evitar la pérdida de datos no deseada. Para obtener más información, consulta Más información sobre el selector de campos repetidos.
- Eventos sin ambigüedades: Las extensiones del analizador no pueden controlar registros con varios eventos únicos en un solo registro, por ejemplo, un array de Google Drive.
- XML y sin código: No se recomienda el enfoque sin código para XML debido a posibles problemas de codificación. Usa el enfoque de fragmento de código para XML.
- Sin datos retroactivos: No puedes analizar datos de registro sin procesar de forma retroactiva.
- Palabras clave reservadas con el enfoque sin código: Si los registros contienen alguna de las siguientes palabras clave reservadas, usa el enfoque de fragmento de código en lugar del enfoque sin código:
collectionTimestamp
createTimestamp
enableCbnForLoop
event
filename
message
namespace
output
onErrorCount
timestamp
timezone
- Quita las asignaciones existentes: Puedes quitar las asignaciones de campos de la UDM existentes con solo el enfoque de fragmento de código.
- Quita las asignaciones de campos de la AUA para los campos de IP repetidos: No puedes quitar las asignaciones de campos de la AUA para los campos de IP repetidos.
Conceptos del analizador
En los siguientes documentos, se explican conceptos importantes del analizador:
- Descripción general del modelo de datos unificado
- Descripción general del análisis de registros
- Referencia de sintaxis del analizador
Requisitos previos
Requisitos previos para la creación de extensiones del analizador:
- Debe haber un analizador predeterminado (o personalizado) activo para el tipo de registro.
- Google SecOps debe poder transferir y normalizar los registros sin procesar con un analizador predeterminado (o personalizado).
- Asegúrate de que el analizador predeterminado (o personalizado) activo para tu tipo de registro objetivo haya transferido datos de registro sin procesar en los últimos 30 días. Estos datos deben contener una muestra de los campos que deseas extraer o usar para filtrar los registros de registro. Se usará para validar tus nuevas instrucciones de asignación de datos.
Comenzar
Antes de crear una extensión de analizador, haz lo siguiente:
Verifica los requisitos previos:
Asegúrate de que haya un analizador activo para el tipo de registro. Si aún no tiene un analizador, crea uno personalizado.
Identifica los campos que se deben extraer de los registros sin procesar:
Identifica los campos que deseas extraer de los registros sin procesar.
Selecciona los campos de UDM adecuados:
Selecciona los campos de la AUA correspondientes para asignar los campos de registro sin procesar extraídos.
Elige un enfoque de definición de extensión del analizador:
Elige cualquiera de los dos enfoques de extensión (enfoques de asignación de datos) para crear la extensión del analizador.
Verifica los requisitos previos
Asegúrate de que haya un analizador activo para el tipo de registro que deseas extender, como se describe en las siguientes secciones:
Asegúrate de que haya un analizador activo para el tipo de registro
Asegúrate de que haya un analizador predeterminado (o personalizado) activo para el tipo de registro que deseas extender.
Busca tu tipo de registro en estas listas:
Tipos de registros admitidos con un analizador predeterminado
- Si hay un analizador predeterminado para el tipo de registro, asegúrate de que el analizador esté activo.
- Si no hay un analizador predeterminado para el tipo de registro, asegúrate de que haya un analizador personalizado para el tipo de registro.
Tipos de registros admitidos sin un analizador predeterminado
- Si no hay un analizador predeterminado para el tipo de registro, asegúrate de que haya un analizador personalizado para el tipo de registro.
Asegúrate de que haya un analizador personalizado para el tipo de registro
Para asegurarte de que haya un analizador personalizado para un tipo de registro, haz lo siguiente:
- En la barra de navegación, selecciona Configuración de SIEM > Análisis.
Busca el tipo de registro que deseas extender en la tabla Analizador.
- Si ese tipo de registro aún no tiene un analizador predeterminado o personalizado, haz clic en CREATE PARSER y sigue los pasos que se indican en Cómo crear un analizador personalizado basado en instrucciones de asignación.
- Si ese tipo de registro ya tiene un analizador personalizado, asegúrate de que el analizador esté activo.
Asegúrate de que el analizador esté activo para el tipo de registro
Para verificar si un analizador está activo para un tipo de registro, sigue estos pasos:
- En la barra de navegación, selecciona Configuración de SIEM > Análisis.
Busca el tipo de registro que deseas extender en la tabla Analizador.
Si el analizador del tipo de registro no está activo, actívalo:
- Para los analizadores predeterminados, consulta Cómo administrar actualizaciones de analizadores precompilados.
- Para los analizadores personalizados, consulta Administra actualizaciones de analizadores personalizados.
Identifica los campos que se deben extraer de los registros sin procesar
Analiza el registro sin procesar del que deseas extraer datos para identificar los campos que no extrae el analizador predeterminado (o personalizado). Presta atención a cómo el analizador predeterminado (o personalizado) extrae campos de registro sin procesar y los asigna a sus campos de UDM correspondientes.
Para identificar los campos específicos que deseas extraer de los registros sin procesar, puedes usar las herramientas de búsqueda:
Para acceder a la herramienta de búsqueda, ve a Investigación > Búsqueda de SIEM. Escribe raw= antes de tu búsqueda. Para obtener más información, consulta Cómo realizar una búsqueda de registros sin procesar.
Para acceder a la herramienta de búsqueda heredada, haz clic en Ir a la búsqueda heredada en la parte superior de la página Búsqueda de SIEM. Para obtener más información, consulta Cómo buscar registros sin procesar con el análisis de registros sin procesar.
Para obtener detalles sobre cómo buscar en los registros sin procesar, consulta los siguientes artículos:
Selecciona los campos de UDM adecuados
Ahora que identificaste los campos de destino específicos que se extraerán, puedes hacer coincidir los campos de UDM de destino correspondientes. Establece una asignación clara entre los campos de origen de registro sin procesar y sus campos de UDM de destino. Puedes asignar datos a cualquier campo de la AUA que admita los tipos de datos estándar o los campos repetidos.
Elige el campo de UDM correcto
Los siguientes recursos pueden ayudarte a simplificar el proceso:
- Familiarízate con los conceptos principales de la UDM
- Comprende la asignación de datos que usa el analizador existente
- Usa la herramienta de búsqueda de UDM para encontrar posibles campos de UDM que coincidan con tus campos de origen.
- La guía Campos importantes de la UDM para la asignación de datos del analizador incluye un resumen y una explicación de los campos más usados del esquema de la UDM.
- La lista de campos del modelo de datos unificado contiene una lista de todos los campos del UDM y sus descripciones. Los campos repetidos se identifican con la etiqueta "repeated" en las listas.
- Consideraciones importantes de la UDM para evitar errores
Familiarízate con los conceptos principales de la UDM
Objetos lógicos: evento y entidad
El esquema de la UDM describe todos los atributos disponibles que almacenan datos. Cada registro de la UDM describe un evento o una entidad. Los datos se almacenan en diferentes campos según si el registro describe un evento o una entidad.
- Un objeto Evento de la AUA almacena datos sobre la acción que se produjo en el entorno. El registro de eventos original describe la acción tal como la registró el dispositivo, como el firewall o el proxy web.
- Los objetos UDM Entity almacenan datos sobre los participantes o las entidades involucradas en el evento de la AUA, como los recursos, los usuarios o los recursos de tu entorno.
Sustantivos de la UDM: Un sustantivo representa a un participante o una entidad en un evento de la UDM. Un sustantivo podría ser, por ejemplo, el dispositivo o el usuario que realiza la actividad descrita en el evento. Un sustantivo también puede ser el dispositivo o el usuario que es el objetivo de la actividad que se describe en el evento.
Sustantivo de UDM Descripción principal
Es la entidad responsable de iniciar la acción descrita en el evento. target
Es la entidad que es el destinatario o el objeto de la acción. En una conexión de firewall, la máquina que recibe la conexión sería el objetivo. src
Es una entidad de origen en la que el principal realizó una acción. Por ejemplo, si un usuario copia un archivo de una máquina a otra, el archivo y la máquina de origen se representarán como src. intermediary
Cualquier entidad que actúe como intermediario en el evento, como un servidor proxy Pueden influir en la acción, como bloquear o alterar una solicitud. observer
Es una entidad que supervisa y genera informes sobre el evento, pero no interactúa directamente con el tráfico. Algunos ejemplos son los sistemas de detección de intrusiones de red o los sistemas de administración de información y eventos de seguridad. about
Cualquier otra entidad involucrada en el evento que no se ajuste a las categorías anteriores Por ejemplo, archivos adjuntos de correo electrónico o DLL cargadas durante el inicio de un proceso. En la práctica, los objetos Noun principal y objetivo son los que se utilizan con mayor frecuencia. También es importante tener en cuenta que las descripciones anteriores constituyen el uso recomendado de los sustantivos. El uso real puede variar según la implementación de un analizador de base predeterminado o personalizado.
Comprender la asignación de datos que usa el analizador existente
Se recomienda comprender la asignación de datos existente que usa el analizador predeterminado (o personalizado) entre los campos de origen de registro sin procesar y sus campos de UDM de destino.
Para ver la asignación de datos entre los campos de origen de registro sin procesar y los campos de UDM de destino que se usan en el analizador predeterminado (o personalizado) existente, haz lo siguiente:
- En la barra de navegación, selecciona Configuración de SIEM > Análisis.
- Busca el tipo de registro que deseas extender en la tabla Analizador.
Navega a esa fila y, luego, haz clic en
Menú > Ver.La pestaña Código del analizador muestra la asignación de datos entre los campos de origen de registro sin procesar y los campos de la UDM de destino que se usan en el analizador predeterminado (o personalizado) existente.
Usa la herramienta de búsqueda de UDM
Usa la herramienta de búsqueda de UDM para identificar los campos de UDM que coinciden con los campos de fuente de registro sin procesar.
Google SecOps proporciona la herramienta de búsqueda de UDM para ayudarte a encontrar rápidamente los campos de UDM de destino. Para acceder a la herramienta de búsqueda de la UDM, ve a Investigación > Búsqueda de SIEM.
Consulta estos temas para obtener detalles sobre cómo usar la herramienta de búsqueda de la UDM:
- Cómo encontrar un campo de UDM
- Cómo ingresar una búsqueda de UDM
- Establece un filtro de tiempo en la búsqueda
- Ejemplos de búsquedas de UDM
- Genera consultas de búsqueda de la AUA con Gemini
Ejemplo de la herramienta de búsqueda de UDM
Por ejemplo, si tienes un campo de origen en el registro sin procesar llamado "packets", usa la herramienta de búsqueda de UDM para encontrar posibles campos de UDM de destino con "packets" en su nombre:
Ve a Investigación > Búsqueda de SIEM.
En la página Búsqueda de SIEM, ingresa "packets" en el campo Buscar campos de UDM por valor y, luego, haz clic en Búsqueda de UDM.
Se abrirá el diálogo UDM Lookup. La herramienta de búsqueda busca coincidencias en los campos de la AUA por nombre de campo o valor de campo:
- Búsqueda por nombre de campo: Coincide con la cadena de texto que ingresas en los nombres de campo que contienen ese texto.
- Búsqueda por valor de campo: Coincide con el valor que ingresas en los campos que contienen ese valor en sus datos de registro almacenados.
En el diálogo UDM Lookup, selecciona UDM Fields.
La función de búsqueda mostrará una lista de posibles campos de la AUA que contengan el texto "packets" en sus nombres de campos de la AUA.
Haz clic en cada fila de una en una para ver la descripción de cada campo de la UDM.
Consideraciones importantes de la AUA para evitar errores
- Campos con aspecto similar: La estructura jerárquica de la UDM puede generar campos con nombres similares. Consulta los analizadores predeterminados para obtener orientación. Para obtener más información, consulta Información sobre la asignación de datos que usa el analizador existente.
- Asignación de campos arbitrarios: Usa el objeto
additional
para los datos que no se asignan directamente a un campo de la UDM. Para obtener más información, consulta Asignación de campos arbitrarios en la UDM. - Campos repetidos: Ten cuidado cuando trabajes con campos repetidos en fragmentos de código. Si reemplazas un objeto completo, es posible que se reemplacen los datos originales. El uso del enfoque sin código ofrece más control sobre los campos repetidos. Para obtener más detalles, consulta Más información sobre el selector de campos repetidos.
- Campos de la AUA obligatorios para los tipos de eventos de la AUA: Cuando asignas un campo
metadata.event_type
de la AUA a un registro de la AUA, cadaevent_type
requiere que haya un conjunto diferente de campos relacionados en el registro de la AUA. Para obtener más información, consulta Más información para asignar camposmetadata.event_type
de la AUA. - Problemas del analizador base: Las extensiones del analizador no pueden corregir errores del analizador base. El analizador base es el analizador predeterminado (o personalizado) que creó el registro de UDM. Considera opciones como mejorar la extensión del analizador, modificar el analizador básico o filtrar los registros previamente.
Asignación de campos arbitrarios en la UDM
Cuando no encuentres un campo de UDM estándar adecuado para almacenar tus datos, usa el objeto additional
para almacenarlos como un par clave-valor personalizado. Esto te permite almacenar información valiosa en el registro de la UDM, incluso si no tiene un campo de la UDM que coincida.
Elige un enfoque de definición de extensión del analizador
Antes de elegir un enfoque de definición de extensión del analizador, debes haber trabajado en estas secciones:
Los siguientes pasos son abrir la página Extensiones de analizador y seleccionar el enfoque de extensión que se usará para definir la extensión del analizador:
Abre la página Extensiones del analizador
La página Extensiones del analizador te permite definir la nueva extensión del analizador.
Puedes abrir la página Extensiones de analizador de las siguientes maneras: desde el menú Configuración, desde una búsqueda de registros sin procesar o desde una búsqueda de registros sin procesar heredada:
Abre el menú Configuración.
Para abrir la página Extensiones del analizador desde el menú Configuración, haz lo siguiente:
En la barra de navegación, selecciona Configuración de SIEM > Análisis.
En la tabla Analizador, se muestra una lista de analizadores predeterminados por tipo de registro.
Busca el tipo de registro que deseas extender, haz clic en > Crear extensión.
MenúSe abrirá la página Extensiones del analizador.
Cómo abrir desde una búsqueda de registros sin procesar
Para abrir la página Extensiones de analizador desde una búsqueda de registros sin procesar, haz lo siguiente:
- Ve a Investigación > Búsqueda de SIEM.
- En el campo de búsqueda, agrega el prefijo
raw =
a tu argumento de búsqueda y encierra el término de búsqueda entre comillas. Por ejemplo,raw = "example.com"
- Haz clic en Ejecutar búsqueda. Los resultados se muestran en el panel Registros sin procesar.
- Haz clic en un registro (fila) en el panel Registros sin procesar. Se mostrará el panel Vista de eventos.
- Haz clic en la pestaña Raw Log en el panel Event View. Se mostrará el registro sin procesar.
Haz clic en Administrar analizador > Crear extensión > Siguiente.
Se abrirá la página Extensiones del analizador.
Cómo abrir desde una búsqueda de registros sin procesar heredada
Para abrir la página Extensiones de analizador desde una búsqueda de registros sin procesar heredada, haz lo siguiente:
- Usa la búsqueda de registros sin procesar heredada para buscar registros similares a los que se analizarán.
- Selecciona un evento del panel Eventos > Línea de tiempo.
- Expande el panel Datos del evento.
Haz clic en Administrar analizador > Crear extensión > Siguiente.
Se abrirá la página Extensiones del analizador.
Página de extensiones de analizadores
La página muestra los paneles Registro sin procesar y Definición de la extensión:
Panel Registro sin procesar:
Se mostrarán datos de registro sin procesar de muestra para el tipo de registro seleccionado. Si abriste la página desde la búsqueda de registros sin procesar, los datos de muestra son el resultado de la búsqueda. Puedes dar formato al ejemplo con el menú Ver como (RAW, JSON, CSV, XML, etc.) y la casilla de verificación Unir texto.
Verifica que la muestra de datos de registro sin procesar que se muestra sea representativa de los registros que procesará la extensión del analizador.
Haz clic en Obtener vista previa del resultado de la UDM para ver el resultado de la UDM de los datos de registro sin procesar de muestra.
Panel Definición de la extensión:
Esto te permite definir una extensión de analizador con uno de los dos enfoques de instrucciones de asignación: Asignar campos de datos (sin código) o Escribir un fragmento de código. No puedes usar ambos enfoques en la misma extensión del analizador.
Según el enfoque que elijas, puedes especificar los campos de datos de registro de origen para extraerlos de los registros sin procesar entrantes y asignarlos a los campos de la AUA correspondientes, o bien puedes escribir un fragmento de código para realizar estas tareas y mucho más.
Selecciona el enfoque de extensión
En la página Extensiones del analizador, en el panel Definición de extensión, en el campo Método de extensión, selecciona uno de los siguientes enfoques para crear la extensión del analizador:
Enfoque de asignación de campos de datos (sin código):
Este enfoque te permite especificar los campos del registro sin procesar y asignarlos a los campos de la UDM de destino.
Este enfoque funciona con los siguientes formatos de registro sin procesar:
- JSON, XML o CSV nativos
- Encabezado de Syslog más JSON, XML o CSV nativos Puedes crear instrucciones de asignación de tipos de campos de datos para registros sin procesar en estos formatos:
JSON
,XML
,CSV
,SYSLOG + JSON
,SYSLOG + XML
ySYSLOG + CSV
.
Consulta los siguientes pasos, Instrucciones para crear campos de datos de mapas sin código.
Enfoque Escribir fragmento de código:
Este enfoque te permite usar una sintaxis similar a Logstash para especificar instrucciones para extraer y transformar valores del registro sin procesar y asignarlos a campos de UDM en el registro de UDM.
Los fragmentos de código usan la misma sintaxis y secciones que los analizadores predeterminados (o personalizados). Para obtener más información, consulta Sintaxis del analizador.
Este enfoque funciona con todos los formatos de datos compatibles para ese tipo de registro.
Consulta los siguientes pasos, Instrucciones para crear fragmentos de código.
Crea instrucciones sin código (campos de datos de mapas)
El enfoque sin código (también llamado método Asignar campos de datos) te permite especificar las rutas de los campos de registro sin procesar y asignarlos a los campos de UDM de destino correspondientes.
Antes de crear una extensión de analizador con el enfoque sin código, debes haber trabajado en estas secciones:
- Cómo crear extensiones de analizador
- Comenzar
- Selecciona el enfoque de extensión y la opción Map data fields.
Los siguientes pasos para definir la extensión del analizador son los siguientes:
- Cómo configurar el selector de campos repetidos
- Define una instrucción de asignación de datos para cada campo
- Envía y activa la extensión del analizador
Cómo configurar el selector de campos repetidos
En el panel Definición de extensión, en el campo Campos repetidos, establece cómo la extensión del analizador debe guardar un valor en los campos repetidos (campos que admiten un array de valores, por ejemplo, principal.ip
):
- Agregar valores: El valor extraído recientemente se agrega al conjunto de valores existente almacenado en el campo del array de UDM.
- Reemplaza valores: El valor extraído recientemente reemplaza el conjunto de valores existente en el campo del array de la UDM, que el analizador predeterminado almacenó anteriormente.
La configuración del selector Campos repetidos no afecta a los campos no repetidos.
Para obtener más información, consulta Más información sobre el selector de campos repetidos.
Define una instrucción de asignación de datos para cada campo
Define una instrucción de asignación de datos para cada campo que deseas extraer del registro sin procesar. La instrucción debe especificar la ruta de acceso del campo de origen en el registro sin procesar y asignarlo al campo de UDM de destino.
Si la muestra de registro sin procesar que se muestra en el panel Registro sin procesar contiene un encabezado de Syslog, se muestran los campos Syslog y Destino. (Algunos formatos de registro no contienen un encabezado de Syslog, por ejemplo, JSON nativo, XML nativo o CSV).
Google SecOps necesitará los campos Syslog y Target para procesar previamente el encabezado de Syslog y extraer la parte estructurada del registro.
Define estos campos:
Syslog: Es un patrón definido por el usuario que procesa previamente y separa un encabezado de Syslog de la parte estructurada de un registro sin procesar.
Especifica el patrón de extracción, con Grok y expresiones regulares, que identifica el encabezado de Syslog y el mensaje de registro sin procesar. Para obtener más información, consulta Define los campos del extractor de Syslog.
Destino: Es el nombre de la variable en el campo Syslog que almacena la parte estructurada del registro.
Especifica el nombre de la variable en el patrón de extracción que almacena la parte estructurada del registro.
Este es un ejemplo de un patrón de extracción y un nombre de variable para los campos Syslog y Target, respectivamente.
Después de ingresar valores en los campos Syslog y Target, haz clic en el botón Validate.
El proceso de validación verifica los errores de sintaxis y análisis y, luego, muestra una de las siguientes opciones:
- Listo: Aparecerán los campos de asignación de datos. Define el resto de la extensión del analizador.
- Error: Aparece un mensaje de error. Corrige la condición de error antes de continuar.
De manera opcional, define una instrucción de precondición.
Una instrucción de precondición identifica un subconjunto de los registros sin procesar que la extensión del analizador procesa haciendo coincidir un valor estático con un campo en el registro sin procesar. Si un registro sin procesar entrante cumple con los criterios de la condición previa, la extensión del analizador aplica la instrucción de asignación. Si los valores no coinciden, la extensión del analizador no aplica la instrucción de asignación.
Completa los siguientes campos:
- Campo de condición previa: Es el identificador de campo en el registro sin procesar que contiene el valor que se comparará. Ingresa la ruta de acceso completa al campo si el formato de los datos de registro es JSON o XML, o la posición de la columna si el formato de los datos es CSV.
- Operador de condición previa: Selecciona
EQUALS
oNOT EQUALS
. - Valor de la condición previa: Es el valor estático que se comparará con el campo de condición previa en el registro sin procesar.
Para ver otro ejemplo de una instrucción de precondición, consulta Sin código: Extrae campos con un valor de precondición.
Asigna el campo de datos de registro sin procesar al campo de UDM de destino:
Campo de datos sin procesar: Ingresa la ruta de acceso completa al campo si el formato de los datos de registro es JSON (por ejemplo,
jsonPayload.connection.dest_ip
) o XML (por ejemplo,/Event/Reason-Code
), o la posición de la columna si el formato de los datos es CSV (nota: las posiciones del índice comienzan en 1).Campo de destino: Ingresa el nombre de campo del UDM completamente calificado en el que se almacenará el valor, por ejemplo,
udm.metadata.collected_timestamp.seconds
.
Para seguir agregando más campos, haz clic en Agregar y, luego, ingresa todos los detalles de las instrucciones de asignación para el siguiente campo.
Para ver otro ejemplo de asignación de campos, consulta Sin código: Extrae campos.
Envía y activa la extensión del analizador
Una vez que hayas definido las instrucciones de asignación de datos para todos los campos que pretendes extraer del registro sin procesar, envía y activa la extensión del analizador.
Haz clic en Enviar para guardar y validar la instrucción de asignación.
Google SecOps valida las instrucciones de asignación:
- Si el proceso de validación se realiza correctamente, el estado cambia a Activo y las instrucciones de asignación comienzan a procesar los datos de registro entrantes.
Si el proceso de validación falla, el estado cambia a Falló y se muestra un error en el campo Registro sin procesar.
Este es un ejemplo de un error de validación:
ERROR: generic::unknown: pipeline.ParseLogEntry failed: LOG_PARSING_CBN_ERROR: "generic::invalid_argument: pipeline failed: filter mutate (7) failed: copy failure: copy source field \"jsonPayload.dest_instance.region\" must not be empty (try using replace to provide the value before calling copy) "LOG: {"insertId":"14suym9fw9f63r","jsonPayload":{"bytes_sent":"492", "connection":{"dest_ip":"10.12.12.33","dest_port":32768,"protocol":6, "src_ip":"10.142.0.238","src_port":22},"end_time":"2023-02-13T22:38:30.490546349Z", "packets_sent":"15","reporter":"SRC","src_instance":{"project_id":"example-labs", "region":"us-east1","vm_name":"example-us-east1","zone":"us-east1-b"}, "src_vpc":{"project_id":"example-labs","subnetwork_name":"default", "vpc_name":"default"},"start_time":"2023-02-13T22:38:29.024032655Z"}, "logName":"projects/example-labs/logs/compute.googleapis.com%2Fvpc_flows", "receiveTimestamp":"2023-02-13T22:38:37.443315735Z","resource":{"labels": {"location":"us-east1-b","project_id":"example-labs", "subnetwork_id":"00000000000000000000","subnetwork_name":"default"}, "type":"gce_subnetwork"},"timestamp":"2023-02-13T22:38:37.443315735Z"}
Estados del ciclo de vida de una extensión del analizador
Las extensiones del analizador tienen los siguientes estados del ciclo de vida:
DRAFT
: Extensión de analizador recién creada que aún no se envió.VALIDATING
: Google SecOps valida las instrucciones de asignación en función de los registros sin procesar existentes para garantizar que los campos se analicen sin errores.LIVE
: La extensión del analizador pasó la validación y ahora está en producción. Extrae y transforma los datos de los registros sin procesar entrantes en registros de la UDM.FAILED
: La extensión del analizador no pudo validar.
Más información sobre el selector de campos repetidos
Algunos campos del UDM almacenan un array de valores, como el campo principal.ip. El selector de campos repetidos te permite controlar cómo la extensión del analizador almacenará los datos extraídos recientemente en un campo repetido:
Valores agregados:
La extensión del analizador agregará el valor extraído recientemente al array de valores existentes en el campo del UDM.
Reemplaza valores:
La extensión del analizador reemplazará el array de valores existentes en el campo del UDM con el valor extraído recientemente.
Una extensión del analizador puede asignar datos a un campo repetido solo cuando el campo repetido está en el nivel más bajo de la jerarquía. Por ejemplo:
- La asignación de valores a
udm.principal.ip
es compatible porque el campoip
repetido está en el nivel más bajo de la jerarquía yprincipal
no es un campo repetido. - No se admiten valores de asignación a
udm.intermediary.hostname
porqueintermediary
es un campo repetido y no está en el nivel más bajo de la jerarquía.
En la siguiente tabla, se proporcionan ejemplos de cómo la configuración del selector Campos repetidos afecta el registro de la UDM generado.
Selección de Campos repetidos | Registro de ejemplo | Configuración de la extensión del analizador | Resultado generado |
---|---|---|---|
Valores agregados | {"protoPayload":{"@type":"type.AuditLog","authenticationInfo":{"principalEmail":"admin@cmmar.co"},"requestMetadata":{"callerIp":"1.1.1.1, 2.2.2.2"}}} |
Campo de condición previa: protoPayload.requestMetadata.callerIp
Valor de condición previa: " "
Operador de condición previa: NOT_EQUALS
Campo de datos sin procesar: protoPayload.requestMetadata.callerIp
Campo de destino: event.idm.read_only_udm.principal.ip
|
metadata:{event_timestamp:{}.....}principal:{Ip:"1.1.1.1, 2.2.2.2"}
}
} |
Valores agregados | {"protoPayload":{"@type":"type.AuditLog","authenticationInfo":{"principalEmail":"admin@cmmar.co"},"requestMetadata":{"callerIp":"2.2.2.2, 3.3.3.3", "name":"Akamai Ltd"}}} |
Condición previa 1:
Campo de condición previa: protoPayload.requestMetadata.callerIp
Valor de condición previa: " "
Operador de condición previa: NOT_EQUALS
Campo de datos sin procesar: protoPayload.requestMetadata.callerIp
Campo de destino: event.idm.read_only_udm.principal.ip
Condición previa 2:
|
Eventos generados por el analizador precompilado antes de aplicar la extensión.
metadata:{event_timestamp:{} ... principal:{ip:"1.1.1.1"}}}
Resultado después de aplicar la extensión.
|
Reemplazar valores | {"protoPayload":{"@type":"type..AuditLog","authenticationInfo":{"principalEmail":"admin@cmmar.co"},"requestMetadata":{"callerIp":"2.2.2.2"}}} |
Campo de condición previa: protoPayload.authenticationInfo.principalEmail
Valor de condición previa: " "
Operador de condición previa: NOT_EQUALS
Campo de datos sin procesar: protoPayload.authenticationInfo.principalEmail
Campo de destino: event.idm.read_only_udm.principal.ip
|
Eventos de la AUA generados por el analizador precompilado antes de aplicar la extensión.timestamp:{} idm:{read_only_udm:{metadata:{event_timestamp:{} ... principal:{ip:"1.1.1.1"}}}
Salida de UDM después de aplicar la extensión
|
Más información sobre los campos del extractor de Syslog
Los campos del extractor de Syslog te permiten separar el encabezado de Syslog de un registro estructurado definiendo Grok, la expresión regular y un token nombrado en el patrón de expresión regular para almacenar el resultado.
Define los campos del extractor de Syslog
Los valores de los campos Syslog y Target funcionan juntos para definir cómo la extensión del analizador separa el encabezado de Syslog de la parte estructurada de un registro sin procesar. En el campo Syslog, defines una expresión con una combinación de Grok y la sintaxis de expresiones regulares. La expresión incluye un nombre de variable que identifica la parte estructurada del registro sin procesar. En el campo Target, especificas ese nombre de variable.
En el siguiente ejemplo, se muestra cómo funcionan juntos estos campos.
Este es un ejemplo de un registro sin procesar:
<13>1 2022-09-14T15:03:04+00:00 fieldname fieldname - - - {"timestamp": "2021-03-14T14:54:40.842152+0000","flow_id": 1885148860701096, "src_ip": "10.11.22.1","src_port": 51972,"dest_ip": "1.2.3.4","dest_port": 55291,"proto": "TCP"}
El registro sin procesar contiene las siguientes secciones:
Encabezado de Syslog:
<13> 2022-09-14T15:03:04+00:00 fieldname fieldname - - -
Evento con formato JSON:
{"timestamp": "2021-03-14T14:54:40.842152+0000","flow_id": 1885148860701096, "src_ip": "10.11.22.1","src_port": 51972,"dest_ip": "1.2.3.4","dest_port": 55291,"proto": "TCP"}
Para separar el encabezado de Syslog de la parte JSON del registro sin procesar, usa la siguiente expresión de ejemplo en el campo Syslog:
%{TIMESTAMP_ISO8601} %{WORD} %{WORD} ([- ]+)?%{GREEDYDATA:msg}
- Esta parte de la expresión identifica el encabezado de Syslog:
%{TIMESTAMP\_ISO8601} %{WORD} %{WORD} ([- ]+)?
- Esta parte de la expresión captura el segmento JSON del registro sin procesar:
%{GREEDYDATA:msg}
Este ejemplo incluye el nombre de la variable msg
. Tú eliges el nombre de la variable.
La extensión del analizador extrae el segmento JSON del registro sin procesar y lo asigna a la variable msg
.
En el campo Target, ingresa el nombre de la variable msg
. El valor almacenado en la variable msg
se ingresa a las instrucciones de asignación de campos de datos que creas en la extensión del analizador.
Con el ejemplo de registro sin procesar, el siguiente segmento se ingresa a la instrucción de asignación de datos:
{"timestamp": "2021-03-14T14:54:40.842152+0000","flow_id": 1885148860701096, "src_ip": "10.11.22.1","src_port": 51972,"dest_ip": "1.2.3.4","dest_port": 55291,"proto": "TCP"}
A continuación, se muestran los campos Syslog y Target completados:
En la siguiente tabla, se proporcionan más ejemplos con registros de muestra, el patrón de extracción de Syslog, el nombre de la variable Target y el resultado.
Ejemplo de registro sin procesar | Campo de Syslog | Campo objetivo | Resultado |
---|---|---|---|
<13>1 2022-07-14T15:03:04+00:00 suricata suricata - - - {\"timestamp\": \"2021-03-14T14:54:40.842152+0000\",\"flow_id\": 1885148860701096,\"in_iface\": \"enp94s0\",\"event_type\": \"alert\",\"vlan\": 522,\"src_ip\": \"1.1.2.1\",\"src_port\": 51972,\"dest_ip\": \"1.2.3.4\",\"dest_port\": 55291,\"proto\": \"TCP\"}" |
%{TIMESTAMP_ISO8601} %{WORD} %{WORD} ([- ]+)?%{GREEDYDATA:msg} |
msg | field_mappings {
field: "msg"
value: "{\"timestamp\": \"2021-03-14T14:54:40.842152+0000\",\"flow_id\": 1885148860701096,\"in_iface\": \"enp94s0\",\"event_type\": \"alert\",\"vlan\": 522,\"src_ip\": \"1.1.2.1\",\"src_port\": 51972,\"dest_ip\": \"1.2.3.4\",\"dest_port\": 55291,\"proto\": \"TCP\"}"
}
|
<13>1 2022-07-14T15:03:04+00:00 suricata suricata - - - {\"timestamp\": \"2021-03-14T14:54:40.842152+0000\"} - - - {\"timestamp\": \"2021-03-14T14:54:40.842152+0000\",\"flow_id\": 1885148860701096,\"in_iface\": \"enp94s0\",\"event_type\": \"alert\",\"vlan\": 522,\"src_ip\": \"1.1.2.1\",\"src_port\": 51972,\"dest_ip\": \"1.2.3.4\",\"dest_port\": 55291,\"proto\": \"TCP\"} |
%{TIMESTAMP_ISO8601} %{WORD} %{WORD} ([- ]+)?%{GREEDYDATA:msg1} ([- ]+)?%{GREEDYDATA:msg2} |
msg2 | field_mappings {
field: "msg2"
value: "{\"timestamp\": \"2021-03-14T14:54:40.842152+0000\",\"flow_id\": 1885148860701096,\"in_iface\": \"enp94s0\",\"event_type\": \"alert\",\"vlan\": 522,\"src_ip\": \"1.1.2.1\",\"src_port\": 51972,\"dest_ip\": \"1.2.3.4\",\"dest_port\": 55291,\"proto\": \"TCP\"}"
} |
"<13>1 2022-07-14T15:03:04+00:00 suricata suricata - - - {\"timestamp\": \"2021-03-14T14:54:40.842152+0000\"} - - - {\"timestamp\": \"2021-03-14T14:54:40.842152+0000\",\"flow_id\": 1885148860701096,\"in_iface\": \"enp94s0\",\"event_type\": \"alert\",\"vlan\": 522,\"src_ip\": \"1.1.2.1\",\"src_port\": 51972,\"dest_ip\": \"1.2.3.4\",\"dest_port\": 55291,\"proto\": \"TCP\"}" |
%{TIMESTAMP_ISO8601} %{WORD} %{WORD} ([- ]+)?%{GREEDYDATA:message} ([- ]+)?%{GREEDYDATA:msg2} |
msg2 | Error - message already exists in state and not overwritable. |
Más información para asignar campos metadata.event_type
de la AUA
Cuando se asigna un campo metadata.event_type
de la AUA a un registro de la AUA, se valida para garantizar que los campos relacionados obligatorios estén presentes en el registro de la AUA. Cada metadata.event_type
de la UDM requiere un conjunto diferente de campos relacionados. Por ejemplo, un evento USER_LOGIN
sin un user
no es útil.
Si falta un campo relacionado obligatorio, la validación de la UDM muestra un error:
"error": {
"code": 400,
"message": "Request contains an invalid argument.",
"status": "INVALID_ARGUMENT"
}
Un analizador de Grok muestra un error más detallado:
generic::unknown:
invalid event 0: LOG_PARSING_GENERATED_INVALID_EVENT:
"generic::invalid_argument: udm validation failed: target field is not set"
Para encontrar los campos obligatorios de un event_type
de la UDM que deseas asignar, usa los siguientes recursos:
Documentación de Google SecOps: Guía de uso de la AUA: Campos obligatorios y opcionales de la AUA para cada tipo de evento
Recursos no oficiales de terceros: Validación de eventos de la AUA
En los casos en que la Guía de uso de la AUA no tenga detalles, este documento complementa la documentación oficial, ya que proporciona los campos mínimos obligatorios de la AUA necesarios para propagar un
metadata.event_type
de la AUA determinado.Por ejemplo, abre el documento y busca el tipo de evento
GROUP_CREATION
.Deberías ver los siguientes campos mínimos de la AUA, presentados como un objeto de la AUA:
{ "metadata": { "event_timestamp": "2023-07-03T13:01:10.957803Z", "event_type": "GROUP_CREATION" }, "principal": { "user": { "userid": "pinguino" } }, "target": { "group": { "group_display_name": "foobar_users" } } }
Crea instrucciones para fragmentos de código
El enfoque de fragmento de código te permite usar una sintaxis similar a Logstash para definir cómo extraer y transformar valores del registro sin procesar y asignarlos a campos de la AUA en el registro de la AUA.
Antes de crear una extensión de analizador con el enfoque de fragmento de código, debes haber trabajado en estas secciones:
- Cómo crear extensiones de analizador
- Comenzar
- Selecciona el enfoque de extensión y elige la opción Escribir fragmento de código.
Los siguientes pasos para definir la extensión del analizador son los siguientes:
- Para obtener sugerencias y conocer las prácticas recomendadas, consulta Sugerencias y prácticas recomendadas para escribir instrucciones de fragmentos de código.
- Cómo crear una instrucción de fragmento de código
- Envía una instrucción de fragmento de código
Sugerencias y prácticas recomendadas para escribir instrucciones de fragmentos de código
Las instrucciones de fragmentos de código pueden fallar debido a problemas, como patrones de Grok incorrectos, operaciones de cambio de nombre o reemplazo fallidas, o errores de sintaxis. Consulta lo siguiente para obtener sugerencias y prácticas recomendadas:
- Prácticas comunes en el código del analizador
- Cómo analizar texto no estructurado con una función Grok
Crea una instrucción de fragmento de código
Las instrucciones de los fragmentos de código usan la misma sintaxis y secciones que el analizador predeterminado (o personalizado):
- Sección 1: Extrae datos del registro sin procesar.
- Sección 2: Transforma los datos extraídos.
- Sección 3: Asigna uno o más valores a un campo de la AUA.
- Sección 4: Vincula los campos de eventos de la AUA a la clave
@output
.
Para crear una extensión de analizador con el enfoque de fragmento de código, haz lo siguiente:
- En la página Extensiones de analizadores, en el panel Fragmento de CBN, ingresa un fragmento de código para crear la extensión del analizador.
- Haz clic en Validar para validar las instrucciones de asignación.
Ejemplos de instrucciones de fragmentos de código
En el siguiente ejemplo, se ilustra un fragmento de código.
Este es un ejemplo del registro sin procesar:
{
"insertId": "00000000",
"jsonPayload": {
...section omitted for brevity...
"packets_sent": "4",
...section omitted for brevity...
},
"timestamp": "2022-05-03T01:45:00.150614953Z"
}
Este es un ejemplo de un fragmento de código que asigna el valor en jsonPayload.packets_sent
al campo UDM network.sent_bytes
:
mutate {
replace => {
"jsonPayload.packets_sent" => ""
}
}
filter {
# Section 1. extract data from the raw JSON log
json {
source => "message"
array_function => "split_columns"
on_error => "_not_json"
}
if [_not_json] {
drop {
tag => "TAG_UNSUPPORTED"
}
} else {
# Section 2. transform the extracted data
if [jsonPayload][packets_sent] not in ["",0] {
mutate {
convert => {
"jsonPayload.packets_sent" => "uinteger"
}
}
# Section 3. assign the value to a UDM field
mutate {
copy => {
"udm.network.sent_bytes" => "jsonPayload.packets_sent"
}
on_error => "_exception"
}
if ![_exception] {
# Section 4. Bind the UDM fields to the @output key
mutate {
merge => {
"@output" => "event"
}
}
}
}
}
}
Envía una instrucción de fragmento de código
Haz clic en Enviar para guardar las instrucciones de asignación.
Google SecOps valida las instrucciones de asignación.
- Si el proceso de validación se realiza correctamente, el estado cambia a Activo y las instrucciones de asignación comienzan a procesar los datos de registro entrantes.
- Si el proceso de validación falla, el estado cambia a Falló y se muestra un error en el campo Registro sin procesar.
Administra las extensiones de analizador existentes
Puedes ver, editar, borrar y controlar el acceso a las extensiones de analizador existentes.
Cómo ver una extensión del analizador existente
- En la barra de navegación, selecciona Configuración de SIEM > Análisis.
- En la lista Analizadores, busca el analizador (tipo de registro) que deseas ver.
Los analizadores con una extensión de analizador se indican con el texto
EXTENSION
junto a su nombre. Ve a esa fila y, luego, haz clic en
Menú > Ver extensión.Aparece la pestaña View Custom/Prebuilt Parser > Extension, que muestra detalles sobre la extensión del analizador. El panel de resumen muestra la extensión del analizador
LIVE
de forma predeterminada.
Cómo editar una extensión del analizador
Abre View Custom/Prebuilt Parser > Extension tab, como se describe en Cómo ver una extensión de analizador existente.
Haz clic en el botón Edit Extension.
Aparecerá la página Extensiones del analizador.
Edita la extensión del analizador.
Para cancelar la edición y descartar los cambios, haz clic en Descartar borrador.
Para borrar la extensión del analizador en cualquier momento, haz clic en Borrar extensión fallida.
Cuando termines de editar la extensión del analizador, haz clic en Enviar.
Se ejecuta el proceso de validación para validar la configuración nueva.
Cómo borrar una extensión del analizador
Abre View Custom/Prebuilt Parser > Extension tab, como se describe en Cómo ver una extensión de analizador existente.
Haz clic en el botón Borrar extensión.
Controla el acceso a las extensiones del analizador
De forma predeterminada, los usuarios con el rol de administrador pueden acceder a las extensiones del analizador. Puedes controlar quién puede ver y administrar las extensiones del analizador. Para obtener más información sobre cómo administrar usuarios y grupos, o asignar roles, consulta Control de acceso basado en roles.
Los nuevos roles de Google SecOps se resumen en la siguiente tabla.
Función | Acción | Descripción |
---|---|---|
Analizador | Borrar | Borra las extensiones del analizador. |
Analizador | Editar | Crea y edita extensiones de analizador. |
Analizador | Ver | Ver extensiones del analizador |
Cómo quitar las asignaciones de campos de la AUA con extensiones del analizador
Puedes usar extensiones de analizador para quitar una asignación de campo de UDM existente.
- Haz clic en Configuración de SIEM > Análisis.
- Usa uno de los siguientes métodos para ver la página Extensiones de analizador:
- Para una extensión existente, haz clic en > View Extension. Menú > Extend Parser
- Para extensiones de analizador nuevas, haz clic en > Create Extension. Menú > Extend Parser
Selecciona Write code snippet como el método de extensión para agregar un fragmento de código personalizado que quite valores de campos de la AUA específicos.
Para una extensión existente, en el panel Parser extension, haz clic en Edit y, luego, agrega el fragmento de código.
Consulta Fragmento de código: Quita las asignaciones existentes para ver fragmentos de ejemplo.
Sigue los pasos que se indican en la instrucción para enviar un fragmento de código para enviar la extensión.
¿Necesitas más ayuda? Obtén respuestas de miembros de la comunidad y profesionales de Google SecOps.