ElasticsearchV7

Versión de integración: 17.0

Configura ElasticsearchV7 para que funcione con Google Security Operations

Cómo crear un token de API

Para crear un token de API nuevo, realiza la siguiente solicitud:

curl --location --request POST 'http://<server address>:<port>/_security/api_key' \
--header 'Authorization: Basic Base64(username, password)' \
--header 'Content-Type: application/json' \
--data-raw '{
    "name": "siemplify-integration",
    "role_descriptors": {}
}':

Ejemplo de la respuesta:

{
  "id": "G1NIWnI",
  "name": "siemplify-integration",
  "api_key": "dSwyjWJ_Ql"
}
  1. Tomamos los parámetros "id" y "api_key" de la respuesta.
  2. Usa la codificación base64 de "id" y "api_key" unidas por dos puntos, como "id:api_key".
  3. El resultado se usa como token de API en la integración.

Cómo acceder a Elasticsearch

De forma predeterminada, Google SecOps accede a Elasticsearch a través de la API de RESTful en el puerto TCP 9200. El servidor de SecOps de Google necesitará acceso a los nodos de Elasticsearch pertinentes en el puerto TCP 9200 (predeterminado) o en un puerto alternativo si no se usó el puerto predeterminado durante la implementación de Elasticsearch.

Configura la integración de ElasticsearchV7 en Google SecOps

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

Configura la integración de Elasticsearch con un certificado de CA

Si es necesario, puedes verificar tu conexión con un archivo de certificado de CA.

Antes de comenzar, asegúrate de tener lo siguiente:

  • El archivo del certificado de la CA
  • La versión más reciente de la integración de Elasticsearch

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

  1. Analiza tu archivo de certificado de CA en una cadena Base64.
  2. Abre la página de parámetros de configuración de la integración.
  3. Inserta la cadena en el campo Archivo de certificado de CA.
  4. Para probar que la integración se configuró correctamente, selecciona la casilla de verificación Verificar SSL y haz clic en Probar.

Parámetros de integración

Usa los siguientes parámetros para configurar la integración:

Nombre visible del parámetro Tipo Valor predeterminado Es obligatorio Descripción
Nombre de la instancia String N/A No Nombre de la instancia para la que deseas configurar la integración.
Descripción String N/A No Es la descripción de la instancia.
Dirección del servidor String x.x.x.x Dirección IP del servidor de Elasticsearch 7.0.0.
Nombre de usuario String N/A Es la dirección de correo electrónico del usuario que se debe usar para conectarse a Elasticsearch 7.0.0.
Contraseña Contraseña N/A Contraseña del usuario correspondiente.
Token de API Contraseña N/A No Es el token de la API de XPack de Elasticsearch.
Autenticar Casilla de verificación Desmarcado No N/A
Verificar SSL Casilla de verificación Desmarcado No Usa esta casilla de verificación si tu conexión de Elasticsearch 7.0.0 requiere una verificación SSL (no está marcada de forma predeterminada).
Archivo del certificado de CA String N/A No Archivo de certificado de CA.
Ejecutar de forma remota Casilla de verificación Desmarcado No Marca la casilla para ejecutar la integración configurada de forma remota. Una vez que se marca, aparece la opción para seleccionar al usuario remoto (agente).

Acciones

Descripción

Es una prueba de Elasticsearch prediseñada que devuelve un diccionario de palabras.

Parámetros

Parámetros Tipo Valor predeterminado Descripción
Índice String *

Es el patrón de búsqueda de un índice de Elasticsearch.

En Elastic, el índice es como un DatabaseName, y los datos se almacenan en varios índices.Este parámetro define en qué índices se realizará la búsqueda. Puede ser un nombre exacto, p. ej., "smp_playbooks-2019.06.13", o puedes usar un comodín para buscar por patrón, p. ej., "smp_playbooks-2019.06 " o "smp".

Para obtener más información sobre los índices de Elasticsearch, visita https://www.elastic.co/blog/what-is-an-elasticsearch-index.

Consulta String *

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

IE1: "*" (este es un comodín que devolverá todos los registros)

IE2: "level:error"

IE3: "level:information"

IE4: "level:error OR level:warning"

Para obtener más información sobre la sintaxis de Lucene, visita https://www.elastic.co/guide/en/kibana/current/lucene-query.html#lucene-query\r\nhttps://www.elastic.co/guide/en/elasticsearch/reference/7.1/query-dsl-query-string-query.html#query-string-syntax

Límite String 100

Limita el recuento de documentos devueltos, p. ej., 10.

0 = Sin límite.

Campo de visualización String *

