Extensiones de analizadores

Compatible con:

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:

Crea extensiones del analizador

Las extensiones de analizador proporcionan una forma flexible de ampliar las capacidades de los analizadores predeterminados (y personalizados) existentes. No reemplazan a los analizadores predeterminados (y personalizados), sino que permiten una personalización perfecta de la canalización del analizador, lo que habilita una nueva lógica de análisis y la extracción, manipulación y asignación de campos.

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 del UDM estructurados en los registros del 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 se convierten en parte del proceso de extracción y normalización de datos de Google SecOps.

Flujo de trabajo de transferencia y normalización

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 (Asigna campos de datos) o el enfoque de fragmento de código:

  • Enfoque sin código

    El enfoque sin código es mejor 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 admitidos. 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 de la 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 de UDM event.metadata.description 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 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 enfoque 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 Cómo garantizar 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 los datos de registro sin procesar de forma retroactiva.

Conceptos del analizador

En los siguientes documentos, se explican conceptos importantes 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:

  1. 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.

  2. Identifica los campos que se deben extraer de los registros sin procesar:

    Identifica los campos que deseas extraer de los registros sin procesar.

  3. Selecciona los campos de UDM adecuados:

    Selecciona los campos de la AUA correspondientes para asignar los campos de registro sin procesar extraídos.

  4. 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 ampliar.

Busca tu tipo de registro en estas listas:

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:

  1. En la barra de navegación, selecciona Configuración de SIEM > Análisis.
  2. Busca el tipo de registro que deseas extender en la tabla Analizador.

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:

  1. En la barra de navegación, selecciona Configuración de SIEM > Análisis.
  2. Busca el tipo de registro que deseas extender en la tabla Analizador.

    Si el analizador del tipo de registro no está activo, actívalo:

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 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 segmentación específicos que se extraerán, puedes hacer coincidir los campos de la UDM de destino correspondientes. Establece una asignación clara entre los campos de fuente 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

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:

  1. En la barra de navegación, selecciona Configuración de SIEM > Análisis.
  2. Busca el tipo de registro que deseas extender en la tabla Analizador.
  3. 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.

SecOps de Google 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:

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:

  1. Ve a Investigación > Búsqueda de SIEM.

  2. 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.
  3. 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.

  4. 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 AUA. 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 obligatorios del UDM para los tipos de eventos del UDM: Cuando asignas un campo metadata.event_type del UDM a un registro del UDM, cada event_type requiere que haya un conjunto diferente de campos relacionados en el registro del UDM. Para obtener más información, consulta Más información para asignar campos metadata.event_type de la AUA.
  • Problemas con el 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 arbitraria en la AUA

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 del 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:

  1. 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.

  2. Busca el tipo de registro que deseas extender, haz clic en Menú > Crear extensión.

    Se abrirá la página Extensiones del analizador.

Para abrir la página Extensiones del analizador desde una búsqueda de registros sin procesar, haz lo siguiente:

  1. Ve a Investigación > Búsqueda de SIEM.
  2. 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"
  3. Haz clic en Run Search. Los resultados se muestran en el panel Registros sin procesar.
  4. Haz clic en un registro (fila) en el panel Registros sin procesar. Se mostrará el panel Vista de eventos.
  5. Haz clic en la pestaña Raw Log en el panel Event View. Se mostrará el registro sin procesar.
  6. Haz clic en Administrar analizador > Crear extensión > Siguiente.

    Se abrirá la página Extensiones del analizador.

Para abrir la página Extensiones de analizador desde una búsqueda de registros sin procesar heredada, haz lo siguiente:

  1. Usa la búsqueda de registros sin procesar heredada para buscar registros similares a los que se analizarán.
  2. Selecciona un evento del panel Eventos > Línea de tiempo.
  3. Expande el panel Datos del evento.
  4. 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 Raw log:

    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étera) y la casilla de verificación Unir texto.

    1. 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.

    2. 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 del 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 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 y SYSLOG + CSV.

    Consulta los siguientes pasos, Instrucciones para crear sin código (campos de datos de mapas).

  • Enfoque Escribe un 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 la UDM en el registro de la 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 Map data fields) te permite especificar las rutas de los campos de registro sin procesar y asignarlas a los campos de la UDM de destino correspondientes.

