Integra OpenSearch con Google SecOps

Versión de la integración: 1.0

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

Casos de uso

La integración de OpenSearch aborda los siguientes casos de uso de investigación y organización de la seguridad:

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

  • Ingesta de alertas centralizada: Ingesta documentos de OpenSearch como alertas prácticas en Google SecOps, lo que garantiza que los eventos de seguridad de tu lago de datos se prioricen y se investiguen.

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

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

Antes de comenzar

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

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

  • Versión de integración más reciente: Asegúrate de usar la versión más reciente de la integración de OpenSearch.

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

Para configurar la integración con un certificado de CA, completa los siguientes pasos:

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

Parámetros de integración

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

Parámetro Descripción
Server Address

Obligatorio.

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

Username

Es opcional.

Nombre de usuario que se usa para la autenticación con la instancia de OpenSearch.

Password

Es opcional.

Es la contraseña asociada con el nombre de usuario especificado.

API Token

Es opcional.

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

Authenticate

Es opcional.

Si se selecciona esta opción, la integración autentica la conexión al servidor de OpenSearch con las credenciales proporcionadas.

Verify SSL

Es opcional.

Si se selecciona esta opción, la integración valida el certificado SSL cuando se conecta al servidor de OpenSearch.

CA Certificate File

Es opcional.

Es el contenido del archivo de certificado de la autoridad certificadora (CA) en formato PEM, que se usa para verificar el certificado SSL del servidor.

Si quieres obtener instrucciones para configurar una integración en Google SecOps, consulta Configura integraciones.

Si es necesario, puedes hacer cambios más adelante. Después de configurar una instancia de integración, puedes usarla en las guías. Para obtener más información sobre cómo configurar y admitir varias instancias, consulta Compatibilidad con varias instancias.

Acciones

Para obtener más información sobre las acciones, consulta Cómo responder a las acciones pendientes de Tu escritorio y Cómo realizar una acción manual.

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

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

Entradas de acción

La acción Advanced ES Search requiere los siguientes parámetros:

Parámetro Descripción
Index

Es opcional.

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

El valor predeterminado es *.

Query

Es opcional.

Es la búsqueda que se realizará con la sintaxis de Lucene (por ejemplo, level:error OR level:warning).

El valor predeterminado es *.

Limit

Es opcional.

Es la cantidad máxima de documentos que se devolverán. Establece este valor en 0 para que no haya límite.

El valor predeterminado es 100.

Display Field

Es opcional.

Es una lista separada por comas de los campos específicos que se deben devolver.

El valor predeterminado es * y devuelve todos los campos.

Search Field

Es opcional.

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

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

Timestamp Field

Es opcional.

Es el nombre del campo que se usa para el filtrado basado en el tiempo.

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

El valor predeterminado es @timestamp.

Oldest Date

Es opcional.

Es la fecha de inicio de la búsqueda. La acción devuelve registros que ocurrieron en esta marca de tiempo o después de ella.

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

El valor predeterminado es now-1d.

Earliest Date

Es opcional.

Es la fecha de finalización de la búsqueda. La acción devuelve registros que ocurrieron en esta marca de tiempo o antes de ella.

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

El valor predeterminado es now.

Resultados de la acción

La acción Advanced ES Search proporciona los siguientes resultados:

Tipo de salida de la acción Disponibilidad
Adjunto del muro de casos No disponible
Vínculo al muro de casos No disponible
Tabla del muro de casos No disponible
Tabla de enriquecimiento No disponible
Resultado de JSON No disponible
Mensajes de salida Disponible
Resultado de secuencia de comandos Disponible
Resultado de secuencia de comandos

En la siguiente tabla, se muestra el valor del resultado del script cuando se usa la acción Advanced ES Search:

Nombre del resultado de la secuencia de comandos Valor
results RESULTS

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

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

Entradas de acción

La acción DSL Search requiere los siguientes parámetros:

Parámetro Descripción
Index

Es opcional.

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

El valor predeterminado es *.

Query

Es opcional.

Es la búsqueda que se realizará con la sintaxis de Lucene (por ejemplo, level:error OR level:warning).

El valor predeterminado es *.

Limit

Es opcional.

Es la cantidad máxima de documentos que se devolverán. Establece este valor en 0 para que no haya límite.

El valor predeterminado es 100.

Resultados de la acción

