Descripción general
Security Command Center proporciona notificaciones de resultados en tiempo real en laGoogle Cloud consola. En esta guía, se describe cómo usar los Google Cloud servicios y las APIs de terceros para extender esa funcionalidad y recibir notificaciones casi en tiempo real en Slack. Cuando completas la guía, recibes alertas sobre resultados nuevos en servicios de terceros configurados sin acceder a la consola de Google Cloud , lo que permite una evaluación más rápida de las vulnerabilidades y amenazas. Obtén más información sobre los diferentes tipos de vulnerabilidades y amenazas en Security Command Center.
Topología
En esta guía, crearás la configuración que se ilustra en el siguiente diagrama.
Objetivos
En esta guía, harás lo siguiente:
- Configura un tema de Pub/Sub
- Configura Slack.
- Escribir código en Cloud Run Functions
- Configura Pub/Sub y Cloud Run Functions para enviar notificaciones a Slack cada vez que se escriba un nuevo hallazgo de gravedad alta o crítica en Security Command Center.
- Solucionar problemas de notificaciones.
Costos
En este instructivo, se usan componentes facturables de Google Cloud, incluidos los siguientes:
- Pub/Sub
- Cloud Run Functions
- Cloud Build
Usa la calculadora de precios para estimar los costos según el uso previsto.
Antes de comenzar
Para completar esta guía, debes tener las siguientes funciones de Identity and Access Management (IAM):
- Administrador de la organización (
roles/resourcemanager.organizationAdmin) - Administrador del centro de seguridad (
roles/securitycenter.admin) - Administrador de seguridad (
roles/iam.securityAdmin) - Una función con el permiso
serviceusage.services.use, como propietario (roles/owner), editor (roles/editor) o una función personalizada - Crea cuentas de servicio (
roles/iam.serviceAccountCreator) - Editor de Pub/Sub (
roles/pubsub.editor) - Administrador de cuentas de facturación (
roles/billing.admin)
Los roles de IAM para Security Command Center se pueden otorgar a nivel de organización, carpeta o proyecto. Tu capacidad para ver, editar, crear o actualizar hallazgos, recursos y fuentes de seguridad depende del nivel al que se te otorga acceso. Para obtener más información sobre los roles de Security Command Center, consulta Control de acceso.
Configura un proyecto
Completa los siguientes pasos para crear o seleccionar un proyecto.
- Accede a tu cuenta de Google Cloud . Si es la primera vez que usas Google Cloud, crea una cuenta para evaluar el rendimiento de nuestros productos en situaciones reales. Los clientes nuevos también obtienen $300 en créditos gratuitos para ejecutar, probar y, además, implementar cargas de trabajo.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Cloud Build API, if it is not already enabled.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.-
Install the Google Cloud CLI.
-
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
-
To initialize the gcloud CLI, run the following command:
gcloud init -
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Cloud Build API, if it is not already enabled.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.-
Install the Google Cloud CLI.
-
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
-
To initialize the gcloud CLI, run the following command:
gcloud init
Tiempo estimado: La configuración y prueba de las notificaciones para un solo servicio tarda aproximadamente una hora.
Configura un tema de Pub/Sub
Pub/Sub es un servicio de mensajería en tiempo real que permite enviar y recibir mensajes entre aplicaciones independientes. Obtén más información sobre Pub/Sub.
En esta sección, configurarás Security Command Center para publicar los resultados en un tema de Pub/Sub.
Para configurar un tema de Pub/Sub y suscribirse a él, sigue estos pasos:
Especifica tu proyecto de Google Cloud en una variable de entorno.
export PROJECT_ID=PROJECT_IDReemplaza PROJECT_ID con el ID del proyecto.
Especifica tu organización de Google Cloud en una variable de entorno.
export ORG_ID=ORG_IDReemplaza ORG_ID por el ID de tu organización.
Configura el ID del proyecto para los comandos
gcloud.gcloud config set project PROJECT_IDCrea el tema de Pub/Sub en el que se publicarán las notificaciones.
gcloud pubsub topics create scc-critical-and-high-severity-findings-topicEspecifica el tema en una variable de entorno.
export TOPIC=projects/$PROJECT_ID/topics/scc-critical-and-high-severity-findings-topicCrea la suscripción que notifica a las funciones de Cloud Run para que envíen un mensaje de chat cuando se publiquen mensajes en el tema.
gcloud pubsub subscriptions create scc-critical-and-high-severity-findings-sub \ --topic scc-critical-and-high-severity-findings-topicConfigura Security Command Center para publicar notificaciones en el tema. Se puede usar cualquier filtro compatible con la API de ListFindings.
El siguiente filtro publica notificaciones para los resultados de gravedad alta y crítica activas en la ubicación
global. Obtén más información para filtrar hallazgos.gcloud scc notifications create scc-critical-high-severity \ --pubsub-topic=$TOPIC \ --organization=$ORG_ID \ --location=global \ --filter '(severity="HIGH" OR severity="CRITICAL") AND state="ACTIVE"' \ --deletion-notifications-enabledAgrega la marca
--deletion-notifications-enabledpara recibir notificaciones sobre los eventos de eliminación de búsquedas debido a las políticas de retención. La notificación contiene el conjunto de camposdeletedFinding: true. Asegúrate de que tus Cloud Run Functions o tu aplicación analicen el atributodeletedFindingpara que las alertas reflejen correctamente los borrados de hallazgos. Para inhabilitar las notificaciones de eliminación, actualizaNotificationConfigy establece la marca--no-deletion-notifications-enabled.
A continuación, crea o configura tu app de chat para recibir notificaciones de Pub/Sub.
Configura una app de mensajería
En esta sección, se describe cómo usar Pub/Sub y Cloud Run functions o Cloud Run functions (1ª gen.) para habilitar notificaciones casi en tiempo real para Slack.
Para enviar notificaciones a un canal de Slack, haz lo siguiente:
- Crea una nueva aplicación de Slack con privilegios suficientes para publicar mensajes en un canal público de Slack.
- Crea e implementa una función de Cloud Run que publique mensajes de chat en Slack cuando se reciban notificaciones de Pub/Sub.
Cree una aplicación de Slack nueva
En esta sección, crearás una aplicación de Slack nueva para recibir notificaciones.
- Navega a Apps de la API de Slack para abrir una página de ejemplo en otra pestaña.
Accede o crea una cuenta.
Selecciona Create an App.
Configura Nombre de la aplicación como "SCC Finding Notifier".
Selecciona el espacio de trabajo de Slack de desarrollo en el que quieres que el bot de Slack publique mensajes y, luego, haz clic en Crear app.
En el panel de navegación, selecciona OAuth y permisos.
Navega a la sección Scopes. Los permisos se dividen en dos categorías:
- Bot Token Scopes
- User Token Scopes
Para este ejercicio, no necesitas agregar un permiso de token de usuario. En Alcances del token de bot, haz clic en Agregar un alcance de OAuth y, luego, ingresa lo siguiente:
chat:writechat:write.public
Ve a la parte superior de la página OAuth & Permissions y haz clic en Install App to Workspace.
En el diálogo de confirmación, haz clic en Permitir.
Copia el token de acceso OAuth de usuario bot para usar en la función de Cloud Functions.
A continuación, implementarás una función de Cloud Run para enviar notificaciones a un grupo de Slack.
Crea la función de Cloud Run de Slack
En esta sección, implementarás una función para enviar notificaciones a tu cuenta de Slack. La muestra de código de esta sección está escrita en Python, pero puedes usar cualquier lenguaje compatible con Cloud Run Functions.
En la consola de Google Cloud , ve a la página Servicios de Cloud Run Functions.
Selecciona el ID del proyecto que contiene el tema de Pub/Sub.
Haz clic en Escribir una función y completa los campos:
- Para Nombre del servicio, ingresa
slack-chat-high-and-critical-findings. - En Región, selecciona la región en la que deseas almacenar el servicio.
- En Entorno de ejecución, selecciona la versión de Python que se usará para ejecutar tu función.
- Para Nombre del servicio, ingresa
Haz clic en Agregar activador y selecciona Activador de Pub/Sub.
Ingresa los detalles del tema de Pub/Sub que creaste en Configura un tema de Pub/Sub y haz clic en Guardar activador.
Haz clic en Crear. Se mostrarán los detalles del servicio.
En el panel Fuente de la pestaña Fuente, haz clic en requirements.txt.
En el editor de código, agrega
requestsyfunctions-framework==3.*:requests functions-framework==3.*En el panel Source, haz clic en main.py.
En el editor de código, reemplaza el código por lo siguiente:
import base64 import json import requests import functions_framework TOKEN = "BOT_ACCESS_TOKEN" @functions_framework.cloud_event def send_slack_chat_notification(cloud_event): pubsub_message = base64.b64decode(cloud_event.data["message"]["data"]).decode('utf-8').strip() message_json = json.loads(pubsub_message) finding = message_json['finding'] requests.post("https://slack.com/api/chat.postMessage", data={ "token": TOKEN, "channel": "#SLACK_CHANNEL_NAME", "text": f"A high severity finding {finding['category']} was detected." })Reemplaza lo siguiente:
BOT_ACCESS_TOKEN: Es el token de acceso de OAuth del usuario bot que creaste con la app de Slack.SLACK_CHANNEL_NAME: Es el canal de Slack en el que deseas enviar las notificaciones.
En el campo Punto de entrada de la función, ingresa el nombre de la función en la muestra de código:
send_slack_chat_notification.Haz clic en Guardar y volver a implementar. Si aparece una marca de verificación verde junto al nombre de la función, significa que se implementó correctamente. Este proceso puede tardar unos minutos.
Si los pasos anteriores se completaron sin errores, la configuración se completará y comenzarás a recibir notificaciones. Keep in mind:
- Recibirás un mensaje de chat independiente por cada resultado individual crítico o de gravedad alta. La frecuencia o la cantidad de notificaciones depende de los recursos dentro de tu organización.
- Las notificaciones se publican y se envían casi en tiempo real. Sin embargo, la inmediatez de los mensajes no está garantizada, y varios factores pueden causar retrasos, incluidos los problemas con Slack.
Para cambiar el flujo de trabajo de notificaciones, puedes hacer lo siguiente:
- Actualiza tu función de Cloud Run para cambiar los destinatarios.
- Actualiza el filtro para el tema de Pub/Sub a fin de cambiar qué resultados activan notificaciones.
Prueba las notificaciones
Para probar si las notificaciones están configuradas de forma correcta, sigue estas instrucciones para activar o desactivar los resultados de gravedad alta entre estados activos e inactivos.
- Accede a la página Hallazgos de Security Command Center.
Ir a la página Resultados - Si se le solicita, selecciona tu organización.
- En el panel Filtros rápidos, ve a la sección Gravedad y selecciona Alta o Crítica. El panel Resultados de la búsqueda se actualiza para mostrar solo los hallazgos de la gravedad seleccionada.
- En el panel Resultados de la búsqueda de hallazgos, selecciona un hallazgo marcando la casilla junto a su nombre.
- En el menú Cambiar el estado activo de la barra de acciones Resultados de la búsqueda de hallazgos, selecciona Inactivo. Si la búsqueda actual de hallazgos solo muestra los hallazgos activos, el hallazgo se quitará de los resultados de la búsqueda.
- En el panel Filtros rápidos, ve a la sección Estado y cambia las selecciones para que solo se seleccione Inactivo. El panel Resultados de la búsqueda se actualiza para mostrar solo los hallazgos inactivos.
- En el panel Resultados de la búsqueda, selecciona el hallazgo que marcaste como inactivo.
- En el menú Cambiar el estado activo de la barra de acciones Resultados de la búsqueda de hallazgos, selecciona Activo.
- Revisa tus mensajes de Slack. Aparecerá un mensaje similar al de la siguiente imagen:

Soluciona problemas
Si no se envían ni reciben mensajes de chat, sigue estos pasos para identificar y resolver posibles problemas.
Revisa los registros de Stackdriver de tu función de Cloud Run para determinar si la función se está invocando. Si no se invoca, asegúrate de que las notificaciones estén configuradas de forma correcta.
Si se invoca la función de Cloud Run, es posible que falle. Comprueba si hay errores en Cloud Run Functions con Google Cloud Error Reporting de la consola.
Realiza una limpieza
Para evitar que se apliquen cargos a tu Google Cloud cuenta por los recursos usados en este instructivo, borra el proyecto que contiene los recursos o conserva el proyecto y borra los recursos individuales.
Borra el proyecto
- En la Google Cloud consola, ve a la página Administrar recursos.
- En la lista de proyectos, elige el proyecto que quieres borrar y haz clic en Borrar.
- En el diálogo, escribe el ID del proyecto y, luego, haz clic en Cerrar para borrar el proyecto.
Borra recursos individuales
Borra la configuración de tus notificaciones:
gcloud scc notifications delete scc-critical-high-severity \ --organization=ORG_ID \ --location=globalReemplaza ORG_ID por el ID de tu organización.
Para mantener la configuración y pausar las notificaciones de manera temporal, comenta las llamadas
sendoposten la función de Cloud Run.Borra tu función de Cloud Run:
- Ve a Cloud Run Functions.
Ir a Cloud Run Functions - Haz clic en la casilla de verificación junto al objeto que deseas borrar.
- Haz clic en Borrar .
- Ve a Cloud Run Functions.
Borra la cuenta de servicio:
- Vaya a la página de cuentas de servicio.
Ir a las cuentas de servicio - Selecciona un proyecto
- Selecciona la cuenta de servicio que deseas borrar y, luego, haz clic en Borrar .
- Vaya a la página de cuentas de servicio.
¿Qué sigue?
- Obtén más información sobre los errores de notificaciones.
- Obtén más información para filtrar notificaciones.
- Aprende a solucionar los resultados de Web Security Scanner y Security Health Analytics.