Integrar OpenSearch con Google SecOps

Versión de la integración: 1.0

En este documento se explica cómo integrar OpenSearch con Google Security Operations.

Casos prácticos

La integración de OpenSearch aborda los siguientes casos prácticos de orquestación e investigación de seguridad:

  • Búsqueda automatizada de amenazas: busca periódicamente en todos los índices de OpenSearch indicadores de compromiso (IoCs) o patrones sospechosos específicos mediante consultas de Lucene y DSL.

  • Ingestión de alertas centralizada: ingiere documentos de OpenSearch como alertas procesables en Google SecOps para asegurarte de que los eventos de seguridad de tu lago de datos se prioricen y se investiguen.

  • Recuperación de datos contextuales: enriquece los casos de seguridad actuales extrayendo automáticamente registros o datos históricos relacionados de OpenSearch para proporcionar a los analistas un contexto más profundo durante una investigación.

  • Asignación de datos flexible: asigna dinámicamente niveles de gravedad y etiquetas de entorno de documentos de OpenSearch a los estándares de Google SecOps para mantener la coherencia en diferentes fuentes de registros.

Antes de empezar

Antes de configurar la integración en la plataforma Google SecOps, comprueba que tienes lo siguiente:

  • Archivo de certificado de CA: un archivo de autoridad de certificación válido para proteger la conexión.

  • Versión de integración más reciente: asegúrate de que estás usando la versión más reciente de la integración de OpenSearch.

  • Certificado codificado en Base64: el contenido del archivo de certificado de tu AC debe convertirse en una cadena Base64 antes de la configuración.

Para configurar la integración con un certificado de CA, sigue estos pasos:

  1. Abre la página de parámetros de configuración de la integración.
  2. Pega la cadena codificada con Base64 en el campo Archivo de certificado de CA.
  3. Selecciona la casilla Verificar SSL.
  4. Haz clic en Probar para verificar que la integración se ha configurado correctamente.

Parámetros de integración

La integración de OpenSearch requiere los siguientes parámetros:

Parámetro Descripción
Server Address

Obligatorio.

