Integra Pub/Sub en Google SecOps
En este documento, se explica cómo integrar Pub/Sub en Google Security Operations.
Casos de uso
La integración de Pub/Sub admite los siguientes casos de uso:
Transferencia automatizada de alertas: Recupera de forma continua los registros de seguridad, las alertas y la telemetría publicados en los temas de Pub/Sub para transferirlos a Google SecOps como casos.
Organización de seguridad centralizada: Consolida el enrutamiento de eventos de seguridad a través de Pub/Sub desde sistemas de nube y de terceros para activar guías de respuesta automatizadas.
Antes de comenzar
Antes de configurar la integración de Pub/Sub en Google SecOps, completa los siguientes pasos de requisitos previos:
Otorga los roles de Identity and Access Management necesarios a tu cuenta de servicio.
Elige y configura uno de los siguientes métodos de autenticación:
Opción 1: Workload Identity (recomendado): Este método usa tokens de corta duración con la identidad temporal como cuenta de servicio.
Opción 2: Clave JSON de la cuenta de servicio: Este método se basa en un archivo de clave secreta estático y de larga duración.
Crea una cuenta de servicio
En la consola de Google Cloud , ve a IAM y administración > Cuentas de servicio.
Haz clic en addCrear cuenta de servicio.
Proporciona un nombre y una descripción, y haz clic en Listo. Toma nota de la dirección de correo electrónico de la cuenta de servicio.
Asigna roles de IAM
Otorgar permisos permite que la integración vea y extraiga mensajes de tus suscripciones. Para asignar el rol estándar, completa los siguientes pasos:
En la consola de Google Cloud , ve a IAM.
Ubica tu cuenta de servicio y haz clic en Editar principal (edit).
Haz clic en Agregar otro rol y selecciona Visualizador de Pub/Sub (
roles/pubsub.viewer).Haz clic en Guardar.
Configura las credenciales de Workload Identity
Workload Identity es el enfoque recomendado, ya que usa tokens de acceso de corta duración con la identidad temporal como cuenta de servicio.
Identifica la identidad única de la instancia
Para establecer una conexión, debes otorgar permiso a tu instancia de Google SecOps para que use la identidad de tu cuenta de servicio.
En Google SecOps, ve a Centro de contenido > Integraciones de respuesta.
Selecciona la integración de Pub/Sub y, luego, ingresa el correo electrónico de tu cuenta de servicio en Correo electrónico de Workload Identity.
Haz clic en Guardar > Probar. Se espera que la prueba falle.
Haz clic en close_small junto al botón Probar y busca el correo electrónico de identidad que comienza con
gke-init-python@...osoar-python@....Copia esta dirección de correo electrónico única.
Autoriza la identidad de la instancia en Google Cloud
En la consola de Google Cloud , ve a IAM y administración > Cuentas de servicio.
Selecciona la cuenta de servicio de destino y ve a Permisos > Otorgar acceso.
Pega la dirección de correo electrónico única en Principales nuevas y asigna el rol de Creador de tokens de cuenta de servicio (
roles/iam.serviceAccountTokenCreator).
Otorga acceso al proyecto de cuota
La autenticación con una Workload Identity requiere un Quota Project ID para hacer un seguimiento
del uso de la API y la facturación.
En la consola de Google Cloud , ve a IAM para el proyecto que se usa como proyecto de cuota.
Busca tu cuenta de servicio y haz clic en Editar principal (edit).
Haz clic en Agregar otro rol y selecciona Consumidor de Service Usage (
roles/serviceusage.serviceUsageConsumer).Haz clic en Guardar.
Configura una clave JSON
Los archivos de claves secretas estáticas y de larga duración requieren una rotación manual. Usa este método solo si la autenticación de Workload Identity no está disponible.
En la consola de Google Cloud , ve a IAM y administración > Cuentas de servicio y selecciona tu cuenta de servicio.
Ve a la pestaña Claves y haz clic en Agregar clave > Crear clave nueva.
Selecciona JSON y haz clic en Crear. El navegador descargará el archivo JSON en tu computadora.
Parámetros de integración
La integración de Pub/Sub requiere los siguientes parámetros:
| Parámetro | Descripción |
|---|---|
Workload Identity Email |
Es opcional. Es la dirección de correo electrónico del cliente de tu cuenta de servicio. Solo configura este parámetro si te autenticas con una identidad de
Workload. Si se configura, también debes proporcionar un
|
Service Account JSON File Content |
Es opcional. Es el contenido completo del archivo JSON de la clave de la cuenta de servicio. Configura este parámetro para la autenticación de claves de cuentas de servicio. |
Quota Project ID |
Es opcional. Es el ID del proyecto que se usa para el uso y la facturación de la API. Este parámetro es obligatorio cuando se usa la autenticación de Workload Identity. Si no se proporciona ningún valor, la integración recupera el ID de las credenciales de cuenta de servicio. |
Project ID |
Es opcional. Es el ID del proyecto al que se orientará en Pub/Sub. Si no se proporciona ningún valor, la integración recupera el ID de las credenciales de cuenta de servicio. |
Verify SSL |
Obligatorio. Valida el certificado SSL para la conexión con el servidor. Habilitada de forma predeterminada. |
Para obtener instrucciones sobre cómo configurar una integración en Google SecOps, consulta Configura integraciones.
Si es necesario, puedes realizar 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 Cómo admitir varias instancias.
Acciones
Para obtener más información sobre las acciones, consulta Responde a las acciones pendientes desde tu escritorio y Ejecuta una acción manual en tu caso.
Ping
Usa la acción Ping para probar la conectividad con Pub/Sub.
Esta acción no se ejecuta en las entidades de Google SecOps.
Entradas de acción
Ninguno
Resultados de la acción
La acción Ping proporciona los siguientes resultados:
| Tipo de resultado de la acción | Disponibilidad |
|---|---|
| Archivo 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 |
Mensajes de salida
La acción Ping puede devolver los siguientes mensajes de resultado:
| Mensaje de salida | Descripción del mensaje |
|---|---|
Successfully connected to the Pub/Sub server with the
provided connection parameters! |
La acción se realizó correctamente. |
Failed to connect to the Pub/Sub server! Error is
ERROR_REASON |
No se pudo realizar la acción. Verifica la conexión con el servidor, los parámetros de entrada o las credenciales. |
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 |
Conectores
Para obtener instrucciones detalladas sobre cómo configurar un conector en Google SecOps, consulta Transferir tus datos (conectores).
Pub/Sub: Conector de mensajes
En la plataforma de Google SecOps, el conector de Pub/Sub – Messages se llama PubSub – Messages Connector.
Usa el conector de Pub/Sub – Mensajes para recuperar mensajes de Pub/Sub.
Asignación de gravedad de JSON
Para asignar la gravedad de la alerta, debes especificar qué campo usa el
conector de 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 Pub/Sub – Messages 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 del número entero | Gravedad asignada |
|---|---|
100 |
Critical |
Desde 80 hasta 100 |
High |
Desde 60 hasta 80 |
Medium |
Desde 40 hasta 60 |
Low |
Menos de 40 |
Informational |
Si la respuesta contiene el valor string, el conector de Pub/Sub – Messages requiere una configuración adicional.
Inicialmente, el valor predeterminado aparece de la siguiente manera:
{
"Default": 60
}
Si los valores que se requieren para la asignación se encuentran en la clave JSON event_severity,
los valores 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 un 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.
En caso de que haya varias coincidencias para el mismo objeto JSON, el conector de Pub/Sub – Messages prioriza la primera clave del objeto JSON.
Para trabajar con campos que contienen valores integer o float, configura la clave
y una cadena vacía en el parámetro Severity Mapping JSON:
{
"Default":"60",
"integer_field": "",
"float_field": ""
}
Entradas del conector
El conector de Pub/Sub: Mensajes 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 valor predeterminado es |
Event Field Name |
Obligatorio Es el nombre del campo que se usa para determinar el nombre del evento (subtipo). El valor predeterminado es |
Environment Field Name |
Optional
Es el nombre del campo en el que se almacena el nombre del entorno. Si no se encuentra el campo de entorno, se establece en el entorno predeterminado. El valor predeterminado es |
Environment Regex Pattern |
Optional
Es un patrón de expresión regular que se ejecuta en el valor que se encuentra en el campo
Usa el valor predeterminado Si el patrón de expresión regular es nulo o está vacío, o el valor del entorno es nulo, el resultado final del entorno es el entorno predeterminado. |
PythonProcessTimeout |
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 |
Service Account JSON File Content |
Optional Es el contenido del archivo JSON de la clave de la cuenta de servicio. Puedes configurar este parámetro o el parámetro Para configurar este parámetro, proporciona el contenido completo del archivo JSON de la clave de la cuenta de servicio que descargaste cuando creaste una cuenta de servicio. Para el conector de Pub/Sub – Messages, la autenticación con el archivo JSON de la clave de la cuenta de servicio tiene prioridad sobre la federación de identidades para cargas de trabajo. |
Workload Identity Email |
Optional Es la dirección de correo electrónico del cliente de tu cuenta de servicio. Puedes configurar este parámetro o el parámetro Para actuar como cuentas de servicio con
la federación de identidades para cargas de trabajo,
otorga el rol |
Project ID |
Optional Es el ID del proyecto que se usará en el conector. |
Quota Project ID |
Optional Es el ID del proyecto de Google Cloud que usas para
las APIs de Google Cloud y la facturación. Este parámetro requiere que otorgues
el rol La integración adjunta este valor del parámetro a todas las solicitudes a la API. |
Subscription ID |
Obligatorio Es el ID de la suscripción a Pub/Sub. |
Case Name Template |
Optional Un nombre de caso personalizado Cuando configuras
este parámetro, el conector agrega una clave nueva llamada
Puedes proporcionar marcadores de posición con el siguiente formato:
Ejemplo: Para los marcadores de posición, el conector usa el primer evento de Google SecOps. El conector solo controla las claves que contienen el valor de cadena. Para configurar este parámetro, especifica los campos de evento sin prefijos. |
Alert Name Template |
Obligatorio Un nombre de alerta personalizado. Puedes proporcionar marcadores de posición con el siguiente formato:
Ejemplo: Para los marcadores de posición, el conector usa el
primer evento de Google SecOps. El conector solo controla
las claves que contienen el valor de cadena. Si no proporcionas ningún valor o usas una
plantilla no válida, el conector usa un valor de resguardo con el siguiente
formato: |
Rule Generator Template |
Obligatorio Un generador de reglas personalizado Puedes proporcionar marcadores de posición con el siguiente formato:
Ejemplo: Para los marcadores de posición, el conector usa el
primer evento de Google SecOps. El conector solo controla
las claves que contienen el valor de cadena. Si no proporcionas ningún valor o usas una
plantilla no válida, el conector usa un valor de resguardo con el siguiente
formato: |
Timestamp Field |
Obligatorio Es el 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 tiempo Unix, define el formato de la marca de tiempo en el parámetro El valor predeterminado es |
Timestamp Format |
Optional Es el formato de la marca de tiempo del mensaje. El conector requiere la marca de tiempo para procesar el mensaje de forma correcta. Si la marca de tiempo no usa el formato de tiempo Unix y no configuras un formato de marca de tiempo, el conector falla. El valor predeterminado es |
Severity Mapping JSON |
Obligatorio Es el objeto JSON que define cómo el conector extrae 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 Es el nombre del campo para confirmar que el mensaje es
único. Puedes usar la palabra clave reservada |
Max Messages To Fetch |
Obligatorio Es la cantidad máxima de mensajes que se procesarán en cada iteración del conector. El valor predeterminado es |
Disable Overflow |
Optional Si se selecciona, el conector ignora el mecanismo de desbordamiento de Google SecOps durante la creación de alertas. Esta opción se selecciona de forma predeterminada. |
Verify SSL |
Obligatorio Si se selecciona, la integración verifica que el certificado SSL para conectarse a Pub/Sub sea válido. Se selecciona de forma predeterminada. |
Proxy Server Address |
Optional Es la dirección del servidor proxy que se usará. |
Proxy Username |
Optional Es el nombre de usuario del proxy con el que se autenticará. |
Proxy Password |
Optional Es la contraseña del proxy con la que se realizará la autenticación. |
Reglas del conector
El conector de Pub/Sub: Mensajes admite proxies.
Eventos de conectores
En el siguiente ejemplo, se muestra el resultado JSON de un evento de Google SecOps que genera el conector de Pub/Sub – Messages:
{
"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? Obtén respuestas de miembros de la comunidad y profesionales de Google SecOps.