Tenable Security Center

Versión de integración: 15.0

En este documento se explica cómo integrar Tenable Security Center con Google Security Operations (Google SecOps).

Antes de empezar

Para configurar la integración de Tenable Security Center, primero debes obtener las credenciales de conexión necesarias y confirmar que entiendes el método de autenticación requerido.

Requisitos previos de autenticación

La integración admite dos métodos de autenticación mutuamente excluyentes. Debes proporcionar un par de credenciales completo.

  • Nombre de usuario y contraseña: usa tus credenciales de inicio de sesión habituales.

  • Clave de acceso y clave secreta (recomendado): este método usa la autorización de clave de API y tiene prioridad si se proporcionan ambos pares de credenciales.

    Para generar estas claves, consulta Autorización de claves de API.

Verificación SSL

La integración verifica el certificado SSL del servidor de Tenable Security Center de forma predeterminada. Si tu entorno usa un certificado interno o autofirmado, debes inhabilitar el ajuste Verify SSL.

Entradas de integración

Para configurar la integración, usa los siguientes parámetros:

Parámetros
Server Address Obligatorio

La dirección del servidor de Tenable Security Center que se va a usar en la integración.

Username Optional

Nombre de usuario para iniciar sesión en el servidor de Tenable Security Center.

Se deben proporcionar tanto Username como Password.

Password Optional

Contraseña para iniciar sesión en el servidor de Tenable Security Center.

Se deben proporcionar tanto Username como Password.

Access Key Optional

Clave de acceso de la cuenta de Tenable Security Center.

Se deben proporcionar tanto Access Key como Secret Key.

Secret Key Optional

Clave secreta de la cuenta de Tenable Security Center.

Se deben proporcionar tanto Access Key como Secret Key.

Verify SSL Optional

Si se selecciona, verifica que el certificado SSL para la conexión al servidor de Tenable sea válido.

Esta opción está seleccionada de forma predeterminada.

Acciones

Add IP To IP List Asset

Añade una IP a un recurso de lista de IPs en Tenable Security Center.

Parámetros

Nombre visible del parámetro Tipo Valor predeterminado Es obligatorio Descripción
Asset Name Cadena N/A Especifica el nombre del recurso de lista de IPs al que quieras añadir IPs.

Fecha de ejecución

Esta acción se ejecuta en la entidad Dirección IP.

Resultados de la acción

Resultado de la secuencia de comandos
Nombre del resultado de la secuencia de comandos Opciones de valor Ejemplo
is_success Verdadero/Falso is_success:False
Resultado de JSON
{
    "type": "regular",
    "response": {
        "id": "41",
        "name": "api_test_5",
        "type": "static",
        "description": "",
        "tags": "qweqwe",
        "context": "",
        "status": "0",
        "createdTime": "1606129689",
        "modifiedTime": "1606129689",
        "ioSyncStatus": "Not Synced",
        "ioFirstSyncTime": "-1",
        "ioLastSyncSuccess": "-1",
        "ioLastSyncFailure": "-1",
        "ioSyncErrorDetails": null,
        "typeFields": {
            "definedIPs": "203.0.113.1,203.0.113.10"
        },
        "repositories": [
            {
                "ipCount": "-1",
                "repository": {
                    "id": "1",
                    "name": "Example-Repository",
                    "description": ""
                }
            }
        ],
        "ipCount": -1,
        "groups": [],
        "assetDataFields": [],
        "canUse": "true",
        "canManage": "true",
        "creator": {
            "id": "1",
            "username": "security_manager",
            "firstname": "Manager",
            "lastname": "Security"
        },
        "owner": {
            "id": "1",
            "username": "security_manager",
            "firstname": "Manager",
            "lastname": "Security"
        },
        "ownerGroup": {
            "id": "0",
            "name": "Full Access",
            "description": "Full Access group"
        },
        "targetGroup": {
            "id": -1,
            "name": "",
            "description": ""
        },
        "template": {
            "id": -1,
            "name": "",
            "description": ""
        }
    },
    "error_code": 0,
    "error_msg": "",
    "warnings": [],
    "timestamp": 1606129688
}
Panel de casos
Tipo de resultado Valor/Descripción Tipo
Mensaje de salida*