Limita los campos que se muestran. El valor predeterminado "*" significa que se devuelven todos los campos.

Puedes indicar un solo campo, p. ej., "nivel".

Campo de búsqueda String _all

Campo de búsqueda para consultas de texto libre (cuando la consulta no especifica un nombre de campo).

El valor predeterminado es "_all", lo que significa que se buscan todos los campos. Es mejor usar la sintaxis de Lucene adecuada en los campos "_all" o la búsqueda textual en un campo específico.

Ie1: Campo de búsqueda = "_all". La consulta "level:error" devolverá todos los registros en los que el campo "level" sea igual a "error".

Ie2: Campo de búsqueda = "Mensaje", búsqueda = "Alarma de acceso". La consulta devolverá todos los registros cuyo campo "Mensaje" contenga el texto "Alarma de acceso".

Campo de marca de tiempo String @timestamp Es el nombre del campo con el que se ejecutará el filtrado basado en el tiempo. El valor predeterminado es @timestamp. Si los campos Fecha más antigua y Fecha más reciente están vacíos, no se aplicará ningún filtro basado en el tiempo.
Fecha más antigua String now-1d

Fecha de inicio de la búsqueda. La búsqueda solo devolverá registros iguales o posteriores a este punto en el tiempo.

La entrada puede estar en UTC exacto:

Formato: AAAA-MM-DDTHH:MM:SSZ

p. ej., 2019-06-04T10:00:00Z

La entrada también puede estar en formato relativo (con cálculos de fechas): tie: "now", "now-1d", "now-1d/d", "now-2h/h"

Para obtener más información sobre las operaciones matemáticas con fechas, visita https://www.elastic.co/guide/en/elasticsearch/reference/7.1/common-options.html#date-math

Fecha más antigua String ahora

Es la fecha de finalización de la búsqueda. La búsqueda solo devolverá registros iguales o anteriores a este punto en el tiempo.

La entrada puede estar en UTC exacto:

Formato: AAAA-MM-DDTHH:MM:SSZ

p. ej., 2019-06-04T10:00:00Z

La entrada también puede estar en formato relativo (con operaciones matemáticas de fechas):

Es decir, "now", "now-1d", "now-1d/d", "now-2h/h".

Para obtener más información sobre las operaciones matemáticas con fechas, visita https://www.elastic.co/guide/en/elasticsearch/reference/7.1/common-options.html#date-math

Ejecutar en

Esta acción se ejecuta en todas las entidades.

Resultados de la acción

Resultado de secuencia de comandos
Nombre del resultado de la secuencia de comandos Opciones de valor Ejemplo
resultados N/A N/A

Descripción

Realiza búsquedas en todo el contenido de Elasticsearch y devuelve los resultados en formato de diccionario. Esta acción solo admite consultas sin un período. Si quieres usar un período en tu consulta, usa la acción de Búsqueda avanzada de ES.

Parámetros

Parámetros Tipo Valor predeterminado Descripción
Índice String *

Es el patrón de búsqueda de un índice de Elasticsearch.

En Elasticsearch, el índice es como un DatabaseName, y los datos se almacenan en varios índices.

Este parámetro define en qué índices se realizará la búsqueda. Puede ser un nombre exacto, p. ej., \"smp_playbooks-2019.06.13\", o puedes usar un comodín () para buscar por patrón, p. ej., \"smp_playbooks-2019.06\" o \"smp*\".

Para obtener más información sobre los índices de Elasticsearch, visita https://www.elastic.co/blog/what-is-an-elasticsearch-index.

Consulta String *

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

IE1: \"*\" (este es un comodín que devolverá todos los registros)

IE2: \"level:error\"

IE3: \"level:information\"

IE4: \"level:error OR level:warning\"

Para obtener más información sobre la sintaxis de Lucene, visita https://www.elastic.co/guide/en/kibana/current/lucene-query.html#lucene-query\r\nhttps://www.elastic.co/guide/en/elasticsearch/reference/7.1/query-dsl-query-string-query.html#query-string-syntax

Límite String 100

Limita el recuento de documentos devueltos, p. ej., 10.

0 = Sin límite

Ejecutar en

Esta acción se ejecuta en todas las entidades.

Resultados de la acción

Resultado de secuencia de comandos
Nombre del resultado de la secuencia de comandos Opciones de valor Ejemplo
resultados N/A N/A
Resultado de JSON
[
    {
        "_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"
    }
]

Ping

Descripción

La prueba verifica la conectividad con el servidor de Elasticsearch.

Parámetros

N/A

Ejecutar en

Esta acción se ejecuta en todas las entidades.

Resultados de la acción