La acción DSL Search proporciona los siguientes resultados:

Tipo de salida de la acción Disponibilidad
Adjunto del muro de casos No disponible
Vínculo al muro de casos No disponible
Tabla del muro de casos No disponible
Tabla de enriquecimiento No disponible
Resultado de JSON Disponible
Mensajes de salida Disponible
Resultado de secuencia de comandos Disponible
Resultado de JSON

En el siguiente ejemplo, se muestra el resultado JSON que se recibe cuando se usa 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 secuencia de comandos

En la siguiente tabla, se indica el valor del resultado de la secuencia de comandos cuando se usa la acción DSL Search:

Nombre del resultado de la secuencia de comandos Valor
results RESULTS

Ping

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

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

Entradas de acción

Ninguno

Resultados de la acción

La acción Ping proporciona los siguientes resultados:

Tipo de salida de la acción Disponibilidad
Adjunto del muro de casos No disponible
Vínculo al muro de casos No disponible
Tabla del muro de casos No disponible
Tabla de enriquecimiento No disponible
Resultado de JSON No disponible
Mensajes de salida Disponible
Resultado de secuencia de comandos Disponible
Resultado de secuencia de comandos

En la siguiente tabla, se indica el valor del resultado de la secuencia de comandos cuando se usa la acción Ping:

Nombre del resultado de la secuencia de comandos Valor
is_success true o false

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

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

Entradas de acción

La acción Simple ES Search requiere los siguientes parámetros:

Parámetro Descripción
Index

Es opcional.

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

El valor predeterminado es *.

Query

Es opcional.

Es la búsqueda que se realizará con la sintaxis de Lucene (por ejemplo, level:error OR level:warning).

El valor predeterminado es *.

Limit

Es opcional.

Es la cantidad máxima de documentos que se devolverán. Establece este valor en 0 para que no haya límite.

El valor predeterminado es 100.

Resultados de la acción

La acción Simple ES Search proporciona los siguientes resultados:

Tipo de salida de la acción Disponibilidad
Adjunto del muro de casos No disponible
Vínculo al muro de casos No disponible
Tabla del muro de casos No disponible
Tabla de enriquecimiento No disponible
Resultado de JSON Disponible
Mensajes de salida Disponible
Resultado de secuencia de comandos Disponible
Resultado de JSON

En el siguiente ejemplo, se muestra el resultado JSON que se recibe cuando se usa la acción Simple ES Search:

[{
    "_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 secuencia de comandos

En la siguiente tabla, se indica el valor del resultado del script cuando se usa la acción Simple ES Search:

Nombre del resultado de la secuencia de comandos Valor
results RESULTS

Conectores

Para obtener más información sobre cómo configurar conectores en Google SecOps, consulta Ingiere tus datos (conectores).

Conector de OpenSearch

Usa el conector de OpenSearch para buscar índices de OpenSearch especificados con una consulta de Lucene proporcionada y, luego, ingiere documentos como alertas en Google SecOps.

Entradas del conector

El conector de OpenSearch requiere los siguientes parámetros:

Parámetro Descripción
Product Field Name

Obligatorio.

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

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

El valor predeterminado es Product Name.

Event Field Name

Obligatorio.

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

El valor predeterminado es name.

Script Timeout (Seconds)

Obligatorio.

Es el límite de tiempo de espera, en segundos, para el proceso de Python que ejecuta la secuencia de comandos actual.

El valor predeterminado es 180.

Server Address

Obligatorio.

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

Username

Es opcional.

Nombre de usuario que se usa para la autenticación con la instancia de OpenSearch.

Password

Es opcional.

Es la contraseña asociada con el nombre de usuario especificado.

Authenticate

Es opcional.

Si se selecciona esta opción, la integración autentica la conexión al servidor de OpenSearch con las credenciales proporcionadas.

API Token

Es opcional.

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

Verify SSL

Es opcional.

Si se selecciona esta opción, la integración valida el certificado SSL cuando se conecta al servidor de 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

Es opcional.

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

Si falta el campo environment, el conector usa el valor predeterminado.

El valor predeterminado es "".

Indexes

Es opcional.

Es el patrón de índice que se buscará. Usa * para buscar en todos los índices.

Query

Es opcional.

Es la búsqueda que se realizará con la sintaxis de Lucene.

Alerts Count Limit

Obligatorio.

Es la cantidad máxima de alertas que se pueden extraer en un solo ciclo.

El valor predeterminado es 20.

Max Days Backwards

Obligatorio.

Cantidad de días anteriores al momento actual para recuperar alertas.

Este parámetro se puede aplicar a la iteración inicial del conector después de que lo habilites por primera vez o al valor de resguardo para la marca de tiempo de un conector vencido.

El valor predeterminado es 1.

Severity Field Name

Es opcional.

Es el 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 de punto flotante), 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, debes definir las reglas de asignación en el archivo severity_map_config.json.

Proxy Server Address

Es opcional.

Es la dirección del servidor proxy que se usará.

Proxy Username

Es opcional.

Nombre de usuario que se usa para la autenticación con el servidor proxy.

Proxy Password

Es opcional.

Es la contraseña que se usa para autenticarse con el servidor proxy.

Environment Regex Pattern

Es opcional.

Es un patrón de expresión regular que se ejecutará en el valor que se encuentra en el campo Environment Field Name. Este parámetro te permite manipular el campo del entorno con la lógica de expresiones regulares.

Usa el valor predeterminado .* para recuperar el valor Environment Field Name sin procesar requerido.

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 de DSL de OpenSearch

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

Entradas del conector

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

Parámetro Descripción
Product Field Name

Obligatorio.

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

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

El valor predeterminado es Product Name.

El valor predeterminado es device_product.

Event Field Name

Obligatorio.

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

El valor predeterminado es name.

Script Timeout (Seconds)

Obligatorio.

Es el límite de tiempo de espera, en segundos, para el proceso de Python que ejecuta la secuencia de comandos actual.

El valor predeterminado es 60.

Server Address

Obligatorio.

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

Port

Obligatorio.

Es el puerto que se usa para conectarse al servidor de la API de OpenSearch.

Query

Obligatorio.

Es la consulta de DSL que se usa para la búsqueda en formato JSON.

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

Index

Obligatorio.

Es el índice que se usó 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

Es opcional.

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

Severity

Obligatorio.

Es el nivel de gravedad estático que se asignará a todas las alertas que se hayan transferido. Este parámetro se usa si Alert Severity y Severity Field Name están vacíos.

El valor predeterminado es Medium.

Alert Severity

Es opcional.

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

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

Severity Field Name

Es opcional.

Es el 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 de punto flotante), 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, debes definir las reglas de asignación en el archivo severity_map_config.json.

Alerts Count Limit

Es opcional.

Es la cantidad máxima de alertas que se pueden extraer en un solo ciclo.

El valor predeterminado es 100.

Authenticate

Es opcional.

Si se selecciona, el conector autentica la conexión con las credenciales proporcionadas.

Username

Es opcional.

Nombre de usuario que se usa para la autenticación con la instancia de OpenSearch.

Password

Es opcional.

Es la contraseña que se usa para la autenticación con la instancia de OpenSearch.

Use SSL

Es opcional.

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

Proxy Server Address

Es opcional.

Es la dirección del servidor proxy que se usará para la conexión.

Proxy Username

Es opcional.

Nombre de usuario que se usa para la autenticación con el servidor proxy.

Proxy Password

Es opcional.

Es la contraseña que se usa para autenticarse con el servidor proxy.

Environment Field Name

Es opcional.

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

Si falta el campo environment, el conector usa el valor predeterminado.

El valor predeterminado es "".

Environment Regex Pattern

Es opcional.

Es un patrón de expresión regular que se ejecutará en el valor que se encuentra en el campo Environment Field Name. Este parámetro te permite manipular el campo del entorno con la lógica de expresiones regulares.

Usa el valor predeterminado .* para recuperar el valor Environment Field Name sin procesar requerido.

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 la notación

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 conector DSL)

Cómo asignar la gravedad en el conector

Si el Severity Field Name contiene valores numéricos (números enteros o de punto flotante), el conector los asigna de la siguiente manera:

  • Crítico: 100
  • Alto: 80 ≤ x < 100
  • Medio: 60 ≤ x < 80
  • Baja: 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", haz lo siguiente:

  1. Ingresa event.severity en el parámetro Nombre del campo de gravedad.
  2. Actualiza severity_map_config.json con este comando:
{
    "event.severity": {
        "Malicious": 100,
        "Unknown": 60,
        "Benign": -1
    },
    "Default": 50
}

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