La acción no debe fallar ni detener la ejecución de un playbook:
Si el código estático es 200(is_success = true): print "Successfully added the following IPs to the IP List Asset {0} in Tenable Security Center:\n{1}".format(name, entity.identifier)

Si no hay entidades de IP: no se ha añadido ninguna dirección IP al recurso de lista de IPs {0}.format(name).

La acción debería fallar y detener la ejecución de un cuaderno de estrategias:
si se produce un error grave, como credenciales incorrectas, no hay conexión con el servidor u otro error, se mostrará el mensaje "Error al ejecutar la acción "Añadir IP al recurso de lista de IPs". Motivo: {0}''.format(error.Stacktrace)


Si no se encuentra el recurso: imprime "Error al ejecutar la acción "Añadir IP a recurso de lista de IPs". Motivo: no se ha encontrado el recurso {0} en Tenable Security Center. ''.format(error.Stacktrace)

Si no es código estático 200 (is_success = false): print "Error al ejecutar la acción "Añadir IP a recurso de lista de IPs". Motivo: {0}''.format(error_msg)

General

Crear recurso de lista de IPs

Crea un recurso de lista de IPs en Tenable Security Center. Requiere al menos una entidad de IP para ejecutarse correctamente.

Parámetros

Nombre visible del parámetro Tipo Valor predeterminado Es obligatorio Descripción
Nombre Cadena N/A Especifica el nombre del recurso de lista de IPs.
Descripción Cadena N/A No Especifica la descripción del recurso de lista de IPs.
Etiqueta Cadena N/A No Especifica la etiqueta del recurso de lista de IPs.

Fecha de ejecución

Esta acción se ejecuta en la entidad Dirección IP.

Resultados de la acción

Resultado de la secuencia de comandos
Nombre del resultado de la secuencia de comandos Opciones de valor Ejemplo
is_success Verdadero/Falso is_success:False
Resultado de JSON
{
    "type": "regular",
    "response": {
        "id": "41",
        "name": "api_test_5",
        "type": "static",
        "description": "",
        "tags": "qweqwe",
        "context": "",
        "status": "0",
        "createdTime": "1606129689",
        "modifiedTime": "1606129689",
        "ioSyncStatus": "Not Synced",
        "ioFirstSyncTime": "-1",
        "ioLastSyncSuccess": "-1",
        "ioLastSyncFailure": "-1",
        "ioSyncErrorDetails": null,
        "typeFields": {
            "definedIPs": "203.0.113.1,203.0.113.10"
        },
        "repositories": [
            {
                "ipCount": "-1",
                "repository": {
                    "id": "1",
                    "name": "Example-Repository",
                    "description": ""
                }
            }
        ],
        "ipCount": -1,
        "groups": [],
        "assetDataFields": [],
        "canUse": "true",
        "canManage": "true",
        "creator": {
            "id": "1",
            "username": "security_manager",
            "firstname": "Manager",
            "lastname": "Security"
        },
        "owner": {
            "id": "1",
            "username": "security_manager",
            "firstname": "Manager",
            "lastname": "Security"
        },
        "ownerGroup": {
            "id": "0",
            "name": "Full Access",
            "description": "Full Access group"
        },
        "targetGroup": {
            "id": -1,
            "name": "",
            "description": ""
        },
        "template": {
            "id": -1,
            "name": "",
            "description": ""
        }
    },
    "error_code": 0,
    "error_msg": "",
    "warnings": [],
    "timestamp": 1606129688
}
Panel de casos
Tipo de resultado Valor/Descripción Tipo
Mensaje de salida*

La acción no debe fallar ni detener la ejecución de un libro de jugadas:
Si el código estático es 200(is_success = true): print "Successfully created new IP List Asset {0} with the following IPs in Tenable Security Center:\n{1}".format(name, entity.identifier)

Si no hay entidades de IP: imprime "Debe haber al menos una entidad de IP para crear un recurso de lista de IPs".


La acción debe fallar y detener la ejecución de un cuaderno de estrategias:
si se produce un error grave, como credenciales incorrectas, no hay conexión con el servidor u otro error, imprime "Error al ejecutar la acción "Crear recurso de lista de IPs". Motivo: {0}''.format(error.Stacktrace)

