Integrar Pub/Sub con Google SecOps

En este documento se explica cómo integrar Pub/Sub con Google Security Operations (Google SecOps).

Versión de la integración: 1.0

Antes de empezar

Para usar la integración de Pub/Sub, necesitas lo siguiente:

Parámetros de integración

La integración de Pub/Sub requiere los siguientes parámetros:

Parámetros Descripción
Workload Identity Email Optional

La dirección de correo del cliente de tu federación de identidades de cargas de trabajo.

Puede configurar este parámetro o el parámetro Service Account JSON File Content.

Para suplantar cuentas de servicio con la federación de identidades de cargas de trabajo, asigna el rol Service Account Token Creator a tu cuenta de servicio. Para obtener más información sobre las identidades de carga de trabajo y cómo trabajar con ellas, consulta Identidades de cargas de trabajo.

Service Account JSON File Content Optional

El contenido del archivo JSON de la clave de la cuenta de servicio.

Puede configurar este parámetro o el parámetro Workload Identity Email.

Para configurar este parámetro, proporciona el contenido completo del archivo JSON de la clave de la cuenta de servicio que descargaste al crear una cuenta de servicio.

Para obtener más información sobre el uso de cuentas de servicio como método de autenticación, consulta el artículo Resumen de las cuentas de servicio.

Quota Project ID Optional

El ID del proyecto que usas para las APIs y la facturación. Google Cloud Google Cloud Para usar este parámetro, debe conceder el rol Service Usage Consumer a su cuenta de servicio. Para obtener más información sobre los roles de gestión de identidades y accesos, consulta el artículo sobre el control de acceso con gestión de identidades y accesos.

La integración adjunta este valor de parámetro a todas las solicitudes de la API.

Si no asignas ningún valor a este parámetro, la integración recuperará el ID del proyecto de cuota de tu Google Cloud cuenta de servicio.

Project ID Optional

El ID del proyecto que se va a usar en la integración.

Si no asignas ningún valor a este parámetro, la integración recuperará el ID del proyecto de tu Google Cloud cuenta de servicio.

Verify SSL Obligatorio

Si se selecciona esta opción, la integración verifica que el certificado SSL para conectarse a Pub/Sub sea válido.

Esta opción está seleccionada de forma predeterminada.

Para obtener instrucciones sobre cómo configurar una integración en Google SecOps, consulta el artículo 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 las acciones pendientes de Mi mesa de trabajo y Realizar una acción manual.

Ping

Usa la acción Ping para probar la conectividad con Pub/Sub.

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
Mensajes de salida

La acción Ping puede devolver los siguientes mensajes de salida:

Mensaje resultante Descripción del mensaje
Successfully connected to the Pub/Sub server with the provided connection parameters! La acción se ha realizado correctamente.
Failed to connect to the Pub/Sub server! Error is ERROR_REASON

No se ha podido realizar la acción.

Comprueba la conexión al servidor, los parámetros de entrada o las credenciales.

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

Conectores

Para obtener instrucciones detalladas sobre cómo configurar un conector en Google SecOps, consulta el artículo Ingerir datos (conectores).

Pub/Sub – Messages Connector

En la plataforma Google SecOps, el conector Pub/Sub – Messages se llama conector PubSub – Messages.

Usa el conector Mensajes de Pub/Sub para recuperar mensajes de Pub/Sub.

Asignación de gravedad de JSON

Para asignar la gravedad de la alerta, debe especificar qué campo utiliza el conector Mensajes de Pub/Sub para obtener el valor de la gravedad en el parámetro Severity Mapping JSON. La respuesta del conector puede contener tipos de valores, como integer, float y string.

El conector de mensajes de Pub/Sub lee los valores integer y float y los asigna según la configuración de Google SecOps. En la siguiente tabla se muestra la asignación de los valores de integer a la gravedad en Google SecOps:

Valor entero Gravedad asignada
100 Critical
De 80 a 100 High
De 60 a 80 Medium
De 40 a 60 Low
Menos de 40 Informational

Si la respuesta contiene el valor string, el conector Pub/Sub - Mensajes requiere una configuración adicional.

Inicialmente, el valor predeterminado aparece de la siguiente manera:

{
    "Default": 60
}

Si los valores necesarios para la asignación se encuentran en la clave JSON event_severity, pueden ser los siguientes:

  • "Malicious"
  • "Benign"
  • "Unknown"

Para analizar los valores de clave JSON de event_severity y asegurarte de que el objeto JSON tenga el formato correcto, configura el parámetro Severity Mapping JSON de la siguiente manera:

{
    "event_severity": {
        "Malicious": 100,
        "Unknown": 60,
        "Benign": -1
    },
    "Default": 50
}

El valor "Default" es obligatorio.

Si hay varias coincidencias para el mismo objeto JSON, el conector Mensajes de Pub/Sub prioriza la primera clave del objeto JSON.

Para trabajar con campos que contengan valores integer o float, configure la clave y una cadena vacía en el parámetro Severity Mapping JSON:

{
  "Default":"60",
  "integer_field": "",
  "float_field": ""
}

Entradas de conectores

El conector de mensajes de Pub/Sub 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 valor predeterminado es Product Name.

Event Field Name Obligatorio

Nombre del campo que se usa para determinar el nombre del evento (subtipo).

El valor predeterminado es event_type.

Environment Field Name Optional

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

Si no se encuentra el campo de entorno, se asigna el entorno predeterminado.

El valor predeterminado es "".

Environment Regex Pattern Optional

Un patrón de expresión regular que se aplica al 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.

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 300 seconds.

Service Account JSON File Content Optional

El contenido del archivo JSON de la clave de la cuenta de servicio.

Puede configurar este parámetro o el parámetro Workload Identity Email.

Para configurar este parámetro, proporciona el contenido completo del archivo JSON de la clave de la cuenta de servicio que descargaste al crear una cuenta de servicio.

En el conector Pub/Sub – Mensajes, la autenticación con el archivo JSON de la clave de la cuenta de servicio tiene prioridad sobre la federación de identidades de carga de trabajo.

Workload Identity Email Optional

La dirección de correo del cliente de tu cuenta de servicio.

Puede configurar este parámetro o el parámetro Service Account JSON File Content.

Para suplantar la identidad de cuentas de servicio con la federación de identidades de cargas de trabajo, asigna el rol Service Account Token Creator a tu cuenta de servicio.

Project ID Optional

El ID del proyecto que se usará en el conector.

Quota Project ID Optional

El ID del proyecto que usas para las APIs y la facturación. Google Cloud Google Cloud Para usar este parámetro, debe conceder el rol Service Usage Consumer a su cuenta de servicio. Para obtener más información sobre los roles de gestión de identidades y accesos, consulta el artículo sobre el control de acceso con gestión de identidades y accesos.

La integración adjunta este valor de parámetro a todas las solicitudes de la API.

Subscription ID Obligatorio

ID de la suscripción de Pub/Sub.

Case Name Template Optional

Nombre de caso personalizado.

Cuando configuras este parámetro, el conector añade una nueva clave llamada custom_case_name al evento de Google SecOps.

Puedes proporcionar marcadores de posición con el siguiente formato: [name of the field].

Ejemplo: Phishing - [event_mailbox]

En el caso de los marcadores de posición, el conector usa el primer evento de Google SecOps. El conector solo gestiona las claves que contienen el valor de cadena. Para configurar este parámetro, especifique los campos de evento sin prefijos.

Alert Name Template Obligatorio

Nombre de la alerta personalizada.

Puedes proporcionar marcadores de posición con el siguiente formato: [name of the field].

Ejemplo: Phishing - [event_mailbox]

En el caso de los marcadores de posición, el conector usa el primer evento de Google SecOps. El conector solo gestiona las claves que contienen el valor de cadena. Si no proporcionas ningún valor o usas una plantilla no válida, el conector usará un valor alternativo con el siguiente formato: CONNECTOR_NAME - Alert. Para configurar este parámetro, especifique los campos de evento sin prefijos.

Rule Generator Template Obligatorio

Un generador de reglas personalizadas.

Puedes proporcionar marcadores de posición con el siguiente formato: [name of the field].

Ejemplo: Phishing - [event_mailbox]

En el caso de los marcadores de posición, el conector usa el primer evento de Google SecOps. El conector solo gestiona las claves que contienen el valor de cadena. Si no proporcionas ningún valor o usas una plantilla no válida, el conector usará un valor alternativo con el siguiente formato: CONNECTOR_NAME - Rule Generator. Para configurar este parámetro, especifique los campos de evento sin prefijos.

Timestamp Field Obligatorio

Nombre del campo para definir la marca de tiempo de la alerta de Google SecOps.

Si la marca de tiempo no usa el formato de hora de inicio del registro de tiempo de Unix, defina el formato de marca de tiempo en el parámetro Timestamp Format.

El valor predeterminado es message_publishTime.

Timestamp Format Optional

El formato de la marca de tiempo del mensaje.

El conector requiere la marca de tiempo para procesar el mensaje correctamente. Si la marca de tiempo no usa el formato de hora de inicio del registro de tiempo de Unix y no configuras un formato de marca de tiempo, el conector fallará.