La URL del endpoint de la instancia de OpenSearch, incluido el protocolo y el puerto (por ejemplo, https://10.0.0.1:9200).

Username

Opcional.

Nombre de usuario utilizado para autenticar la instancia de OpenSearch.

Password

Opcional.

La contraseña asociada al nombre de usuario especificado.

API Token

Opcional.

El token de API que se usa para la autenticación como alternativa a un nombre de usuario y una contraseña.

Authenticate

Opcional.

Si se selecciona esta opción, la integración autenticará la conexión con el servidor de OpenSearch mediante las credenciales proporcionadas.

Verify SSL

Opcional.

Si se selecciona, la integración valida el certificado SSL al conectarse al servidor OpenSearch.

CA Certificate File

Opcional.

El contenido del archivo de certificado de la autoridad de certificación (CA) en formato PEM, que se usa para verificar el certificado SSL del servidor.

Para obtener instrucciones sobre cómo configurar una integración en Google SecOps, consulta Configurar integraciones.

Si es necesario, puedes hacer cambios más adelante. Después de configurar una instancia de integración, puedes usarla en los cuadernos de estrategias. Para obtener más información sobre cómo configurar y admitir varias instancias, consulta Admitir varias instancias.

Acciones

Para obtener más información sobre las acciones, consulta Responder a acciones pendientes desde Tu espacio de trabajo y Realizar una acción manual.

Usa la acción Búsqueda avanzada de ES para ejecutar una consulta de búsqueda preconfigurada en el servidor de OpenSearch y obtener los resultados en formato de diccionario.

Esta acción no se ejecuta en entidades de Google SecOps.

Entradas de acciones

La acción Búsqueda avanzada de ES requiere los siguientes parámetros:

Parámetro Descripción
Index

Opcional.

El patrón de búsqueda del índice de OpenSearch (por ejemplo, smp_playbooks-2019.06.13). Puedes usar comodines para buscar en varios índices (por ejemplo, smp_playbooks-*).

El valor predeterminado es *.

Query

Opcional.

La consulta de búsqueda que se va a realizar con la sintaxis de Lucene (por ejemplo, level:error OR level:warning).

El valor predeterminado es *.

Limit

Opcional.

Número máximo de documentos que se devolverán. Asigne el valor 0 para que no haya límite.

El valor predeterminado es 100.

Display Field

Opcional.

Lista separada por comas de campos específicos que se devolverán.

El valor predeterminado es * y devuelve todos los campos.

Search Field

Opcional.

El campo específico en el que se buscará cuando Query no incluya un nombre de campo de destino. Actúa como destino de búsqueda predeterminado para las consultas de texto libre.

El valor predeterminado es _all, que busca en todos los campos indexados.

Timestamp Field

Opcional.

Nombre del campo que se usa para el filtro basado en la hora.

Si Earliest Date y Oldest Date están vacíos, la acción no realiza ningún filtrado basado en el tiempo.

El valor predeterminado es @timestamp.

Oldest Date

Opcional.

Fecha de inicio de la búsqueda. La acción devuelve los registros que se produjeron en esta marca de tiempo o después.

Puedes proporcionar una marca de tiempo UTC exacta (YYYY-MM-DDTHH:MM:SSZ) o una fecha relativa (por ejemplo, now-1d).

El valor predeterminado es now-1d.

Earliest Date

Opcional.

Fecha de finalización de la búsqueda. La acción devuelve registros que se produjeron en esta marca de tiempo o antes.

Puedes proporcionar una marca de tiempo UTC exacta (YYYY-MM-DDTHH:MM:SSZ) o una fecha relativa (por ejemplo, now).

El valor predeterminado es now.

Resultados de la acción

La acción Búsqueda avanzada de ES proporciona los siguientes resultados:

Tipo de salida de la acción Disponibilidad
Adjunto del panel de casos No disponible
Enlace del panel de casos No disponible
Tabla del panel de casos No disponible
Tabla de enriquecimiento No disponible
Resultado de JSON No disponible
Mensajes de salida Disponible
Resultado de la secuencia de comandos Disponible
Resultado de la secuencia de comandos

En la siguiente tabla se muestra el valor de la salida del resultado de la secuencia de comandos cuando se usa la acción Búsqueda avanzada de ES:

Nombre del resultado del script Valor
results RESULTS

Usa la acción Búsqueda DSL para realizar una búsqueda exhaustiva en todos los índices de OpenSearch y obtener los resultados en formato de diccionario.

Esta acción no se ejecuta en entidades de Google SecOps.

Entradas de acciones

La acción Búsqueda de DSL requiere los siguientes parámetros:

Parámetro Descripción
Index

Opcional.

El patrón de búsqueda del índice de OpenSearch (por ejemplo, smp_playbooks-2019.06.13). Puedes usar comodines para buscar en varios índices (por ejemplo, smp_playbooks-*).

El valor predeterminado es *.

Query

Opcional.

La consulta de búsqueda que se va a realizar con la sintaxis de Lucene (por ejemplo, level:error OR level:warning).

El valor predeterminado es *.

Limit

Opcional.

Número máximo de documentos que se devolverán. Asigne el valor 0 para que no haya límite.

El valor predeterminado es 100.

Resultados de la acción

La acción Búsqueda de DSL proporciona los siguientes resultados:

Tipo de salida de la acción Disponibilidad
Adjunto del panel de casos No disponible
Enlace del panel de casos No disponible
Tabla del panel de casos No disponible
Tabla de enriquecimiento No disponible
Resultado de JSON Disponible
Mensajes de salida Disponible
Resultado de la secuencia de comandos Disponible
Resultado de JSON

En el siguiente ejemplo se muestra la salida del resultado JSON recibida al usar la acción Búsqueda con DSL:

[
    {
        "_score": 0.2876821,
        "_type": "person",
        "_id": "2",
        "_source": {
            "lastname": "Smith",
            "name": "John",
            "job_description": "Systems administrator"
        },
        "_index": "accounts"
    }, {
        "_score": 0.28582606,
        "_type": "person",
        "_id": "1",
        "_source":
        {
            "lastname": "Doe",
            "name": "John",
            "job_description": "Systems administrator and Linux specialist"
        },
        "_index": "accounts"
    }
]
Resultado de la secuencia de comandos

En la siguiente tabla se muestra el valor de la salida del resultado de la secuencia de comandos al usar la acción Búsqueda de DSL:

Nombre del resultado del script Valor
results RESULTS

Ping

Usa la acción Ping para probar la conectividad con OpenSearch.

Esta acción no se ejecuta en entidades de Google SecOps.

Entradas de acciones

Ninguno

Resultados de la acción

La acción Ping proporciona las siguientes salidas:

Tipo de salida de la acción Disponibilidad
Adjunto del panel de casos No disponible
Enlace del panel de casos No disponible
Tabla del panel de casos No disponible
Tabla de enriquecimiento No disponible
Resultado de JSON No disponible
Mensajes de salida Disponible
Resultado de la secuencia de comandos Disponible
Resultado de la secuencia de comandos

En la siguiente tabla se muestra el valor de la salida del resultado de la secuencia de comandos al usar la acción Ping:

Nombre del resultado del script Valor
is_success true o false

Usa la acción Búsqueda simple en ES para realizar una búsqueda básica en todos los campos indexados de OpenSearch y obtener los resultados en formato de diccionario.

Esta acción no se ejecuta en entidades de Google SecOps.

Entradas de acciones

La acción Búsqueda simple en ES requiere los siguientes parámetros:

Parámetro Descripción
Index

Opcional.

El patrón de búsqueda del índice de OpenSearch (por ejemplo, smp_playbooks-2019.06.13). Puedes usar comodines para buscar en varios índices (por ejemplo, smp_playbooks-*).

El valor predeterminado es *.

Query

Opcional.

La consulta de búsqueda que se va a realizar con la sintaxis de Lucene (por ejemplo, level:error OR level:warning).

El valor predeterminado es *.

Limit

Opcional.

Número máximo de documentos que se devolverán. Asigne el valor 0 para que no haya límite.

El valor predeterminado es 100.

Resultados de la acción

La acción Búsqueda simple en ES proporciona los siguientes resultados:

Tipo de salida de la acción Disponibilidad
Adjunto del panel de casos No disponible
Enlace del panel de casos No disponible
Tabla del panel de casos No disponible
Tabla de enriquecimiento No disponible
Resultado de JSON Disponible
Mensajes de salida Disponible
Resultado de la secuencia de comandos Disponible
Resultado de JSON

En el siguiente ejemplo se muestra la salida de resultados JSON recibida al usar la acción Búsqueda simple en ES:

[{
    "_score": 0.2876821,
    "_type": "person",
    "_id": "2",
    "_source":
        {
          "lastname": "Smith",
          "name": "John",
          "job_description": "Systems administrator"
         },
     "_index": "accounts"
 },
 {
     "_score": 0.28582606,
     "_type": "person",
     "_id": "1",
     "_source":
       {
         "lastname": "Doe",
         "name": "John",
         "job_description": "Systems administrator and Linux specialist"
       },
    "_index": "accounts"
  }
 ]
Resultado de la secuencia de comandos

En la siguiente tabla se muestra el valor de la salida del resultado de la secuencia de comandos al usar la acción Búsqueda simple en ES:

Nombre del resultado del script Valor
results RESULTS

Conectores

Para obtener más información sobre cómo configurar conectores en Google SecOps, consulta el artículo Ingerir datos (conectores).

Conector OpenSearch

Usa el conector OpenSearch para buscar en los índices de OpenSearch especificados con una consulta de Lucene proporcionada e ingerir documentos como alertas en Google SecOps.

Entradas de conectores

El conector OpenSearch requiere los siguientes parámetros:

Parámetro Descripción
Product Field Name

Obligatorio.

Nombre del campo en el que se almacena el nombre del producto.

El nombre del producto influye principalmente en la asignación. Para optimizar y mejorar el proceso de asignación del conector, el valor predeterminado se resuelve en un valor de reserva al que se hace referencia desde el código. Cualquier entrada no válida de este parámetro se resuelve en un valor de reserva de forma predeterminada.

El valor predeterminado es Product Name.

Event Field Name

Obligatorio.

Nombre del campo que determina el nombre del evento (subtipo).

El valor predeterminado es name.

Script Timeout (Seconds)

Obligatorio.

El límite de tiempo de espera, en segundos, del proceso de Python que ejecuta la secuencia de comandos actual.

El valor predeterminado es 180.

Server Address

Obligatorio.

La URL del endpoint de la instancia de OpenSearch, incluido el protocolo y el puerto (por ejemplo, https://10.0.0.1:9200).

Username

Opcional.

Nombre de usuario utilizado para autenticar la instancia de OpenSearch.

Password

Opcional.

La contraseña asociada al nombre de usuario especificado.

Authenticate

Opcional.

Si se selecciona esta opción, la integración autenticará la conexión con el servidor de OpenSearch mediante las credenciales proporcionadas.

API Token

Opcional.

El token de API que se usa para la autenticación como alternativa a un nombre de usuario y una contraseña.

Verify SSL

Opcional.

Si se selecciona, la integración valida el certificado SSL al conectarse al servidor OpenSearch.

Alert Name Field

Obligatorio.

Nombre del campo que contiene el nombre de la alerta (por ejemplo, _source_alert_info_alert).

Timestamp Field

Obligatorio.

Nombre del campo que contiene la marca de tiempo (por ejemplo, _source_@timestamp).

Environment Field Name

Opcional.

Nombre del campo en el que se almacena el nombre del entorno.

Si falta el campo de entorno, el conector usa el valor predeterminado.

El valor predeterminado es "".

Indexes

Opcional.

El patrón de índice que se va a buscar. Usa * para buscar en todos los índices.

Query

Opcional.

La consulta de búsqueda que se va a realizar con la sintaxis de Lucene.

Alerts Count Limit

Obligatorio.

Número máximo de alertas que se pueden obtener en un solo ciclo.

El valor predeterminado es 20.

Max Days Backwards

Obligatorio.

Número de días anteriores a la fecha actual para obtener alertas.

Este parámetro se puede aplicar a la iteración inicial del conector después de habilitarlo por primera vez o al valor de reserva de una marca de tiempo de conector caducada.

El valor predeterminado es 1.

Severity Field Name

Opcional.

Nombre del campo que se usa para extraer el valor de gravedad de la alerta.

Si el campo contiene valores numéricos (números enteros o decimales), el conector los asigna automáticamente a los niveles de gravedad de Google SecOps (por ejemplo, 100 es Critical). Si el campo contiene valores de cadena, debe definir las reglas de asignación en el archivo severity_map_config.json.

Proxy Server Address

Opcional.

Dirección del servidor proxy que se va a usar.

Proxy Username

Opcional.

Nombre de usuario utilizado para autenticarse en el servidor proxy.

Proxy Password

Opcional.

Contraseña utilizada para autenticarse en el servidor proxy.

Environment Regex Pattern

Opcional.

Patrón de expresión regular que se va a ejecutar en el valor encontrado en el campo Environment Field Name. Este parámetro te permite manipular el campo de entorno mediante la lógica de expresiones regulares.

Usa el valor predeterminado .* para obtener el valor sin formato Environment Field Name necesario.

Si el patrón de expresión regular es nulo o está vacío, o si el valor del entorno es nulo, el resultado final del entorno es el entorno predeterminado.

Conector DSL de OpenSearch

Usa el conector DSL de OpenSearch para ingerir documentos como alertas en Google SecOps haciendo llamadas a la API REST con consultas de lenguaje específico de dominio (DSL).

Entradas de conectores

El conector DSL de OpenSearch requiere los siguientes parámetros:

Parámetro Descripción
Product Field Name

Obligatorio.

Nombre del campo en el que se almacena el nombre del producto.

El nombre del producto influye principalmente en la asignación. Para optimizar y mejorar el proceso de asignación del conector, el valor predeterminado se resuelve en un valor de reserva al que se hace referencia desde el código. Cualquier entrada no válida de este parámetro se resuelve en un valor de reserva de forma predeterminada.

El valor predeterminado es Product Name.

El valor predeterminado es device_product.

Event Field Name

Obligatorio.

Nombre del campo que determina el nombre del evento (subtipo).

El valor predeterminado es name.

Script Timeout (Seconds)

Obligatorio.

El límite de tiempo de espera, en segundos, del proceso de Python que ejecuta la secuencia de comandos actual.

El valor predeterminado es 60.

Server Address

Obligatorio.

La URL del endpoint de la instancia de OpenSearch, incluido el protocolo (por ejemplo, https://10.0.0.1).

Port

Obligatorio.

Puerto utilizado para conectarse al servidor de la API OpenSearch.

Query

Obligatorio.

La consulta DSL utilizada para la búsqueda en formato JSON.

Para mejorar la estabilidad del conector, se recomienda incluir una clave de marca de tiempo de ordenación en orden ascendente en la consulta.

Index

Obligatorio.

El índice usado para la búsqueda. Usa _all para buscar en todos los índices.

Timestamp Field

Obligatorio.

Nombre del campo que contiene la marca de tiempo (por ejemplo, _source_@timestamp).

Alert Field Name

Obligatorio.

Nombre del campo que contiene el nombre de la alerta (por ejemplo, _source_info_alertname).

Description Field

Opcional.

Nombre del campo que contiene la descripción de la alerta (por ejemplo, _source_alert_info_description).

Severity

Obligatorio.

Nivel de gravedad estático que se asignará a todas las alertas insertadas. Este parámetro se usa si Alert Severity y Severity Field Name están vacíos.

El valor predeterminado es Medium.

Alert Severity

Opcional.

La gravedad que se asignará a las alertas. Este parámetro tiene prioridad sobre Severity Field Name.

Si quieres usar la asignación dinámica con el Severity Field Name, deja este campo vacío.

Severity Field Name

Opcional.

Nombre del campo que se usa para extraer el valor de gravedad de la alerta.

Si el campo contiene valores numéricos (enteros o flotantes), el conector los asigna automáticamente a los niveles de gravedad de Google SecOps (por ejemplo, 100 es Critical). Si el campo contiene valores de cadena, debe definir las reglas de asignación en el archivo severity_map_config.json.

Alerts Count Limit

Opcional.

Número máximo de alertas que se pueden obtener en un solo ciclo.

El valor predeterminado es 100.

Authenticate

Opcional.

Si se selecciona esta opción, el conector autentica la conexión mediante las credenciales proporcionadas.

Username

Opcional.

Nombre de usuario utilizado para autenticar la instancia de OpenSearch.

Password

Opcional.

Contraseña usada para autenticarse en la instancia de OpenSearch.

Use SSL

Opcional.

Si se selecciona esta opción, el conector habilita una conexión SSL/TLS al servidor.

Proxy Server Address

Opcional.

La dirección del servidor proxy que se va a usar para la conexión.

Proxy Username

Opcional.

Nombre de usuario utilizado para autenticarse en el servidor proxy.

Proxy Password

Opcional.

Contraseña utilizada para autenticarse en el servidor proxy.

Environment Field Name

Opcional.

Nombre del campo en el que se almacena el nombre del entorno.

Si falta el campo de entorno, el conector usa el valor predeterminado.

El valor predeterminado es "".

Environment Regex Pattern

Opcional.

Patrón de expresión regular que se va a ejecutar en el valor encontrado en el campo Environment Field Name. Este parámetro te permite manipular el campo de entorno mediante la lógica de expresiones regulares.

Usa el valor predeterminado .* para obtener el valor sin formato Environment Field Name necesario.

Si el patrón de expresión regular es nulo o está vacío, o si el valor del entorno es nulo, el resultado final del entorno es el entorno predeterminado.

El valor predeterminado es .*.

Compatibilidad con notaciones

El conector admite tres notaciones diferentes para la asignación de campos. Por ejemplo, para asignar event.type, puedes proporcionar _source_event_type, event_type o event.type.

Esto se aplica a los siguientes parámetros:

  • Product Field Name
  • Event Field Name
  • Severity Field Name
  • Environment Field Name
  • Timestamp Field
  • Alert Field Name
  • Description Field (solo con el conector DSL)

Cómo asignar la gravedad en el conector

Si Severity Field Name contiene valores numéricos (enteros o flotantes), el conector los asigna de la siguiente manera:

  • Crítico: 100
  • Alto: 80 ≤ x < 100
  • Medio: 60 ≤ x < 80
  • Bajo: 40 ≤ x < 60
  • Informativo: x < 40

En el caso de los valores de cadena, debes actualizar el archivo severity_map_config.json en la carpeta de secuencias de comandos del conector.

Configuración de ejemplo

Para asignar un campo event.severity que contenga "Malicious", "Unknown" o "Benign", sigue estos pasos:

  1. Introduce event.severity en el parámetro Nombre del campo de gravedad.
  2. Actualización de severity_map_config.json:
{
    "event.severity": {
        "Malicious": 100,
        "Unknown": 60,
        "Benign": -1
    },
    "Default": 50
}

¿Necesitas más ayuda? Recibe respuestas de los miembros de la comunidad y de los profesionales de Google SecOps.