Si el código no es estático 200 (is_success = false): imprime "Error al ejecutar la acción "Crear recurso de lista de IPs". Motivo: {0}''.format(error_msg)

General

Enriquecer IP

Obtener información sobre direcciones IP y enriquecerlas.

Parámetros

Parámetro Tipo Valor predeterminado Descripción
Nombre del repositorio Cadena N/A Nombre del repositorio.

Fecha de ejecución

Esta acción se ejecuta en la entidad Dirección IP.

Resultados de la acción

Enriquecimiento de entidades
Nombre del campo de enriquecimiento Lógica: cuándo aplicar
macAddress Devuelve si existe en el resultado JSON
severityLow Devuelve si existe en el resultado JSON
links Devuelve si existe en el resultado JSON
ip Devuelve si existe en el resultado JSON
último análisis Devuelve si existe en el resultado JSON
severityCritical Devuelve si existe en el resultado JSON
total Devuelve si existe en el resultado JSON
severityAll Devuelve si existe en el resultado JSON
mcafeeGUID Devuelve si existe en el resultado JSON
policyName Devuelve si existe en el resultado JSON
uuid Devuelve si existe en el resultado JSON
lastAuthRun Devuelve si existe en el resultado JSON
severityInfo Devuelve si existe en el resultado JSON
osCPE Devuelve si existe en el resultado JSON
singularidad Devuelve si existe en el resultado JSON
dnsName Devuelve si existe en el resultado JSON
repositorio Devuelve si existe en el resultado JSON
ip Devuelve si existe en el resultado JSON
description Devuelve si existe en el resultado JSON
name Devuelve si existe en el resultado JSON
lastUnauthRun Devuelve si existe en el resultado JSON
biosGUID Devuelve si existe en el resultado JSON
tpmID Devuelve si existe en el resultado JSON
puntuación Devuelve si existe en el resultado JSON
hasPassive Devuelve si existe en el resultado JSON
pluginSet Devuelve si existe en el resultado JSON
hasCompliance Devuelve si existe en el resultado JSON
severityHigh Devuelve si existe en el resultado JSON
netbiosName Devuelve si existe en el resultado JSON
severityMedium Devuelve si existe en el resultado JSON
os Devuelve si existe en el resultado JSON
Resultado de la secuencia de comandos
Nombre del resultado de la secuencia de comandos Opciones de valor Ejemplo
is_success Verdadero/Falso is_success:False
Resultado de JSON
[
{
"EntityResult":
{
"macAddress": "",
"severityLow": "0",
"links": [],
"ip": "203.0.113.1",
"lastScan": "1549425224",
"severityCritical": "0",
"total": "2",
"severityAll": "0,0,0,0,2",
"mcafeeGUID": "",
"policyName": "1e2e4247-0de7-56d5-8026-34ab1f3150ef-1130313/Basic Discovery Scan",
"uuid": "",
"lastAuthRun": "",
"severityInfo": "2",
"osCPE": "",
"uniqueness": "repositoryID,ip,dnsName",
 "dnsName": "example.com",
"repository":
          {
"id": "1",
"description": "",
"name": "repository"
          },
"lastUnauthRun": "1549363419",
"biosGUID": "",
"tpmID": "",
"score": "0",
"hasPassive": "No",
"pluginSet": "201902020242",
"hasCompliance": "No",
"severityHigh": "0",
"netbiosName": "",
"severityMedium": "0",
"os": ""
},
"Entity": "203.0.113.1"
}
]

Obtiene los recursos relacionados con una dirección IP.

Parámetros

Parámetro Tipo Valor predeterminado Descripción
Nombre del repositorio Cadena N/A Nombre del repositorio.

Fecha de ejecución

Esta acción se ejecuta en la entidad Dirección IP.

Resultados de la acción