El valor predeterminado es %Y-%m-%dT%H:%M:%S.%fZ.

Severity Mapping JSON Obligatorio

El objeto JSON que define cómo extrae el conector el nivel de gravedad del mensaje.

El valor predeterminado es el siguiente:

    {
      "Default": "60"
    }
    

Para obtener más información sobre la asignación de gravedad, consulta Asignación de gravedad de JSON.

Unique ID Field Optional

Nombre del campo para confirmar que el mensaje es único.

Si no define ningún valor, el conector genera un hash SHA-256 y lo usa como identificador del mensaje.

Max Messages To Fetch Optional

El número máximo de mensajes que se procesarán en cada iteración del conector.

El número máximo es 100.

Disable Overflow Optional

Si se selecciona esta opción, el conector ignora el mecanismo de desbordamiento de Google SecOps durante la creación de alertas.

Esta opción está seleccionada de forma predeterminada.

Verify SSL Obligatorio

Si se selecciona esta opción, la integración verifica que el certificado SSL para conectarse a Pub/Sub sea válido.

Seleccionada de forma predeterminada.

Proxy Server Address Optional

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

Proxy Username Optional

Nombre de usuario del proxy para autenticarse.

Proxy Password Optional

La contraseña del proxy para autenticarte.

Reglas de conectores

El conector Mensajes de Pub/Sub admite proxies.

Eventos del conector

En el siguiente ejemplo se muestra la salida JSON de un evento de Google SecOps que genera el conector Mensajes de Pub/Sub:

{
   "notificationConfigName": "organizations/ORGANIZATION_ID/notificationConfigs/soar_connector_toxic_notifications_config",
   "finding": {
       "name": "organizations/ORGANIZATION_ID/sources/SOURCE_ID/findings/FINDING_ID",
       "parent": "organizations/ORGANIZATION_ID/sources/SOURCE_ID",
       "resourceName": "//compute.googleapis.com/projects/PROJECT_ID/global/firewalls/FIREWALL_ID",
       "state": "ACTIVE",
       "category": "OPEN_NETBIOS_PORT",
       "externalUri": "https://console.cloud.google.com/networking/firewalls/details/default-allow-rdp?project\u003dPROJECT_ID",
       "sourceProperties": {
           "Recommendation": "Restrict the firewall rules at: https://console.cloud.google.com/networking/firewalls/details/default-allow-rdp?project\u003dPROJECT_ID",
           "ExceptionInstructions": "Add the security mark \"allow_open_netbios_port\" to the asset with a value of \"true\" to prevent this finding from being activated again.",
           "Explanation": "Firewall rules that allow connections from all IP addresses on TCP ports 137-139 or UDP ports 137-139 may expose NetBIOS services to attackers.",
           "ScannerName": "FIREWALL_SCANNER",
           "ResourcePath": [
               "projects/PROJECT_ID/",
               "folders/FOLDER_ID/",
               "folders/FOLDER_ID/",
               "organizations/ORGANIZATION_ID/"
           ],
           "ExposedService": "NetBIOS",
           "OpenPorts": {
               "TCP": [
                   137.0,
                   138.0,
                   139.0
               ],
               "UDP": [
                   137.0,
                   138.0,
                   139.0
               ]
           },
           "compliance_standards": {
               "iso": [
                   {
                       "ids": [
                           "A.13.1.1"
                       ]
                   }
               ],
               "pci": [
                   {
                       "ids": [
                           "1.2.1"
                       ]
                   }
               ],
               "nist": [
                   {
                       "ids": [
                           "SC-7"
                       ]
                   }
               ]
           },
           "ReactivationCount": 4.0
       },
       "securityMarks": {
           "name": "organizations/ORGANIZATION_ID/sources/SOURCE_ID/findings/FINDING_ID/securityMarks",
           "marks": {
               "peter": "e2e1"
           }
       },
       "eventTime": "2024-08-30T14:44:37.973090Z",
       "createTime": "2024-06-24T07:08:54.777Z",
       "propertyDataTypes": {
           "ResourcePath": {
               "listValues": {
                   "propertyDataTypes": [
                       {
                           "primitiveDataType": "STRING"
                       }
                   ]
               }
           },
           "ReactivationCount": {
               "primitiveDataType": "NUMBER"
           },
           "Explanation": {
               "primitiveDataType": "STRING"
           },
           "ExposedService": {
               "primitiveDataType": "STRING"
           },
           "ScannerName": {
               "primitiveDataType": "STRING"
           }
       }
   }
}

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