En esta página, se explica cómo habilitar las notificaciones de la API de Security Command Center.
Las notificaciones envían resultados y actualizaciones de resultados a un tema de Pub/Sub en cuestión de minutos. Las notificaciones de la API de Security Command Center incluyen toda la información de los hallazgos que muestra Security Command Center en laGoogle Cloud consola.
Puedes conectar las notificaciones de Security Command Center en Pub/Sub directamente a las acciones de Cloud Run Functions. Para ver ejemplos de funciones que pueden ayudar con la respuesta, el enriquecimiento y la solución, consulta el repositorio de código abierto de Security Command Center del código de Cloud Run Functions. El repositorio contiene soluciones que te ayudan a realizar acciones automatizadas con respecto a los resultados de seguridad.
Como alternativa, puedes exportar los resultados a BigQuery o configurar exportaciones continuas para Pub/Sub en la consola de Google Cloud .
Antes de comenzar
-
Para obtener los permisos que necesitas para configurar las notificaciones de la API de Security Command Center, pídele a tu administrador que te otorgue los siguientes roles de IAM:
-
Administrador del Centro de seguridad (
roles/securitycenter.admin
) en la organización o el proyecto en el que se activó Security Command Center -
Administrador de IAM de proyecto (
roles/resourcemanager.projectIamAdmin
) en el proyecto en el que crearás tu tema de Pub/Sub
Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.
También puedes obtener los permisos necesarios mediante roles personalizados o cualquier otro rol predefinido.
-
Administrador del Centro de seguridad (
-
Enable the Security Command Center API:
gcloud services enable securitycenter.googleapis.com
Residencia de datos y notificaciones
Si la residencia de datos está habilitada para Security Command Center, las configuraciones que definen las exportaciones continuas a Pub/Sub (recursos de notificationConfig
) están sujetas al control de residencia de datos y se almacenan en tu ubicación de Security Command Center.
Para exportar resultados en una ubicación de Security Command Center a Pub/Sub, debes configurar la exportación continua en la misma ubicación de Security Command Center que los resultados.
Dado que los filtros que se usan en las exportaciones continuas pueden contener datos sujetos a controles de residencia, asegúrate de especificar la ubicación correcta antes de crearlos. Security Command Center no restringe la ubicación en la que creas exportaciones.
Las exportaciones continuas solo se almacenan en la ubicación en la que se crean y no se pueden ver ni editar en otras ubicaciones.
Después de crear una exportación continua, no puedes cambiar su ubicación. Para cambiar la ubicación, debes borrar la exportación continua y volver a crearla en la nueva ubicación.
Para obtener información sobre cómo usar Security Command Center cuando la residencia de datos está habilitada, consulta Endpoints regionales de Security Command Center.
Configura un tema de Pub/Sub
En esta tarea, crearás y te suscribirás al tema de Pub/Sub al que deseas enviar notificaciones.
Paso 1: Configura Pub/Sub
Para configurar un tema de Pub/Sub y suscribirte a él, haz lo siguiente:
Ve a la consola de Google Cloud .
Selecciona el proyecto en el que habilitaste la API de Security Command Center.
Haz clic en Activate Cloud Shell (Activar Cloud Shell).
Opcional: Para crear un tema nuevo de Pub/Sub, ejecuta el siguiente comando:
gcloud pubsub topics create TOPIC_ID
Reemplaza
TOPIC_ID
por un nombre de tema.Crea una suscripción al tema:
gcloud pubsub subscriptions create SUBSCRIPTION_ID --topic=TOPIC_ID
Reemplaza lo siguiente:
SUBSCRIPTION_ID
: El ID de suscripción.TOPIC_ID
: El ID del tema
Para obtener más información sobre cómo configurar Pub/Sub, consulta Administra temas y suscripciones.
Paso 2: Otorga el rol en el tema de Pub/Sub
Para crear un NotificationConfig
, necesitas el rol de administrador de Pub/Sub (roles/pubsub.admin
) en el tema de Pub/Sub para el que creaste una suscripción.
Para otorgar este rol, haz lo siguiente:
Ve a la consola de Google Cloud .
Selecciona el proyecto para el que habilitaste la API de Security Command Center.
Haz clic en Activate Cloud Shell (Activar Cloud Shell).
Otorga el rol requerido a tu Cuenta de Google en el tema de Pub/Sub:
gcloud pubsub topics add-iam-policy-binding \ projects/PUBSUB_PROJECT/topics/TOPIC_ID \ --member="user:GOOGLE_ACCOUNT" \ --role="roles/pubsub.admin"
Reemplaza lo siguiente:
PUBSUB_PROJECT
: El Google Cloud proyecto que contiene tu tema de Pub/SubTOPIC_ID
: El ID del temaGOOGLE_ACCOUNT
: La dirección de correo electrónico de tu Cuenta de Google
Crear una NotificationConfig
Antes de crear un NotificationConfig
, ten en cuenta que cada organización puede tener una cantidad limitada de archivos NotificationConfig
. Para obtener más información, consulta Cuotas y límites.
El NotificationConfig
incluye un campo filter
que limita las notificaciones a eventos útiles. Este campo acepta todos los filtros disponibles en el método findings.list
de la API de Security Command Center.
Cuando creas un NotificationConfig
, especificas un elemento superior para el NotificationConfig
desde la jerarquía de recursos de Google Cloud , ya sea una organización, una carpeta o un proyecto. Si necesitas recuperar, actualizar o borrar el NotificationConfig
más adelante, debes incluir el ID numérico de la organización, la carpeta o el proyecto principal cuando hagas referencia a él.
En la consola de Google Cloud , algunos recursos deNotificationConfig
pueden tener la etiqueta Heredado, que indica que se crearon con la API de Security Command Center v1. Puedes administrar estos recursos de NotificationConfig
con la consola de Google Cloud , la gcloud CLI, la API de Security Command Center v1 o las bibliotecas cliente de Security Command Center v1.
Para administrar estos recursos de NotificationConfig
con gcloud CLI, no debes especificar una ubicación cuando ejecutes el comando de gcloud CLI.
Para crear el objeto NotificationConfig
con el lenguaje o la plataforma que prefieras, haz lo siguiente:
gcloud
gcloud scc notifications create NOTIFICATION_NAME \ --PARENT=PARENT_ID \ --location=LOCATION \ --description="NOTIFICATION_DESCRIPTION" \ --pubsub-topic=PUBSUB_TOPIC \ --filter="FILTER"
Reemplaza lo siguiente:
NOTIFICATION_NAME
: Es el nombre de la notificación. Debe tener entre 1 y 128 caracteres y contener solo caracteres alfanuméricos, guiones bajos o guiones.PARENT
: Es el alcance en la jerarquía de recursos al que se aplica la notificación,organization
,folder
oproject
.PARENT_ID
: Es el ID de la organización, la carpeta o el proyecto principal, especificado en el formatoorganizations/123
,folders/456
oprojects/789
.LOCATION
: La ubicación de Security Command Center en la que se encuentra el recurso. Si la residencia de datos está habilitada, usaeu
,ksa
ous
. De lo contrario, usa el valorglobal
.NOTIFICATION_DESCRIPTION
: Es una descripción de la notificación de no más de 1,024 caracteres.PUBSUB_TOPIC
: Es el tema de Pub/Sub que recibirá las notificaciones. Su formato esprojects/PROJECT_ID/topics/TOPIC
.FILTER
: Es la expresión que defines para seleccionar qué hallazgos se envían a Pub/Sub. Por ejemplo,state=\"ACTIVE\"
Terraform
Sigue estos pasos para crear un NotificationConfig
para una organización:
Crea un NotificationConfig
para una carpeta:
Sigue estos pasos para crear un NotificationConfig
para un proyecto:
Go
Java
Node.js
Python
Las notificaciones ahora se publican en el tema de Pub/Sub que especificaste.
Para publicar notificaciones, se crea una cuenta de servicio para ti con el formato service-org-ORGANIZATION_ID@gcp-sa-scc-notification.iam.gserviceaccount.com
.
Esta cuenta de servicio se crea cuando creas tu primer NotificationConfig
y se te otorga de forma automática el rol securitycenter.notificationServiceAgent
en la política de IAM para PUBSUB_TOPIC cuando creas la configuración de notificación. Esta función de cuenta de servicio es obligatoria para que las notificaciones funcionen.
Otorga acceso al perímetro en los Controles del servicio de VPC
Si usas los Controles del servicio de VPC y tu tema de Pub/Sub forma parte de un proyecto dentro de un perímetro de servicio, debes otorgar acceso a los proyectos para crear notificaciones.
Para otorgar acceso a los proyectos, crea reglas de entrada y salida para las entidades principales y los proyectos que se usan para crear notificaciones. Las reglas permiten el acceso a los recursos protegidos y permiten que Pub/Sub verifique que los usuarios tengan el permiso setIamPolicy
en el tema de Pub/Sub.
Antes de crear una NotificationConfig
Antes de completar los pasos de Crea una NotificationConfig, completa los siguientes pasos.
Console
-
En la Google Cloud consola, ve a la página Controles del servicio de VPC.
- Selecciona tu organización o proyecto.
- Si seleccionaste una organización, haz clic en Selecciona una política de acceso y, luego, selecciona la política de acceso asociada al perímetro que deseas actualizar.
-
Haz clic en el nombre del perímetro que deseas actualizar.
Para encontrar el perímetro de servicio que necesitas modificar, puedes revisar los registros en busca de entradas que muestren incumplimientos de
RESOURCES_NOT_IN_SAME_SERVICE_PERIMETER
. En esas entradas, verifica el camposervicePerimeterName
:accessPolicies/ACCESS_POLICY_ID/servicePerimeters/SERVICE_PERIMETER_NAME
- Haz clic en Editar perímetro.
- Haz clic en Política de salida.
- Haz clic en Agregar una regla de salida.
-
En la sección FROM, configura los siguientes detalles:
- En Identidad, selecciona Seleccionar identidades y grupos.
- Haz clic en Agregar identidades.
-
Ingresa la dirección de correo electrónico de la principal que se usó para llamar a la API de Security Command Center.
- Selecciona el principal o presiona INTRO y, luego, haz clic en Agregar identidades.
-
En la sección PARA, configura los siguientes detalles:
- En Proyecto, selecciona Todos los proyectos.
- En Operaciones o roles de IAM, selecciona Seleccionar operaciones.
-
Haz clic en Agregar operaciones y, luego, agrega las siguientes operaciones:
- Agrega el servicio pubsub.googleapis.com.
- Haz clic en Todos los métodos.
- Haz clic en Agregar todos los métodos.
- Agrega el servicio pubsub.googleapis.com.
- Haz clic en Política de entrada.
- Haz clic en Agregar una regla de entrada.
-
En la sección FROM, configura los siguientes detalles:
- En Identidad, selecciona Seleccionar identidades y grupos.
- Haz clic en Agregar identidades.
-
Ingresa la dirección de correo electrónico de la principal que se usó para llamar a la API de Security Command Center.
- Selecciona el principal o presiona INTRO y, luego, haz clic en Agregar identidades.
- En Fuentes, selecciona Todas las fuentes.
-
En la sección PARA, configura los siguientes detalles:
- En Proyecto, selecciona Seleccionar proyectos.
- Haz clic en Agregar proyectos y, luego, agrega el proyecto que contiene el tema de Pub/Sub.
- En Operaciones o roles de IAM, selecciona Seleccionar operaciones.
-
Haz clic en Agregar operaciones y, luego, agrega las siguientes operaciones:
- Agrega el servicio pubsub.googleapis.com.
- Haz clic en Todos los métodos.
- Haz clic en Agregar todos los métodos.
- Agrega el servicio pubsub.googleapis.com.
- Haz clic en Guardar.
gcloud
-
Si aún no se configuró un proyecto de cuota, configúralo. Elige un proyecto que tenga habilitada la API de Access Context Manager.
gcloud config set billing/quota_project QUOTA_PROJECT_ID
Reemplaza
QUOTA_PROJECT_ID
por el ID del proyecto que deseas usar para la facturación y la cuota. -
Crea un archivo llamado
egress-rule.yaml
con el siguiente contenido:- egressFrom: identities: - PRINCIPAL_ADDRESS egressTo: operations: - serviceName: pubsub.googleapis.com methodSelectors: - method: '*' resources: - '*'
Reemplaza
PRINCIPAL_ADDRESS
por la dirección de la entidad principal que se usa para llamar a la API de Security Command Center. -
Crea un archivo llamado
ingress-rule.yaml
con el siguiente contenido:- ingressFrom: identities: - PRINCIPAL_ADDRESS sources: - accessLevel: '*' ingressTo: operations: - serviceName: pubsub.googleapis.com methodSelectors: - method: '*' resources: - '*'
Reemplaza
PRINCIPAL_ADDRESS
por la dirección de la entidad principal que se usa para llamar a la API de Security Command Center. -
Agrega la regla de salida al perímetro:
gcloud access-context-manager perimeters update PERIMETER_NAME \ --set-egress-policies=egress-rule.yaml
Reemplaza lo siguiente:
-
PERIMETER_NAME
: Es el nombre del perímetro. Por ejemplo,accessPolicies/1234567890/servicePerimeters/example_perimeter
.Para encontrar el perímetro de servicio que necesitas modificar, puedes revisar los registros en busca de entradas que muestren incumplimientos de
RESOURCES_NOT_IN_SAME_SERVICE_PERIMETER
. En esas entradas, verifica el camposervicePerimeterName
:accessPolicies/ACCESS_POLICY_ID/servicePerimeters/SERVICE_PERIMETER_NAME
-
-
Agrega la regla de entrada al perímetro:
gcloud access-context-manager perimeters update PERIMETER_NAME \ --set-ingress-policies=ingress-rule.yaml
Reemplaza lo siguiente:
-
PERIMETER_NAME
: Es el nombre del perímetro. Por ejemplo,accessPolicies/1234567890/servicePerimeters/example_perimeter
.Para encontrar el perímetro de servicio que necesitas modificar, puedes revisar los registros en busca de entradas que muestren incumplimientos de
RESOURCES_NOT_IN_SAME_SERVICE_PERIMETER
. En esas entradas, verifica el camposervicePerimeterName
:accessPolicies/ACCESS_POLICY_ID/servicePerimeters/SERVICE_PERIMETER_NAME
-
Consulta las reglas de entrada y salida para obtener más información.
Crea una regla de entrada para la NotificationConfig
Para crear una regla de entrada para un NotificationConfig
, completa las instrucciones en Crea una NotificationConfig y, luego, completa los siguientes pasos.
Console
-
Vuelve a abrir el perímetro de servicio de la sección anterior.
- Haz clic en Política de entrada.
- Haz clic en Agregar una regla de entrada.
-
En la sección FROM, configura los siguientes detalles:
- En Identidad, selecciona Seleccionar identidades y grupos.
- Haz clic en Agregar identidades.
-
Ingresa la dirección de correo electrónico del agente de servicio de
NotificationConfig
. La dirección del agente de servicio tiene el siguiente formato:service-org-ORGANIZATION_ID@gcp-sa-scc-notification.iam.gserviceaccount.com
Reemplaza
ORGANIZATION_ID
por el ID de tu organización. - Selecciona el agente de servicio o presiona INTRO y, luego, haz clic en Agregar identidades.
- En Fuentes, selecciona Todas las fuentes.
-
En la sección PARA, configura los siguientes detalles:
- En Proyecto, selecciona Seleccionar proyectos.
- Haz clic en Agregar proyectos y, luego, agrega el proyecto que contiene el tema de Pub/Sub.
- En Operaciones o roles de IAM, selecciona Seleccionar operaciones.
-
Haz clic en Agregar operaciones y, luego, agrega las siguientes operaciones:
- Agrega el servicio pubsub.googleapis.com.
- Haz clic en Todos los métodos.
- Haz clic en Agregar todos los métodos.
- Agrega el servicio pubsub.googleapis.com.
- Haz clic en Guardar.
gcloud
-
Si aún no se configuró un proyecto de cuota, configúralo. Elige un proyecto que tenga habilitada la API de Access Context Manager.
gcloud config set billing/quota_project QUOTA_PROJECT_ID
Reemplaza
QUOTA_PROJECT_ID
por el ID del proyecto que deseas usar para la facturación y la cuota. -
Crea un archivo llamado
ingress-rule.yaml
con el siguiente contenido:- ingressFrom: identities: - serviceAccount:service-org-ORGANIZATION_ID@gcp-sa-scc-notification.iam.gserviceaccount.com sources: - accessLevel: '*' ingressTo: operations: - serviceName: pubsub.googleapis.com methodSelectors: - method: '*' resources: - '*'
Reemplaza
ORGANIZATION_ID
por el ID de tu organización. -
Agrega la regla de entrada al perímetro:
gcloud access-context-manager perimeters update PERIMETER_NAME \ --set-ingress-policies=ingress-rule.yaml
Reemplaza lo siguiente:
-
PERIMETER_NAME
: Es el nombre del perímetro. Por ejemplo,accessPolicies/1234567890/servicePerimeters/example_perimeter
.Para encontrar el perímetro de servicio que necesitas modificar, puedes revisar los registros en busca de entradas que muestren incumplimientos de
RESOURCES_NOT_IN_SAME_SERVICE_PERIMETER
. En esas entradas, verifica el camposervicePerimeterName
:accessPolicies/ACCESS_POLICY_ID/servicePerimeters/SERVICE_PERIMETER_NAME
-
Consulta las reglas de entrada y salida para obtener más información.
Los proyectos, los usuarios y las cuentas de servicio seleccionados ahora pueden acceder a los recursos protegidos y crear notificaciones.
Si seguiste todos los pasos de esta guía y las notificaciones funcionan de forma correcta, ahora puedes borrar lo siguiente:
- Es la regla de entrada para la principal.
- La regla de salida para la principal
Esas reglas solo eran necesarias para configurar la NotificationConfig
. Sin embargo, para que las notificaciones continúen funcionando, debes conservar la regla de entrada de la NotificationConfig
, que le permite publicar notificaciones en tu tema de Pub/Sub detrás del perímetro de servicio.
¿Qué sigue?
- Obtén información para habilitar las notificaciones de chat y correo electrónico en tiempo real.
- Obtén más información para administrar la API de Notifications.
- Obtén más información para filtrar notificaciones.