Enriquecimiento de entidades
Nombre del campo de enriquecimiento Lógica: cuándo aplicar
id Devuelve si existe en el resultado JSON
name Devuelve si existe en el resultado JSON
Resultado de la secuencia de comandos
Nombre del resultado de la secuencia de comandos Opciones de valor Ejemplo
is_success Verdadero/Falso is_success:False
Resultado de JSON
[
{
"EntityResult":
[
{
"id": "0",
"description": "All defining ranges of the Group in whose context this Asset is being evaluated.",
"name": "All Defined Ranges"
}, {
"id": "2",
"description": "This asset uses the Scan Summary plugin to detect if a host has been scanned by Nessus. The Scan Summary plugin contains the list of tests conducted during the most recent scan.",
"name": "Systems that have been Scanned"
}, {
"id": "13",
"description": "Leverage Nessus plugin 10180 (Ping the remote host) and Nessus plugin 12503 (Host Fully Qualified Domain Name (FQDN) Resolution) to find hosts that don't have a resolvable FQDN in DNS.",
"name": "Scanned Hosts Not in DNS"
}
],
"Entity": "203.0.113.1"
}
]

Ver el informe

Obtiene el contenido de un informe por ID o nombre.

Parámetros

Parámetro Tipo Valor predeterminado Descripción
ID de informe Cadena N/A Número de ID del informe.Se puede encontrar en la URL del informe.

Fecha de ejecución

Esta acción se ejecuta en todas las entidades.

Resultados de la acción

Resultado de la secuencia de comandos
Nombre del resultado de la secuencia de comandos Opciones de valor Ejemplo
is_success Verdadero/Falso is_success:False
Resultado de JSON
{
"pubSites":
[
"https://example.com",
"https://example.net"
]
}

Obtener resultados de análisis

Espera a que se complete el análisis y obtén los resultados.

Parámetros

Parámetro Tipo Valor predeterminado Descripción
ID de resultado del análisis

Cadena

N/A El ID de los resultados del análisis.

Fecha de ejecución

Esta acción se ejecuta en todas las entidades.

Resultados de la acción

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

{
"severity_summary":
[
{
"count": "0",
"severity":
{
"id": "4",
"name": "Critical",
"description": "Critical Severity"
}
}, {
"count": "0",
"severity":
{
"id": "3",
"name": "High",
"description": "High Severity"
}
}, {
"count": "3",
"severity":
{"id": "2",
"name": "Medium",
"description": "Medium Severity"
}}
],
"results":
[
{
"name": "DNS Server Recursive Query Cache Poisoning Weakness",
"family": "DNS",
"hostTotal": "1",
"pluginID": "10539",
"total": "1",
"severity": "Medium"
}, {
"name": "DNS Server Spoofed Request Amplification DDoS",
"family": "DNS",
"hostTotal": "1",
"pluginID": "35450",
"total": "1",
"severity": "Medium"
}, {
"name": "SSL Medium Strength Cipher Suites Supported",
"family": "General",
"hostTotal": "1",
"pluginID": "42873",
"total": "1",
"severity": "Medium"
}
]
}

Get Vulnerabilities for IP

Obtiene un resumen de las vulnerabilidades y la gravedad de una dirección IP.

Parámetros

N/A

Fecha de ejecución

Esta acción se ejecuta en la entidad Dirección IP.

Resultados de la acción

Enriquecimiento de entidades
Nombre del campo de enriquecimiento Lógica: cuándo aplicar
macAddress Devuelve si existe en el resultado JSON
protocolo Devuelve si existe en el resultado JSON
uuid Devuelve si existe en el resultado JSON
familia Devuelve si existe en el resultado JSON
pluginInfo Devuelve si existe en el resultado JSON
ip Devuelve si existe en el resultado JSON
pluginID Devuelve si existe en el resultado JSON
gravedad Devuelve si existe en el resultado JSON
repositorio Devuelve si existe en el resultado JSON
singularidad Devuelve si existe en el resultado JSON
dnsName Devuelve si existe en el resultado JSON
puerto Devuelve si existe en el resultado JSON
netbiosName Devuelve si existe en el resultado JSON
name

Devuelve si existe en el resultado JSON.