Resultado de secuencia de comandos
Nombre del resultado de la secuencia de comandos Opciones de valor Ejemplo
is_success Verdadero/Falso is_success:False

Descripción

Action busca en todo el contenido de Elasticsearch y devuelve los resultados en formato de diccionario.

Parámetros

Parámetros Tipo Valor predeterminado Descripción
Índice String *

Es el patrón de búsqueda de un índice de Elasticsearch.

En Elasticsearch, el índice es como un DatabaseName, y los datos se almacenan en varios índices.

Este parámetro define en qué índices se realizará la búsqueda. Puede ser un nombre exacto, p. ej., \"smp_playbooks-2019.06.13\", o puedes usar un comodín () para buscar por patrón, p. ej., \"smp_playbooks-2019.06\" o \"smp*\".

Para obtener más información sobre los índices de Elasticsearch, visita https://www.elastic.co/blog/what-is-an-elasticsearch-index.

Consulta String *

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

IE1: \"*\" (este es un comodín que devolverá todos los registros)

IE2: \"level:error\"

IE3: \"level:information\"

IE4: \"level:error OR level:warning\"

Para obtener más información sobre la sintaxis de Lucene, visita https://www.elastic.co/guide/en/kibana/current/lucene-query.html#lucene-query\r\nhttps://www.elastic.co/guide/en/elasticsearch/reference/7.1/query-dsl-query-string-query.html#query-string-syntax

Límite String 100

Limita el recuento de documentos devueltos, p. ej., 10.

0 = Sin límite.

Ejecutar en

Esta acción se ejecuta en todas las entidades.

Resultados de la acción

Resultado de secuencia de comandos
Nombre del resultado de la secuencia de comandos Opciones de valor Ejemplo
resultados N/A N/A
Resultado de JSON
[{
    "_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"
  }
 ]

Conectores

Configura conectores de Elasticsearch v7 en Google SecOps

Si quieres obtener instrucciones detalladas para configurar un conector en Google SecOps, consulta Cómo configurar el conector.

Para configurar el conector seleccionado, usa los parámetros específicos del conector que se enumeran en las siguientes tablas:

Conector de Elasticsearch

Descripción

En este tema, se muestra cómo Google SecOps integra Elasticsearch con el mecanismo y la configuración para la transferencia y el procesamiento.

Reenvío de alertas de Elasticsearch a Google SecOps

Google SecOps buscará en los índices de Elasticsearch especificados con una consulta proporcionada (con la sintaxis de consulta de Lucene) y devolverá documentos de Elasticsearch que se traducirán y contextualizarán como "alertas" para los casos.

Parámetros del conector

Usa los siguientes parámetros para configurar el conector:

Nombre visible del parámetro Tipo Valor predeterminado Es obligatorio Descripción
Entorno predeterminado String N/A No Selecciona el entorno requerido. Por ejemplo, "Cliente uno".
Ejecutar cada Número entero 0:0:0:10 No Selecciona el período durante el que se ejecutará la conexión. Por ejemplo, “todos los días”.
Nombre del campo del producto String device_product Es el nombre del campo que se usa para determinar el producto del dispositivo. Ejemplo: _type.
Nombre del campo del evento String nombre Es el nombre del campo que se usa para determinar el nombre del evento (subtipo). Ejemplo: _source_match_event_id.
Tiempo de espera de la secuencia de comandos (segundos) String 60 Es el límite de tiempo de espera (en segundos) para el proceso de Python que ejecuta el script actual.
Dirección del servidor String N/A La dirección del servidor de Elasticsearch, es decir, http://{ip_address}:{port}
Nombre de usuario String N/A Nombre de usuario de Elasticsearch.
Contraseña Contraseña N/A Contraseña de Elasticsearch.
Autenticar Casilla de verificación Desmarcado No Indica si se debe realizar la autenticación en la conexión.
Token de API Contraseña N/A No Es el token de la API de XPack de Elasticsearch.
Verificar SSL Casilla de verificación Desmarcado No Indica si se debe usar SSL en la conexión.
Campo Nombre de alerta String N/A Nombre del campo en el que se encuentra el nombre de la alerta (ruta de acceso plana al campo). Ejemplo: _source_alert_info_alert
Campo de marca de tiempo String N/A Nombre del campo en el que se encuentra la marca de tiempo (ruta de campo plana). Ejemplo: source@timestamp
Campo de entorno String N/A No Nombre del campo en el que se encuentra el entorno (ruta de acceso plana al campo). Ejemplo: _source_environment
Índices String N/A No Es el patrón de índice por el que se realizará la búsqueda. Ejemplo: "*"
Consulta String N/A No Es una consulta de patrón de búsqueda (sintaxis de consulta de Lucene). Ejemplo: "*"
Límite de recuento de alertas Número entero 20 Es la cantidad máxima de alertas que se pueden extraer en un ciclo. Ejemplo: 20.
Máx. de días hacia atrás Número entero 1 Cantidad máxima de días desde los que se recuperarán las alertas. Ejemplo: 3.
Asignación de campos de gravedad String N/A No Nombre del campo en el que se almacena el valor de gravedad.
Dirección del servidor proxy String N/A No Es la dirección del servidor proxy que se usará.
Nombre de usuario del proxy String N/A No Nombre de usuario del proxy con el que se realizará la autenticación.
Contraseña de proxy Contraseña N/A No Contraseña del proxy para la autenticación.
Nombre del campo de gravedad String N/A No Si deseas asignar la gravedad según el valor de la cadena, deberás crear un archivo de asignación. Consulta el portal de documentación para obtener más detalles.
Patrón de expresión regular del entorno String .* No

