Extensiones de analizador
En este documento se explica cómo crear extensiones de analizador para extraer campos de datos de registro sin procesar y asignarlos a campos de UDM (modelo de datos unificado) de destino en la plataforma Google Security Operations.
En el documento se describe el proceso de creación de extensiones de analizador:
- Crea extensiones de analizador.
- Requisitos previos y limitaciones.
- Identifica los campos de origen en los datos de registro sin procesar.
- Seleccione los campos de UDM de destino adecuados.
Elige el método de definición de extensión de analizador adecuado:
Definir una extensión de analizador implica diseñar la lógica de análisis para filtrar los datos de registro sin procesar, transformar los datos y asignarlos a los campos de UDM de destino. Google SecOps ofrece dos métodos para crear extensiones de analizador:
- Crea extensiones de analizador con el enfoque sin código (Asignar campos de datos).
- Crea extensiones de analizador con el fragmento de código.
Ejemplos ilustrativos de creación de extensiones de analizador para varios formatos de registro y situaciones. 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 o Syslog).
Crear extensiones de analizador
Las extensiones de analizador proporcionan una forma flexible de ampliar las funciones de los analizadores predeterminados (y personalizados) actuales. Las extensiones de analizador proporcionan una forma flexible de ampliar las funciones de los analizadores predeterminados (o personalizados) sin sustituirlos. Las extensiones te permiten personalizar la canalización del analizador añadiendo lógica de análisis nueva, extrayendo y transformando campos, y actualizando o quitando asignaciones de campos de metadatos definidos por el usuario.
Una extensión de analizador no es lo mismo que un analizador personalizado. Puede crear un analizador personalizado para un tipo de registro que no tenga 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 gestionen los analizadores predeterminados. Una vez activadas, las extensiones de analizador pasan a formar parte del proceso de extracción y normalización de datos de Google SecOps.
Definir nuevas extensiones de 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. Puede crear nuevas extensiones de analizador definiendo instrucciones de asignación mediante el método sin código (Asignar campos de datos) o el método de fragmento de código:
Estrategia sin código
El enfoque sin código es el más adecuado para las extracciones sencillas de registros sin procesar en formato JSON, XML o CSV nativo. Te permite especificar campos de origen de registros sin procesar y asignar los campos de destino de UDM correspondientes.
Por ejemplo, para extraer datos de registro JSON con hasta 10 campos, usando comparaciones de igualdad sencillas.
Método de fragmento de código
El método de fragmento de código te permite definir instrucciones para extraer y transformar valores del registro sin procesar, así como asignarlos a campos de UDM. Los fragmentos de código usan la misma sintaxis que Logstash que el analizador predeterminado (o personalizado).
Este método se aplica a todos los formatos de registro admitidos. Es la mejor opción en estos casos:
- Extracciones de datos complejas o lógica compleja.
- Datos sin estructurar 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 método de asignación de datos que se haya usado en el analizador predeterminado (o personalizado).
Combinar los valores extraídos recientemente en campos de UDM
Una vez activadas, las extensiones del analizador combinan los valores recién extraídos en los campos de UDM designados del registro de UDM correspondiente según los principios de combinación predefinidos. Por ejemplo:
Sobrescribir valores: los valores extraídos sobrescriben los valores de los campos de UDM de destino.
La única excepción son los campos repetidos, en los que puedes configurar la extensión del analizador para que añada nuevos valores al escribir datos en un campo repetido del registro UDM.
La extensión del analizador tiene prioridad: las instrucciones de asignación de datos de una extensión del analizador tienen prioridad sobre las del analizador predeterminado (o personalizado) de ese tipo de registro. Si hay un conflicto en las instrucciones de asignación, la extensión del analizador sobrescribirá el valor definido de forma predeterminada.
Por ejemplo, si el analizador predeterminado asigna un campo de registro sin procesar al campo
event.metadata.description
de UDM y la extensión del analizador asigna un campo de registro sin procesar diferente a ese mismo campo de UDM, la extensión del analizador sobrescribe el valor definido por el analizador predeterminado.
Limitaciones
- Una extensión de analizador por tipo de registro: solo puede crear una extensión de analizador por tipo de registro.
- Solo se puede usar un método para asignar datos: puedes crear una extensión de analizador con el método sin código o con el de fragmento de código, pero no con ambos a la vez.
- Registra muestras para la validación: se necesitan 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 el artículo Asegúrate de que haya un analizador activo para el tipo de registro.
- Errores del analizador base: los errores del analizador base no se pueden identificar ni corregir en las extensiones del analizador.
- Campos repetidos en fragmentos de código: ten cuidado al sustituir objetos repetidos completos en fragmentos de código para evitar la pérdida de datos por error. Para obtener más información, consulta Más información sobre el selector de campos repetidos.
- Eventos desambiguados: las extensiones del analizador no pueden gestionar registros con varios eventos únicos en un solo registro, como la matriz de Google Drive.
XML y sin código: el modo sin código no se admite en XML. Usa el método de fragmento de código.
No hay datos retroactivos: no puedes analizar datos de registro sin procesar de forma retroactiva.
Palabras clave reservadas con el método sin código: si los registros contienen alguna de las siguientes palabras clave reservadas, utiliza el método de fragmento de código en lugar del método sin código:
collectionTimestamp
createTimestamp
enableCbnForLoop
event
filename
message
namespace
output
onErrorCount
timestamp
timezone
Quitar asignaciones: solo puedes quitar las asignaciones de campos de UDM que ya tengas mediante el fragmento de código.
Eliminar asignaciones de campos de IP repetidos: no puedes eliminar asignaciones de campos de UDM de campos de IP repetidos.
Conceptos de 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 la sintaxis del analizador
Requisitos previos
Requisitos previos para crear extensiones de analizador:
- Debe haber un analizador predeterminado (o personalizado) activo para el tipo de registro.
- Google SecOps debe poder ingerir y normalizar los registros sin procesar mediante un analizador predeterminado (o personalizado).
- Asegúrate de que el analizador activo predeterminado (o personalizado) del tipo de registro de destino haya ingerido datos de registro sin procesar en los últimos 30 días. Estos datos deben contener una muestra de los campos que quieras extraer o usar para filtrar los registros del archivo de registro. Se usará para validar las nuevas instrucciones de asignación de datos.
Empezar
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 van a extraer de los registros sin procesar:
Identifica los campos que quieras extraer de los registros sin procesar.
Seleccione los campos de UDM adecuados:
Seleccione los campos de UDM correspondientes para asignar los campos de registro sin procesar extraídos.
Elige un método para definir la extensión del analizador:
Elige uno de los dos métodos de extensión (métodos de asignación de datos) para crear la extensión del analizador.
Verificar los requisitos previos
Asegúrate de que haya un analizador activo para el tipo de registro que quieras ampliar, tal 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 quieras ampliar.
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, comprueba que esté activo.
- Si no hay ningún analizador predeterminado para el tipo de registro, asegúrese de que haya un analizador personalizado para el tipo de registro.
Tipos de registros admitidos sin un analizador predeterminado.
- Si no hay ningún analizador predeterminado para el tipo de registro, asegúrese 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 asegurarse de que haya un analizador personalizado para un tipo de registro, siga estos pasos:
- En la barra de navegación, selecciona Configuración de SIEM > Analizadores.
Busca en la tabla Analizadores el tipo de registro que quieras ampliar.
- Si ese tipo de registro aún no tiene un analizador predeterminado o personalizado, haz clic en CREAR ANALIZADOR y sigue los pasos que se indican en Crear un analizador personalizado según las 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 comprobar si un analizador está activo para un tipo de registro, sigue estos pasos:
- En la barra de navegación, selecciona Configuración de SIEM > Analizadores.
Busca en la tabla Analizadores el tipo de registro que quieras ampliar.
Si el analizador del tipo de registro no está activo, actívalo:
- Para ver los analizadores predeterminados, consulta Gestionar actualizaciones de analizadores precompilados.
- Para obtener información sobre los analizadores personalizados, consulta Gestionar actualizaciones de analizadores personalizados.
Identifica los campos que quieres extraer de los registros sin procesar.
Analice el registro sin procesar del que quiera 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 los campos de registro sin procesar y los asigna a los campos de UDM correspondientes.
Para identificar los campos específicos que quieres extraer de los registros sin procesar, puedes usar las herramientas de búsqueda para identificarlos:
Para acceder a la herramienta de búsqueda, ve a Investigación > Búsqueda de SIEM. Escribe raw= antes de tu consulta de búsqueda. Para obtener más información, consulta Hacer una búsqueda en el registro sin procesar.
Para acceder a la herramienta de búsqueda antigua, haz clic en Ir a la versión antigua de la búsqueda en la parte superior de la página Búsqueda de SIEM. Para obtener más información, consulta Buscar registros sin procesar con la función de análisis de registros sin procesar.
Para obtener información sobre cómo buscar en los registros sin procesar, consulta los siguientes artículos:
Seleccionar los campos de UDM adecuados
Ahora que ha identificado los campos de destino específicos que se van a extraer, puede asociarlos a los campos de UDM de destino correspondientes. Establece una asignación clara entre los campos de origen de los registros sin procesar y sus campos de destino de UDM. Puede asignar datos a cualquier campo de UDM que admita los tipos de datos estándar o los campos repetidos.
Elegir el campo de UDM correcto
Los siguientes recursos pueden ayudarte a simplificar el proceso:
- Familiarízate con los principales conceptos de UDM
- Conocer la asignación de datos que usa el analizador actual
- 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 de UDM importantes para la asignación de datos del analizador incluye un resumen y una explicación de los campos más utilizados del esquema de 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 sobre la gestión unificada de datos para evitar errores
Familiarizarse con los principales conceptos de UDM
Objetos lógicos: Event y Entity
El esquema de UDM describe todos los atributos disponibles que almacenan datos. Cada registro de UDM describe un evento o una entidad. Los datos se almacenan en campos diferentes en función de si el registro describe un evento o una entidad.
- Un objeto UDM Event almacena datos sobre la acción que se ha producido en el entorno. El registro de eventos original describe la acción tal como la registró el dispositivo (por ejemplo, el firewall o el proxy web).
- Los objetos Entidad de UDM almacenan datos sobre los participantes o las entidades implicadas en el evento de UDM, como recursos, usuarios o recursos de su entorno.
Sustantivos de UDM: un sustantivo representa a un participante o una entidad en un evento de UDM. Por ejemplo, un sustantivo podría ser 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 descrita en el evento.
Nombre de UDM Descripción principal
La entidad responsable de iniciar la acción descrita en el evento. target
La entidad que es el destinatario o el objeto de la acción. En una conexión de cortafuegos, el equipo que recibe la conexión sería el destino. src
Entidad de origen sobre la que actúa la entidad principal. Por ejemplo, si un usuario copia un archivo de un ordenador a otro, el archivo y el ordenador de origen se representarían 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 modificar una solicitud. observer
Una entidad que monitoriza el evento y genera informes sobre él, pero que no interactúa directamente con el tráfico. Por ejemplo, los sistemas de detección de intrusiones en la red o los sistemas de gestión de información y eventos de seguridad. about
Cualquier otra entidad implicada en el evento que no encaje en las categorías anteriores. Por ejemplo, archivos adjuntos de correo electrónico o archivos DLL cargados durante el inicio de un proceso. En la práctica, los objetos Noun principales y de destino son los que se utilizan con más frecuencia. También es importante tener en cuenta que las descripciones anteriores constituyen el uso recomendado de los sustantivos. El uso real puede variar en función de la implementación de un analizador base predeterminado o personalizado.
Conocer la asignación de datos que usa el analizador actual
Te recomendamos que conozcas la asignación de datos que usa el analizador predeterminado (o personalizado) entre los campos de origen de los registros sin procesar y sus campos de destino de UDM.
Para ver la asignación de datos entre los campos de origen de los registros sin procesar y los campos de UDM de destino que se usan en el analizador predeterminado (o personalizado) actual, siga estos pasos:
- En la barra de navegación, selecciona Configuración de SIEM > Analizadores.
- Busca en la tabla Analizadores el tipo de registro que quieras ampliar.
Desplázate hasta esa fila y haz clic en el menú
> Ver.En la pestaña Código del analizador se muestra 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) que ya existe.
Usar 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 origen de los registros sin procesar.
Google SecOps ofrece 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 UDM, ve a Investigación > Búsqueda de SIEM.
Consulta estos temas para obtener información detallada sobre cómo usar la herramienta de búsqueda de UDM:
- Buscar un campo de UDM
- Introducir una búsqueda de UDM
- Definir un filtro de tiempo en la búsqueda
- Ejemplos de búsquedas de UDM
- Generar consultas de búsqueda de UDM con Gemini
Ejemplo de la herramienta de búsqueda de UDM
Por ejemplo, si tiene un campo de origen en el registro sin procesar llamado "packets", utilice la herramienta de búsqueda de UDM para encontrar posibles campos de destino de UDM con "packets" en su nombre:
Ve a Investigación > Búsqueda de SIEM.
En la página Búsqueda de SIEM, introduce "packets" en el campo Buscar campos de UDM por valor y, a continuación, haz clic en Búsqueda de UDM.
Se abrirá el cuadro de diálogo Búsqueda de UDM. La herramienta de búsqueda busca campos de UDM por nombre de campo o por valor de campo:
- Buscar por nombre de campo: busca coincidencias entre la cadena de texto que introduces y los nombres de campo que contienen ese texto.
- Búsqueda por valor de campo: busca coincidencias entre el valor que introduces y los campos que contienen ese valor en sus datos de registro almacenados.
En el cuadro de diálogo Búsqueda de UDM, selecciona Campos de UDM.
La función de búsqueda mostrará una lista de posibles campos de UDM que contengan el texto "packets" en sus nombres de campo de UDM.
Haga clic en cada fila para ver la descripción de cada campo de UDM.
Consideraciones importantes sobre la gestión de datos unificada para evitar errores
- Campos con nombres similares: la estructura jerárquica de UDM puede dar lugar a campos con nombres similares. Consulta los analizadores predeterminados para obtener ayuda. Para obtener más información, consulta Información sobre la asignación de datos que usa el analizador actual.
- Asignación de campos arbitraria: usa el objeto
additional
para los datos que no se asignan directamente a un campo de UDM. Para obtener más información, consulta Asignación de campos arbitrarios a UDM. - Campos repetidos: ten cuidado al trabajar con campos repetidos en fragmentos de código. Si sustituyes un objeto completo, es posible que se sobrescriban los datos originales. El enfoque sin código ofrece más control sobre los campos repetidos. Para obtener más información, consulte Más información sobre el selector de campos repetidos.
- Campos de UDM obligatorios para los tipos de eventos de UDM: al asignar un campo de
metadata.event_type
UDM a un registro de UDM, cadaevent_type
requiere que haya un conjunto diferente de campos relacionados en el registro de UDM. Para obtener más información, consulta Más información sobre la asignación de campos de UDMmetadata.event_type
. - 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. Puedes mejorar la extensión del analizador, modificar el analizador base o prefiltrar los registros.
Asignación de campos arbitrarios a UDM
Si no encuentra un campo de UDM estándar adecuado para almacenar sus datos, utilice el objeto additional
para almacenar los datos como un par clave-valor personalizado. De esta forma, puede almacenar información valiosa en el registro de UDM, aunque no tenga un campo de UDM correspondiente.
Elegir un método de definición de extensión de analizador
Antes de elegir un método de definición de extensión de analizador, debes haber leído estas secciones:
A continuación, debes abrir la página Extensiones del analizador y seleccionar el método de extensión que quieras usar para definir la extensión del analizador:
Abre la página Extensiones de analizador.
En la página Extensiones de analizador, puedes definir la nueva extensión de analizador.
Puedes abrir la página Extensiones del analizador de las siguientes formas: desde el menú Configuración, desde una búsqueda de registros sin formato o desde una búsqueda de registros sin formato antigua:
Abrir desde el menú Configuración
Para abrir la página Extensiones del analizador desde el menú Configuración, sigue estos pasos:
En la barra de navegación, selecciona Configuración de SIEM > Analizadores.
En la tabla Analizadores se muestra una lista de analizadores predeterminados por tipo de registro.
Busca el tipo de registro que quieras ampliar, haz clic en > Crear extensión.
MenúSe abrirá la página Extensiones del analizador.
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, sigue estos pasos:
- Ve a Investigación > Búsqueda de SIEM.
- En el campo de búsqueda, añade el prefijo
raw =
al 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.
- En el panel Registros sin procesar, haz clic en un registro (fila). Se muestra el panel Vista de eventos.
- Haga clic en la pestaña Registro sin formato del panel Vista de eventos. Se muestra el registro sin procesar.
Haz clic en Gestionar analizador > Crear extensión > Siguiente.
Se abrirá la página Extensiones del analizador.
Abrir desde la versión antigua de la búsqueda de registros sin procesar
Para abrir la página Extensiones de analizador desde una búsqueda de registros sin procesar antigua, sigue estos pasos:
- Usa la búsqueda Registro sin procesar antigua para buscar registros similares a los que se van a analizar.
- Selecciona un evento en el panel Eventos > Línea de tiempo.
- Despliegue el panel Datos de evento.
Haz clic en Gestionar analizador > Crear extensión > Siguiente.
Se abrirá la página Extensiones del analizador.
Página Extensiones de analizador
En la página se muestran los paneles Registro sin procesar y Definición de extensión:
Panel Registro sin procesar:
Se muestran datos de registro sin procesar de ejemplo del tipo de registro seleccionado. Si has abierto la página desde la búsqueda de registros sin procesar, los datos de muestra serán el resultado de tu búsqueda. Puedes dar formato al ejemplo con el menú Ver como (RAW, JSON, CSV, XML, etc.) y la casilla Ajustar texto.
Comprueba que la muestra de datos de registro sin procesar que se muestra sea representativa de los registros que procesará la extensión del analizador.
Haga clic en Vista previa del resultado de UDM para ver el resultado de UDM de los datos de registro sin procesar de muestra.
Panel Definición de extensión:
Esto te permite definir una extensión de analizador mediante uno de los dos enfoques de instrucciones de asignación: Asignar campos de datos (sin código) o Escribir fragmento de código. No puedes usar ambos enfoques en la misma extensión de analizador.
En función del método que elijas, puedes especificar los campos de datos de registro de origen que se extraerán de los registros sin procesar entrantes y asociarlos a los campos de UDM correspondientes, o bien escribir un fragmento de código para llevar a cabo estas tareas y otras.
Seleccionar la estrategia de extensión
En la página Extensiones de analizador, en el panel Definición de extensión, en el campo Método de extensión, selecciona uno de los siguientes métodos para crear la extensión de analizador:
Mapear campos de datos (sin código):
Este método te permite especificar los campos del registro sin procesar y mapearlos con los campos de UDM de destino.
Este método funciona con los siguientes formatos de registro sin procesar:
- JSON nativo, XML nativo o CSV.
- Encabezado Syslog más JSON nativo, XML nativo o CSV. Puede 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 pasos siguientes en Crear instrucciones sin código (mapear campos de datos).
Enfoque Escribir fragmento de código:
Este método te permite usar una sintaxis similar a Logstash para especificar instrucciones que extraigan y transformen valores del registro sin procesar y los asignen a campos de UDM en el registro de UDM.
Los fragmentos de código usan la misma sintaxis y las mismas secciones que los analizadores predeterminados (o personalizados). Para obtener más información, consulta la sintaxis del analizador.
Este método funciona con todos los formatos de datos admitidos para ese tipo de registro.
Consulta los pasos siguientes en Crear instrucciones de fragmentos de código.
Crear instrucciones sin código (asignar campos de datos)
El método sin código (también llamado 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 método sin código, debe haber leído estas secciones:
- Crear extensiones de analizador
- Empezar
- Seleccione el método de extensión y, a continuación, la opción Asignar campos de datos.
Los siguientes pasos para definir la extensión del analizador son:
- Definir el selector de campos repetidos
- Definir una instrucción de asignación de datos para cada campo
- Enviar y activar la extensión del analizador
Definir el selector de campos repetidos
En el panel Definición de extensión, en el campo Campos repetidos, define cómo debe guardar la extensión del analizador un valor en campos repetidos (campos que admiten una matriz de valores, como principal.ip
):
- Añadir valores: el valor recién extraído se añade al conjunto de valores que ya hay en el campo de la matriz de UDM.
- Sustituir valores: el valor recién extraído sustituye al conjunto de valores del campo de la matriz de UDM que había almacenado el analizador predeterminado.
Los ajustes del selector Campos repetidos no afectan a los campos no repetidos.
Para obtener más información, consulta Más información sobre el selector de campos repetidos.
Definir una instrucción de asignación de datos para cada campo
Defina una instrucción de asignación de datos para cada campo que quiera extraer del registro sin procesar. La instrucción debe especificar la ruta 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 Syslog, se muestran los campos Syslog y Destino. (Algunos formatos de registro no contienen un encabezado Syslog, como JSON nativo, XML nativo o CSV).
Google SecOps necesitará los campos Syslog y Target para preprocesar el encabezado de Syslog y extraer la parte estructurada del registro.
Define estos campos:
Syslog es un patrón definido por el usuario que preprocesa 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 identifique el encabezado de Syslog y el mensaje de registro sin procesar. Consulta más información en Definir los campos del extractor Syslog.
Destino: nombre de la variable del 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 introducir los valores en los campos Syslog y Target (Destino), haz clic en el botón Validate (Validar).
El proceso de validación comprueba si hay errores de sintaxis y de análisis, y devuelve uno de los siguientes resultados:
- Correcto: se muestran los campos de asignación de datos. Define el resto de la extensión del analizador.
- Fallo: aparece un mensaje de error. Corrige el error antes de continuar.
Si quiere, defina una instrucción de condición previa.
Una instrucción de condición previa identifica un subconjunto de los registros sin procesar que la extensión del analizador procesa haciendo coincidir un valor estático con un campo del registro sin procesar. Si un registro sin procesar entrante cumple 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.
Rellena los siguientes campos:
- Campo de condición previa: identificador de campo del registro sin procesar que contiene el valor que se va a comparar. Introduce la ruta completa del 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 condición previa: el valor estático que se comparará con el campo de condición previa del registro sin procesar.
Para ver otro ejemplo de instrucción de condición previa, consulta Sin código: extraer campos con valor de condición previa.
Asigna el campo de datos de registro sin procesar al campo UDM de destino:
Campo de datos sin procesar: introduce la ruta completa del 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 empiezan por 1).Campo de destino: introduce el nombre completo del campo de UDM donde se almacenará el valor, por ejemplo,
udm.metadata.collected_timestamp.seconds
.
Para seguir añadiendo más campos, haz clic en Añadir e introduce todos los detalles de la instrucción de asignación del siguiente campo.
Para ver otro ejemplo de cómo asignar los campos, consulta Sin código: extraer campos.
Enviar y activar la extensión del analizador
Una vez que hayas definido las instrucciones de asignación de datos para todos los campos que quieras 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 mapeo.
Google SecOps valida las instrucciones de asignación:
- Si el proceso de validación se completa correctamente, el estado cambia a Activo y las instrucciones de asignación empiezan a procesar los datos de registro entrantes.
Si el proceso de validación falla, el estado cambia a Error y se muestra un error en el campo Registro sin formato.
Este es un ejemplo de 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 de analizador
Las extensiones de analizador tienen los siguientes estados de ciclo de vida:
DRAFT
: extensión de analizador recién creada que aún no se ha enviado.VALIDATING
: Google SecOps está validando las instrucciones de asignación con los registros sin procesar para asegurarse de que los campos se analizan sin errores.LIVE
: La extensión del analizador ha superado la validación y ahora está en producción. Extrae y transforma datos de los registros sin procesar entrantes en registros UDM.FAILED
: no se ha podido validar la extensión del analizador.
Más información sobre el selector de campos repetidos
Algunos campos de UDM almacenan un array de valores, como el campo principal.ip. El selector Campos repetidos te permite controlar cómo almacenará tu extensión de analizador los datos recién extraídos en un campo repetido:
Añadir valores:
La extensión del analizador añadirá el valor recién extraído a la matriz de valores del campo de UDM.
Reemplazar valores:
La extensión del analizador sustituirá la matriz de valores del campo de UDM por el valor recién extraído.
Una extensión de analizador solo puede asignar datos a un campo repetido cuando este se encuentra en el nivel más bajo de la jerarquía. Por ejemplo:
- Se admite la asignación de valores a
udm.principal.ip
porque el campo repetidoip
está en el nivel más bajo de la jerarquía yprincipal
no es un campo repetido. - No se admite la asignación de valores 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 muestran ejemplos de cómo afecta la configuración del selector Campos repetidos al registro UDM generado.
Selección de campos repetidos | Registro de ejemplo | Configuración de la extensión del analizador | Resultado generado |
---|---|---|---|
Agregar valores | {"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"}
}
} |
Agregar valores | {"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 UDM 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 Syslog
Los campos del extractor de Syslog te permiten separar el encabezado de Syslog de un registro estructurado definiendo la expresión regular Grok, además de un token con nombre en el patrón de expresión regular para almacenar el resultado.
Definir los campos del extractor Syslog
Los valores de los campos Syslog y Target se combinan para definir cómo separa la extensión del analizador el encabezado Syslog de la parte estructurada de un registro sin procesar. En el campo Syslog, define una expresión mediante una combinación de sintaxis Grok y de expresión regular. La expresión incluye un nombre de variable que identifica la parte estructurada del registro sin procesar. En el campo Destino, especifica el nombre de esa variable.
En el siguiente ejemplo se muestra cómo funcionan estos campos conjuntamente.
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 Syslog de la parte JSON del registro sin procesar, utilice 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}
En este ejemplo se incluye el nombre de 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 (Objetivo), introduce el nombre de la variable msg
. El valor almacenado en la variable msg
se introduce en las instrucciones de asignación de campos de datos que creas en la extensión del analizador.
Si se utiliza el registro sin formato de ejemplo, el siguiente segmento se introduce en 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 Destino completados:
En la siguiente tabla se muestran más ejemplos con registros de muestra, el patrón de extracción Syslog, el nombre de la variable Target y el resultado.
Registro sin procesar de ejemplo | Campo Syslog | Campo de destino | 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 sobre la asignación de campos de metadata.event_type
UDM
Cuando se asigna un campo metadata.event_type
de UDM a un registro de UDM, se valida para asegurarse de que los campos relacionados obligatorios estén presentes en el registro de UDM. Cada UDM metadata.event_type
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 UDM devuelve un error:
"error": {
"code": 400,
"message": "Request contains an invalid argument.",
"status": "INVALID_ARGUMENT"
}
Un analizador grok devuelve 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 UDM event_type
que quieras asignar, consulta los siguientes recursos:
Documentación de Google SecOps: Guía de uso de UDM: campos obligatorios y opcionales de UDM para cada tipo de evento
Recursos no oficiales de terceros: validación de eventos de UDM
En los casos en los que la guía de uso de UDM no incluya información detallada, este documento complementa la documentación oficial proporcionando los campos obligatorios mínimos de UDM necesarios para rellenar un UDM
metadata.event_type
determinado.Por ejemplo, abra el documento y busque el tipo de evento
GROUP_CREATION
.Debería ver los siguientes campos mínimos de UDM, presentados como un objeto de UDM:
{ "metadata": { "event_timestamp": "2023-07-03T13:01:10.957803Z", "event_type": "GROUP_CREATION" }, "principal": { "user": { "userid": "pinguino" } }, "target": { "group": { "group_display_name": "foobar_users" } } }
Crear instrucciones de fragmento de código
El método 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 UDM en el registro de UDM.
Antes de crear una extensión de analizador con el método del fragmento de código, debe haber completado estas secciones:
- Crear extensiones de analizador
- Empezar
- Selecciona el método de extensión y, a continuación, la opción Escribir fragmento de código.
Los siguientes pasos para definir la extensión del analizador son:
- Para ver consejos y prácticas recomendadas, consulte Consejos y prácticas recomendadas para escribir instrucciones de fragmentos de código.
- Crear una instrucción de fragmento de código
- Enviar una instrucción de fragmento de código
Consejos y prácticas recomendadas para escribir instrucciones de fragmentos de código
Las instrucciones de los fragmentos de código pueden fallar debido a problemas como patrones de Grok incorrectos, errores al cambiar el nombre o al reemplazar elementos, o errores de sintaxis. Consulta los siguientes consejos y prácticas recomendadas:
- Prácticas habituales en el código del analizador
- Analizar texto sin estructurar con una función de Grok
Crear 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 varios valores a un campo de datos de marketing unificados.
- Sección 4. Vincula los campos de evento de UDM a la clave
@output
.
Para crear una extensión de analizador con el método del fragmento de código, sigue estos pasos:
- En la página Extensiones de analizador, en el panel Fragmento de CBN, introduce un fragmento de código para crear la extensión de 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 muestra 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 de jsonPayload.packets_sent
al campo network.sent_bytes
de UDM:
filter {
mutate {
replace => {
"jsonPayload.packets_sent" => ""
}
}
# 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"
}
on_error => "_exception1"
}
# Section 3. assign the value to a UDM field
mutate {
Replace => {
"event.idm.read_only_udm.network.sent_bytes" => "jsonPayload.packets_sent"
}
on_error => "_exception2"
}
if ![_exception1] and![_exception2] {
# Section 4. Bind the UDM fields to the @output key
mutate {
merge => {
"@output" => "event"
}
}
}
}
}
}
Enviar 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 completa correctamente, el estado cambia a Activo y las instrucciones de asignación empiezan a procesar los datos de registro entrantes.
- Si el proceso de validación falla, el estado cambia a Error y se muestra un error en el campo Registro sin formato.
Gestionar extensiones de analizador
Puedes ver, editar, eliminar y controlar el acceso a las extensiones de analizador existentes.
Ver una extensión de analizador
- En la barra de navegación, selecciona Configuración de SIEM > Analizadores.
- En la lista Analizadores, busca el analizador (tipo de registro) que quieras ver.
Los analizadores que tienen una extensión de analizador se indican con el texto
EXTENSION
junto a su nombre. Ve a esa fila y haz clic en el
Menú > Ver extensión.Aparecerá la opción Ver analizador personalizado o precompilado > Pestaña Extensión, que muestra detalles sobre la extensión del analizador. El panel de resumen muestra la extensión del
LIVE
analizador de forma predeterminada.
Editar una extensión de analizador
Abre Ver analizador personalizado o precompilado > Pestaña Extensión, tal como se describe en Ver una extensión de analizador.
Haz clic en el botón Editar extensión.
Aparecerá la página Extensiones de analizador.
Edita la extensión del analizador.
Para cancelar la edición y descartar los cambios, haga clic en Descartar borrador.
Para eliminar la extensión del analizador en cualquier momento, haz clic en Eliminar extensión fallida.
Cuando hayas terminado de editar la extensión del analizador, haz clic en Enviar.
El proceso de validación se ejecuta para validar la nueva configuración.
Eliminar una extensión de analizador
Abre Ver analizador personalizado o precompilado > Pestaña Extensión, tal como se describe en Ver una extensión de analizador.
Haz clic en el botón Eliminar extensión.
Controlar el acceso a las extensiones de analizador
De forma predeterminada, los usuarios con el rol Administrador pueden acceder a las extensiones del analizador. Puedes controlar quién puede ver y gestionar las extensiones de analizador. Para obtener más información sobre cómo gestionar 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 |
---|---|---|
Parser | Eliminar | Eliminar extensiones del analizador. |
Parser | Editar | Crear y editar extensiones de analizador. |
Parser | Ver | Ver las extensiones del analizador. |
Eliminar asignaciones de campos de UDM con extensiones de analizador
Puede usar extensiones de analizador para quitar una asignación de campo de UDM.
- Haz clic en Configuración de SIEM > Analizadores.
- Utiliza uno de estos métodos para ver la página Extensión del analizador:
- En una extensión, haz clic en > Ver extensión. Menú > Ampliar analizador
- En el caso de las extensiones de analizador nuevas, haz clic en > Crear extensión. Menú > Extender analizador
Selecciona Escribir fragmento de código como método de extensión para añadir un fragmento de código personalizado que quite los valores de campos de UDM específicos.
En el panel Extensión del analizador, haga clic en Editar y, a continuación, añada el fragmento de código.
Consulta Fragmento de código: eliminar asignaciones existentes para ver fragmentos de ejemplo.
Sigue los pasos que se indican en Enviar una instrucción de fragmento de código para enviar la extensión.
¿Necesitas más ayuda? Recibe respuestas de los miembros de la comunidad y de los profesionales de Google SecOps.