Resultado de la secuencia de comandos
Nombre del resultado de la secuencia de comandos Opciones de valor Ejemplo
is_success Verdadero/Falso is_success:False
Resultado de JSON
[
{
"EntityResult":
[
{
"macAddress": "",
"protocol": "TCP",
"uuid": "",
"family": "Web Servers",
"pluginInfo": "10107 (443/6) HTTP Server Type and Version",
"ip": "203.0.113.1",
"pluginID": "10107",
"severity": "Info",
"repository": "repo",
"uniqueness": "repositoryID,ip,dnsName",
"dnsName": "example.com",
"port": "443",
"netbiosName": "",
"name": "HTTP Server Type and Version"
}, {
"macAddress": "",
"protocol": "UDP",
"uuid": "",
"family": "DNS",
"pluginInfo": "10539 (53/17) DNS Server Recursive Query Cache Poisoning Weakness",
"ip": "203.0.113.1",
"pluginID": "10539",
"severity": "Medium",
"repository": "repo",
"uniqueness": "repositoryID,ip,dnsName",
"dnsName": "exaample.com",
"port": "53",
"netbiosName": "",
"name": "DNS Server Recursive Query Cache Poisoning Weakness"
}, {
"macAddress": "",
"protocol": "TCP",
"uuid": "",
"family": "General",
"pluginInfo": "10863 (443/6) SSL Certificate Information",
"ip": "203.0.113.1",
"pluginID": "10863",
"severity": "Info",
"repository": "repo",
"uniqueness": "repositoryID,ip,dnsName",
"dnsName": "example.com",
"port": "443",
"netbiosName": "",
"name": "SSL Certificate Information"
}
],
"Entity": "203.0.113.1"
}
]

Ping

Prueba la conectividad.

Fecha de ejecución

Esta acción se ejecuta en todas las entidades.

Resultados de la acción

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

Analizar IPs

Inicia un análisis de direcciones IP.

Parámetros

Parámetro Tipo Valor predeterminado Descripción
Nombre del análisis Cadena N/A Nombre del análisis que se va a crear.
Nombre de la política Cadena N/A El nombre de la política.

Fecha de ejecución

Esta acción se ejecuta en la entidad Dirección IP.

Resultados de la acción

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

Ejecutar análisis de recursos

Ejecuta un análisis de recursos en Tenable Security Center.

Dónde encontrar el ID de la política y el ID del repositorio

Para el ID de política:

  1. Ve a https://INSTANCE_IP_ADDRESS/#policies.
  2. Selecciona la política que quieras usar en la acción.
  3. En la URL, podrás ver el ID de esa política.

ID de repositorio:

  1. Ve a https://INSTANCE_IP_ADDRESS/#repositories.
  2. Selecciona el repositorio que quieras usar en la acción.
  3. En la URL, verás el ID de ese repositorio.

Parámetros

Nombre visible del parámetro Tipo Valor predeterminado Es obligatorio Descripción
Nombre del análisis N/A Especifica el nombre del análisis.
Asset Name Cadena N/A Especifica el nombre del recurso que se debe analizar.
ID de política Entero N/A Especifica el ID de la política que se debe usar en el análisis.
ID de repositorio Entero N/A Especifica el ID del repositorio que se debe usar en el análisis.
Descripción Cadena N/A No Especifica la descripción del análisis.

Fecha de ejecución

Esta acción no se ejecuta en entidades.

Resultados de la acción