Es un patrón de regex que se ejecutará en el valor que se encuentra en el campo "Nombre del campo del entorno".

El valor predeterminado es .* para capturar todos los valores y devolverlos sin cambios.

Se usa para permitir que el usuario manipule el campo del entorno a través de la lógica de regex.

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

Cómo asignar la gravedad en el conector

Para asignar la gravedad, debes especificar qué campo se debe usar para obtener el valor de gravedad en el parámetro "Nombre del campo de gravedad". En la respuesta, puedes obtener 3 tipos de valores: números enteros, números de punto flotante y cadenas. Para los números enteros y los números de punto flotante, no necesitas realizar ninguna configuración adicional. El conector leerá esos valores y los asignará según los estándares de SecOps de Google. Un breve recordatorio de cómo se asignan los valores de números enteros:

  • 100: Crítica
  • 100 > X >= 80: Alto
  • 80 > X >=60: Medio
  • 60 > X >=40: Baja
  • 40 > X Informativo

Si en la respuesta trabajamos con cadenas, se requiere una configuración adicional. En la carpeta donde se encuentran las secuencias de comandos del conector, tendrás un archivo de configuración llamado severity_map_config.json. Este archivo define las reglas de asignación para la gravedad.

Inicialmente, el archivo se verá de la siguiente manera:

{
    "Default": 50
}

Imagina una situación en la que los valores necesarios se encuentran en event.severity. event.severity puede contener los siguientes valores: "Malicious", "Benign", "Unknown".

Primero, debemos especificar en el parámetro "Severity Field Name" que usaremos event.severity.

En segundo lugar, debemos actualizar el archivo de configuración.

Después de los cambios, el archivo severity_map_config.json debería verse así:

{
    "event.severity": {
        "Malicious": 100,
        "Unknown": 60,
        "Benign": -1
    },
    "Default": 50
}

Ahora, cuando el conector reciba un evento con event.severity = "Malicious", le asignará gravedad crítica.

Reglas del conector

Lista blanca/lista negra

El conector no admite listas blancas ni negras.

Compatibilidad con proxy

El conector admite proxy.

Conector de DSL de Elasticsearch

Descripción

El conector funciona realizando una llamada a la API de REST con una consulta de DSL.

Casos de uso y ejemplos

Capacidad de usar consultas de DSL como parámetro de búsqueda en Elasticsearch

Parámetros del conector

Usa los siguientes parámetros para configurar el conector:

Nombre visible del parámetro Tipo Valor predeterminado Es obligatorio Descripción
Entorno predeterminado String N/A No Selecciona el entorno requerido. Por ejemplo, "Cliente uno".
Ejecutar cada Número entero 0:0:0:10 No Selecciona el período durante el que se ejecutará la conexión. Por ejemplo, “todos los días”.
Nombre del campo del producto String device_product Describe el nombre del campo en el que se almacena el nombre del producto.
Nombre del campo del entorno String "" No

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

Si no se encuentra el campo del entorno, el entorno es "".

Patrón de expresión regular del entorno String .* No

Es un patrón de regex que se ejecutará en el valor que se encuentra en el campo "Nombre del campo del entorno".

El valor predeterminado es .* para capturar todos los valores y devolverlos sin cambios.

Se usa para permitir que el usuario manipule el campo del entorno a través de la lógica de regex.

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

Tiempo de espera de la secuencia de comandos (segundos) Número entero 60 Es el límite de tiempo de espera para el proceso de Python que ejecuta la secuencia de comandos actual.
Dirección del servidor String N/A Dirección IP del servidor de la API de Elasticsearch.
Puerto String N/A Puerto del servidor de la API de Elasticsearch.
Consulta String N/A

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