Antes de crear una extensión de analizador con el enfoque sin código, debes haber trabajado en estas secciones:

Los siguientes pasos para definir la extensión del analizador son los siguientes:

  1. Cómo configurar el selector de campos repetidos
  2. Define una instrucción de asignación de datos para cada campo
  3. 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 existente de valores almacenados en el campo del array de la 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.

  1. 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.

    1. 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 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.

      Campos del extractor de Syslog

    2. 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.
  2. 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 datos del registro es JSON o XML, o la posición de la columna si el formato de datos es CSV.
    • Operador de condición previa: Selecciona EQUALS o NOT 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.

  3. 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 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 datos es CSV (nota: las posiciones de índice comienzan en 1).

    • Campo de destino: Ingresa el nombre de campo de la AUA completamente calificado en el que se almacenará el valor, por ejemplo, udm.metadata.collected_timestamp.seconds.

  4. 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 En vivo 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 validarse.

Más información sobre el selector de campos repetidos

Algunos campos de la AUA 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:

  • Agrega valores:

    La extensión del analizador agregará el valor extraído recientemente al array de valores existentes en el campo de la UDM.

  • Reemplaza valores:

    La extensión del analizador reemplazará el array de valores existentes en el campo 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 campo ip repetido está en el nivel más bajo de la jerarquía y principal no es un campo repetido.
  • No se admiten valores de asignación a udm.intermediary.hostname porque intermediary 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
Cómo 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"} } }
Cómo 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:
Campo de datos sin procesar: protoPayload.requestMetadata.name
Campo de destino: event.idm.read_only_udm.metadata.product_name

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.
timestamp:{} idm:{read_only_udm:{metadata:{event_timestamp:{} .... product_name: "Akamai Ltd"}principal:{ip:"1.1.1.1, 2.2.2.2, 3.3.3.3"}}}

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 la UDM después de aplicar la extensión timestamp:{} idm:{read_only_udm:{metadata:{event_timestamp:{} ....} principal:{ip:"2.2.2.2"}}}

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 estos campos en conjunto.

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.

En 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:

Campos del extractor de Syslog

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 UDM no tenga detalles, este documento complementa la documentación oficial, ya que proporciona los campos mínimos obligatorios de la UDM necesarios para propagar un metadata.event_type de la UDM 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:

Los siguientes pasos para definir la extensión del analizador son los siguientes:

  1. Para obtener sugerencias y conocer las prácticas recomendadas, consulta Sugerencias y prácticas recomendadas para escribir instrucciones de fragmentos de código.
  2. Cómo crear una instrucción de fragmento de código
  3. 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:

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:

  1. 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.
  2. 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

  1. Haz clic en Enviar para guardar las instrucciones de asignación.

  2. Google SecOps valida las instrucciones de asignación.

    • Si el proceso de validación se realiza correctamente, el estado cambia a En vivo 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

  1. En la barra de navegación, selecciona Configuración de SIEM > Análisis.
  2. 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.
  3. Ve a esa fila y, luego, haz clic en Menú > Ver extensión.

    Aparece la opción View Custom/Prebuilt Parser > Extension tab, 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

  1. Abre View Custom/Prebuilt Parser > Extension tab, como se describe en View an existing parser extension.

  2. Haz clic en el botón Editar extensión.

    Aparecerá la página Extensiones del analizador.

  3. 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

  1. Abre View Custom/Prebuilt Parser > Extension tab, como se describe en Cómo ver una extensión de analizador existente.

  2. 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

¿Necesitas más ayuda? Obtén respuestas de miembros de la comunidad y profesionales de Google SecOps.