Resultado de la secuencia de comandos
Nombre del resultado de la secuencia de comandos Opciones de valor Ejemplo
is_success Verdadero/Falso is_success:False
Resultado de JSON
{
    "type": "regular",
    "response": {
        "id": "11",
        "name": "Scan Name",
        "description": "",
        "ipList": "",
        "type": "policy",
        "dhcpTracking": "false",
        "classifyMitigatedAge": "0",
        "emailOnLaunch": "false",
        "emailOnFinish": "false",
        "timeoutAction": "import",
        "scanningVirtualHosts": "false",
        "rolloverType": "template",
        "status": "0",
        "createdTime": "1606132784",
        "modifiedTime": "1606132784",
        "maxScanTime": "3600",
        "reports": [],
        "assets": [
            {
                "id": "38",
                "name": "api_test_1",
                "description": ""
            }
        ],
        "credentials": [],
        "numDependents": "0",
        "schedule": {
            "id": -1,
            "objectType": -1,
            "type": "now",
            "start": "",
            "repeatRule": "",
            "enabled": "true",
            "nextRun": -1,
            "dependent": {
                "id": -1,
                "name": "",
                "description": ""
            }
        },
        "policy": {
            "id": "1000002",
            "context": "",
            "name": "Host Discovery",
            "description": "",
            "tags": "",
            "owner": {
                "id": "1",
                "username": "security_manager",
                "firstname": "Manager",
                "lastname": "Security"
            },
            "ownerGroup": {
                "id": "0",
                "name": "Full Access",
                "description": "Full Access group"
            }
        },
        "policyPrefs": [
            {
                "name": "MODE|discovery",
                "value": "host_enumeration"
            },
            {
                "name": "description",
                "value": ""
            },
            {
                "name": "display_unreachable_hosts",
                "value": "no"
            },
            {
                "name": "log_live_hosts",
                "value": "yes"
            },
            {
                "name": "name",
                "value": "Host Discovery"
            },
            {
                "name": "reverse_lookup",
                "value": "no"
            }
        ],
        "repository": {
            "id": "1",
            "name": "Example-Repository",
            "description": ""
        },
        "canUse": "true",
        "canManage": "true",
        "plugin": {
            "id": -1,
            "name": "",
            "description": ""
        },
        "zone": {
            "id": -1,
            "name": "",
            "description": ""
        },
        "ownerGroup": {
            "id": "0",
            "name": "Full Access",
            "description": "Full Access group"
        },
        "creator": {
            "id": "1",
            "username": "security_manager",
            "firstname": "Manager",
            "lastname": "Security"
        },
        "owner": {
            "id": "1",
            "username": "security_manager",
            "firstname": "Manager",
            "lastname": "Security"
        },
        "scanResultID": "34"
    },
    "error_code": 0,
    "error_msg": "",
    "warnings": [],
    "timestamp": 1606132783
}
Panel de casos
Tipo de resultado Valor/Descripción Tipo
Mensaje de salida*

La acción no debe fallar ni detener la ejecución de un runbook:
Si el código estático es 200(is_success = true): print "Successfully started asset scan {0} in Tenable Security Center.".format(name)

La acción debe fallar y detener la ejecución de un libro de jugadas:
si se produce un error grave, como credenciales incorrectas, no hay conexión con el servidor u otro error: imprime "Error al ejecutar la acción "Run Asset Scan". Motivo: {0}''.format(error.Stacktrace)

Si no se encuentra el recurso: imprime "Error al ejecutar la acción "Ejecutar análisis de recursos". Motivo: no se ha encontrado el recurso {0} en Tenable Security Center. ''.format(name)

Si no es el código estático 200 (is_success = false): print "Error al ejecutar la acción "Run Asset Scan". Motivo:{0}".format(error_msg)

General

Conectores

Conector de Tenable Security Center

Para obtener instrucciones detalladas sobre cómo configurar un conector en Google SecOps, consulta el artículo Configurar el conector.

Parámetros de conectores

Utiliza los siguientes parámetros para configurar el conector:

Parámetro Tipo Valor predeterminado Descripción
DeviceProductField Cadena device_product Nombre del campo que se usa para determinar el producto del dispositivo.
EventClassId Cadena name Nombre del campo que se usa para determinar el nombre del evento (subtipo).
PythonProcessTimeout Cadena 60 El límite de tiempo de espera (en segundos) del proceso de Python que ejecuta el script actual.
Dirección del servidor Cadena null N/A
Nombre de usuario Cadena null N/A
Contraseña Contraseña null N/A
Clave de acceso Cadena null Optional

Clave de acceso de la cuenta de Tenable Security Center.

Se deben proporcionar tanto Access Key como Secret Key.

Clave secreta Contraseña null Optional

Clave secreta de la cuenta de Tenable Security Center.

Se deben proporcionar tanto Access Key como Secret Key.

Use SSL (Usar SSL) Casilla Desmarcada N/A
Máximo de días hacia atrás Entero 1 El número de días anteriores a partir del cual quieres obtener los datos.
Límite por ciclo Entero 10 La cantidad de alertas ingeridas en el conector en cada ciclo de ejecución.
Dirección del servidor proxy Cadena null Dirección del servidor proxy que se va a usar.
Nombre de usuario del proxy Cadena null Nombre de usuario del proxy para autenticarse.
Contraseña del proxy Contraseña null La contraseña del proxy para autenticarte.

Reglas de conectores

El conector admite proxies.

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