Se necesita un formato JSON válido.

Para que el conector sea más estable, se recomienda agregar una clave de marca de tiempo de ordenamiento en orden ascendente.

Índice String N/A

Índice que se usa para una búsqueda.

Por ejemplo: _all

Campo de marca de tiempo String N/A

Nombre del campo en el que se encuentra la marca de tiempo.
Ejemplo:

source@timestamp

Nombre del campo de alerta String N/A

Nombre del campo en el que se encuentra el nombre de la alerta.
Ejemplo:

_source_info_alertname

Campo Description String N/A No

Nombre del campo en el que se encuentra la descripción.
Ejemplo:

_source_alert_info_description

Gravedad String Medio

Es la gravedad de las alertas.
Valor posible:

Información

Baja

Medio

Alta

Crítico

Límite de recuento de alertas Número entero 100 No Limita la cantidad de alertas que devuelve el conector por cada iteración.
Autenticar Casilla de verificación Desmarcado No Indica si se debe autenticar en una conexión o no.
Nombre de usuario String N/A No Nombre de usuario de la cuenta de Elasticsearch.
Contraseña Contraseña N/A No Contraseña de la cuenta de Elasticsearch.
Usa SSL Casilla de verificación Desmarcado No Opción para habilitar la conexión SSL/TLS.
Nombre del campo de gravedad String N/A No Si deseas asignar la gravedad según el valor de la cadena, deberás crear un archivo de asignación. Consulta el portal de documentación para obtener más detalles.
Gravedad de la alerta String N/A No

Es la gravedad de las alertas.

Valores posibles: Info, Low, Medium, High, Critical.

Nota: Este parámetro tiene prioridad sobre "Nombre del campo de gravedad". Si deseas trabajar con "Severity Field Name", este campo debe quedar vacío.

Dirección del servidor proxy String N/A No Es la dirección del servidor proxy que se usará.
Nombre de usuario del proxy String N/A No Nombre de usuario del proxy con el que se realizará la autenticación.
Contraseña de proxy Contraseña N/A No Contraseña del proxy para la autenticación.

Notaciones admitidas

El conector admite tres notaciones. Por ejemplo, si deseas usar event.type en el parámetro "Nombre del campo del evento". En ese caso, puedes proporcionar _source_event_type, event_type o event.type. Todos estos valores se comportarán de la misma manera.

Para los parámetros:

  • Nombre del campo del producto
  • Nombre del campo del evento
  • Nombre del campo de gravedad
  • Campo de entorno
  • Campo de marca de tiempo
  • Campo Nombre de alerta
  • Campo de descripción de la alerta: Este campo solo se aplica a los conectores DSL.

Cómo asignar la gravedad en el conector

Para asignar la gravedad, debes especificar qué campo se debe usar para obtener el valor de gravedad en el parámetro "Nombre del campo de gravedad". En la respuesta, puedes obtener 3 tipos de valores: números enteros, números de punto flotante y cadenas. Para los números enteros y los números de punto flotante, no necesitas realizar ninguna configuración adicional. El conector leerá esos valores y los asignará según los estándares de SecOps de Google. Un breve recordatorio de cómo se asignan los valores de números enteros:

  • 100: Crítica
  • 100 > X >= 80: Alto
  • 80 > X >=60: Medio
  • 60 > X >=40: Baja
  • 40 > X Informativo

Si en la respuesta trabajamos con cadenas, se requiere una configuración adicional. En la carpeta donde se encuentran las secuencias de comandos del conector, tendrás un archivo de configuración llamado severity_map_config.json. Este archivo define las reglas de asignación para la gravedad.

Inicialmente, el archivo se verá de la siguiente manera:

{
    "Default": 50
}

Imagina una situación en la que los valores necesarios se encuentran en event.severity. event.severity puede contener los siguientes valores: "Malicious", "Benign", "Unknown".

Primero, debemos especificar en el parámetro "Severity Field Name" que usaremos event.severity.

En segundo lugar, debemos actualizar el archivo de configuración.

Después de los cambios, el archivo severity_map_config.json debería verse así:

{
    "event.severity": {
        "Malicious": 100,
        "Unknown": 60,
        "Benign": -1
    },
    "Default": 50
}

Ahora, cuando el conector reciba un evento con event.severity = "Malicious", le asignará gravedad crítica.

Reglas del conector

Lista blanca/lista negra

El conector no admite listas blancas ni negras.

Compatibilidad con proxy

El conector admite proxy.

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