En esta página, se describe cómo usar la función de notificaciones de la API de Security Command Center, incluidos los siguientes ejemplos:
- Crea una
NotificationConfig
- Obtén una
NotificationConfig
- Actualiza una
NotificationConfig
- Borra una
NotificationConfig
- Enumera
NotificationConfig
- Recibe notificaciones de Pub/Sub
Antes de comenzar
Para usar los ejemplos de esta página, debes completar la guía Configura la búsqueda de notificaciones.
Para ejecutar los siguientes ejemplos, necesitas una función de administración de identidades y accesos (IAM) con los permisos adecuados:
- Obtener y enumerar
NotificationConfig
: Visualizador o editor de notificaciones del centro de seguridad - Actualizar y borrar
NotificationConfig
: Editor de notificaciones del centro de seguridad
Obtén más información sobre las funciones de Security Command Center.
Crea una NotificationConfig
Para crear un NotificationConfig
, debes tener lo siguiente:
- Un tema de Pub/Sub existente al que desees enviar notificaciones.
- Funciones de IAM obligatorias para la cuenta de servicio o la cuenta que usas a fin de ejecutar los comandos de la herramienta de
gcloud
Para obtener más información, consulta el paso Configura un tema de Pub/Sub de la guía Configura las notificaciones de búsqueda.
Antes de crear un NotificationConfig
, ten en cuenta la siguiente información:
- Cada organización puede tener una cantidad limitada de archivos
NotificationConfig
. Para obtener más información, consulta Cuotas y límites. - Debes tener la función de IAM Administrador de la organización para que puedas otorgar las funciones adecuadas a la cuenta de servicio de notificaciones o a la cuenta de la herramienta de
gcloud
.
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.
Para otorgar a la cuenta la función de IAM de Editor de configuraciones de notificaciones del centro de seguridad mediante la herramienta de línea de comandos de gcloud
, haz lo siguiente:
Establece las variables de entorno:
Establece el nombre de la organización:
export ORGANIZATION_ID=organization-id
Configura el correo electrónico de la cuenta de servicio que creaste cuando configuraste la búsqueda de notificaciones o la cuenta que usas para ejecutar los comandos de la herramienta de
gcloud
:Configura el correo electrónico de la cuenta que se usa para ejecutar los comandos de la herramienta de
gcloud
:export EMAIL=your-username@email.com
O bien, configura el correo electrónico de la cuenta de servicio:
export EMAIL=service-account-name@$CONSUMER_PROJECT.iam.gserviceaccount.com
Otorga la función necesaria a la cuenta de servicio o a la cuenta que usaste con los comandos de la herramienta de
gcloud
:Otorga la función a la cuenta que se usó para ejecutar los comandos de la herramienta de
gcloud
:gcloud organizations add-iam-policy-binding \ $ORGANIZATION_ID \ --member="user:$EMAIL" \ --role='roles/securitycenter.notificationConfigEditor'
O bien, otorga la función a la cuenta de servicio:
gcloud organizations add-iam-policy-binding \ $ORGANIZATION_ID \ --member="serviceAccount:$EMAIL" \ --role='roles/securitycenter.notificationConfigEditor'
Después de otorgar la cuenta de servicio o los permisos de la cuenta de la herramienta de gcloud
, crea la NotificationConfig
con el lenguaje o la plataforma que prefieras:
gcloud
# The numeric ID of the organization
ORGANIZATION_ID=organization-id
# The topic to which the notifications are published
PUBSUB_TOPIC="projects/project-id/topics/topic-id"
# The description for the NotificationConfig
DESCRIPTION="Notifies for active findings"
# Filters for active findings
FILTER="state=\"ACTIVE\""
gcloud scc notifications create notification-name \
--organization "$ORGANIZATION_ID" \
--description "$DESCRIPTION" \
--pubsub-topic $PUBSUB_TOPIC \
--filter "$FILTER"
Python
Java
Go
Node.js
PHP
Ruby
C#
Las notificaciones ahora se publican en el tema de Pub/Sub que especificaste. Para publicar notificaciones, Security Command Center usa una cuenta de servicio a nivel de la organización con el formato service-org-organization-id@gcp-sa-scc-notification.iam.gserviceaccount.com
con la función securitycenter.notificationServiceAgent
. Esta función de cuenta de servicio a nivel de la organización es necesaria para que las notificaciones funcionen.
Obtén una NotificationConfig
Para obtener una NotificationConfig
, debes tener una función de IAM que incluya el permiso securitycenter.notification.get
.
gcloud
# The numeric ID of the organization and the name of the notification that you want to get
NOTIFICATION="organizations/organization-id/notificationConfigs/notification-name"
gcloud scc notifications describe $NOTIFICATION
Python
Java
Go
Node.js
PHP
Ruby
C#
Actualiza una NotificationConfig
Para actualizar una NotificationConfig
, debes tener una función de IAM que incluya el permiso securitycenter.notification.update
.
Cuando actualizas con una máscara de campo, solo se actualizan los campos que especificas. Si no usas una máscara de campo, todos los campos mutables de NotificationConfig
se reemplazan por los valores nuevos. Puedes usar una máscara de campo para actualizar el tema y la descripción de Pub/Sub.
Para completar este ejemplo, debes suscribirte al tema nuevo y tu cuenta de servicio de notificaciones debe tener el permiso pubsub.topics.setIamPolicy
en el tema. Para otorgar una función adecuada, sigue estos pasos:
Establece las variables de entorno:
Configura el ID del tema:
export TOPIC_ID=topic-id
Configura el ID del proyecto para el proyecto en el que habilitaste la API de notificaciones:
export CONSUMER_PROJECT=project-id
Configura el correo electrónico de la cuenta de servicio que creaste en los pasos anteriores:
export SERVICE_ACCOUNT_EMAIL=service-account-name@$CONSUMER_PROJECT.iam.gserviceaccount.com
Otorga a la cuenta de servicio de notificaciones una función con el permiso
pubsub.topics.setIamPolicy
:gcloud pubsub topics add-iam-policy-binding \ projects/$CONSUMER_PROJECT/topics/$TOPIC_ID \ --member="serviceAccount:$SERVICE_ACCOUNT_EMAIL" \ --role='roles/pubsub.admin'
Después de otorgar la función de cuenta de servicio, actualiza la descripción NotificationConfig
y el tema de Pub/Sub con el lenguaje que prefieras:
gcloud
# The topic to which the notifications are published
PUBSUB_TOPIC="projects/project-id/topics/topic-id"
# The description for the NotificationConfig
DESCRIPTION="description"
# The numeric ID of the organization and the name of the notification that you want to update
NOTIFICATION="organizations/organization-id/notificationConfigs/notification-name"
gcloud scc notifications update $NOTIFICATION
--description "$DESCRIPTION" \
--pubsub-topic $PUBSUB_TOPIC \
--filter $FILTER
Python
Java
Go
Node.js
PHP
Ruby
C#
Borra una NotificationConfig
Para borrar una NotificationConfig
, debes tener una función de IAM que incluya el permiso securitycenter.notification.delete
.
Cuando borras una NotificationConfig
, la función securitycenter.notificationServiceAgent
permanece en el tema de Pub/Sub. Si no usas el tema de Pub/Sub en ningún otro NotificationConfig
, quita la función del tema. Para obtener más información, consulta control de acceso.
Borra un NotificationConfig
con el lenguaje que elijas:
gcloud
# The numeric ID of the organization and the name of the notification that you want to delete
NOTIFICATION="organizations/organization-id/notificationConfigs/notification-name"
gcloud scc notifications delete $NOTIFICATION
Python
Java
Go
Node.js
PHP
Ruby
C#
Enumera NotificationConfigs
Para enumerar NotificationConfigs
, debes tener una función de IAM que incluya el permiso securitycenter.notification.list
.
Se paginan todas las listas de la API de Security Command Center. Cada respuesta muestra una página de resultados y un token para mostrar la página siguiente. El valor predeterminado pageSize
es 10. Puedes configurar el tamaño de la página a un mínimo de 1 y un máximo de 1,000.
Enumera NotificationConfigs
con el lenguaje que elijas:
gcloud
# The numeric ID of the organization
ORGANIZATION=organization-id
gcloud scc notifications list $ORGANIZATION
Python
Java
Go
Node.js
PHP
Ruby
C#
Recibe notificaciones de Pub/Sub
En esta sección, se proporciona un mensaje de notificación de muestra y ejemplos que muestran cómo convertir un mensaje de Pub/Sub en una NotificationMessage
que contiene un resultado.
Las notificaciones se publican en Pub/Sub en formato JSON
.
A continuación, se incluye un ejemplo de un mensaje de notificación:
{
"notificationConfigName": "organizations/organization-id/notificationConfigs/config-id",
"finding": {
"name": "organizations/organization-id/sources/source-id/findings/finding-id",
"parent": "organizations/organization-id/sources/source-id",
"state": "ACTIVE",
"category": "TEST-CATEGORY",
"securityMarks": {
"name": "organizations/organization-id/sources/source-id/findings/finding-id/securityMarks"
},
"eventTime": "2019-07-26T07:32:37Z",
"createTime": "2019-07-29T18:45:27.243Z"
}
}
Convierte un mensaje de Pub/Sub en un NotificationMessage
con el lenguaje que elijas:
gcloud
La herramienta de gcloud
no admite la conversión de un mensaje de Pub/Sub a NotificationMessage
. Puedes usar la herramienta de gcloud
para obtener un NotificationMessage
y, luego, imprimir el JSON
directamente en tu terminal:
# The subscription used to receive published messages from a topic
PUBSUB_SUBSCRIPTION="projects/project-id/subscriptions/subscription-id"
gcloud pubsub subscriptions pull $PUBSUB_SUBSCRIPTION
Python
Java
Go
Node.js
¿Qué sigue?
- Aprende a filtrar notificaciones.