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:
- Crear una
NotificationConfig - Obtén una
NotificationConfig - Actualiza una
NotificationConfig - Borra una
NotificationConfig - Enumera
NotificationConfig - Recibe notificaciones de Pub/Sub
Como alternativa, puedes configurar exportaciones continuas para Pub/Sub en Security Command Center.
Antes de comenzar
Para usar los ejemplos de esta página, debes completar la guía para configurar las notificaciones de hallazgo.
Para ejecutar los siguientes ejemplos, necesitas una función de Identity and Access Management (IAM) con los permisos adecuados:
- Crear
NotificationConfig: Editor de configuraciones de notificación del centro de seguridad (roles/securitycenter.notificationConfigEditor) - Obtener y enumerar
NotificationConfig: Visualizador de configuraciones de notificación del centro de seguridad (roles/securitycenter.notificationConfigViewer) o Editor de configuraciones de notificación del centro de seguridad (roles/securitycenter.notificationConfigEditor) - Actualizar y borrar
NotificationConfig: Editor de configuraciones de notificación del centro de seguridad (roles/securitycenter.notificationConfigEditor)
Para otorgar los roles adecuados a una entidad que accede a una notificationConfig, debes tener uno de los siguientes roles de IAM:
- Administrador de la organización (
roles/resourcemanager.organizationAdmin) - Administrador de IAM de carpeta (
roles/resourcemanager.folderIamAdmin) - Administrador del proyecto de IAM (
roles/resourcemanager.projectIamAdmin)
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.
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 (notificationConfig recursos) 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 ubicación nueva.
Para obtener información sobre cómo usar Security Command Center cuando la residencia de datos está habilitada, consulta Extremos regionales de Security Command Center.
Crea un NotificationConfig
Para crear un NotificationConfig, debes tener lo siguiente:
- Un tema de Pub/Sub existente al que desees enviar notificaciones.
- Roles de IAM obligatorios para la principal que crea la
notificationConfig.
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 una 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 de la Google Cloud jerarquía de recursos, ya sea una
organización, una carpeta o un proyecto. Si necesitas recuperar, actualizar o borrar la NotificationConfig más adelante, debes incluir el ID numérico de la organización, la carpeta o el proyecto superior cuando hagas referencia a ella.
En la Google Cloud consola, algunos NotificationConfig recursos pueden tener una etiqueta Heredado, que indica que se crearon con la versión 1 de la API de Security Command Center. Puedes administrar estos
NotificationConfig recursos con la Google Cloud consola, la gcloud CLI, la versión 1
de la API de Security Command Center o las bibliotecas cliente de la versión 1 para Security Command Center.
Para administrar estos NotificationConfig recursos con la gcloud CLI, no debes especificar una ubicación cuando ejecutes el comando de la gcloud CLI.
Para crear la NotificationConfig con el lenguaje o la plataforma que elijas, 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,folderoproject.PARENT_ID: Es el ID de la organización, la carpeta o el proyecto superior, especificado en el formatoorganizations/123,folders/456oprojects/789.LOCATION: Es la ubicación de Security Command Center en la que se creará unaNotificationConfig. Si la residencia de datos está habilitada, usaeu,sa, 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á notificaciones. Su formato esprojects/PROJECT_ID/topics/TOPIC.FILTER: Es la expresión que defines para seleccionar qué resultados se envían a Pub/Sub. Por ejemplo,state=\"ACTIVE\".
Terraform
Crea una NotificationConfig para una organización:
Crea una NotificationConfig para una carpeta:
Crea una 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 se crea la configuración de notificación. Esta función de cuenta de servicio es obligatoria 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
gcloud scc notifications describe NOTIFICATION_NAME \ --PARENT_TYPE=PARENT_ID \ --location=LOCATION
Reemplaza lo siguiente:
NOTIFICATION_NAME: Es el nombre de la configuración de notificación.PARENT_TYPEEs el nivel de la jerarquía de recursos en el que se especifica la configuración. Usaorganization,folderoproject.PARENT_ID: Es el ID numérico del recurso superior.LOCATION: Es la ubicación de Security Command Center en la que se obtendráNotificationConfig. Si la residencia de datos está habilitada, usaeu,sa, ous. De lo contrario, usa el valorglobal.
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.
Después de otorgar los permisos necesarios, actualiza la descripción, el tema de Pub/Sub y el filtro de NotificationConfig con el lenguaje que prefieras:
gcloud
gcloud scc notifications update NOTIFICATION_NAME \ --PARENT_TYPE=PARENT_ID \ --location=LOCATION \ --description="NOTIFICATION_DESCRIPTION" \ --pubsub-topic=PUBSUB_TOPIC \ --filter="FILTER"
Reemplaza lo siguiente:
NOTIFICATION_NAME: Es el nombre de la configuración de notificación.PARENT_TYPEEs el nivel de la jerarquía de recursos en el que se especifica la configuración. Usaorganization,folderoproject.PARENT_ID: Es el ID numérico del recurso superior.LOCATION: Es la ubicación de Security Command Center en la que se actualizaráNotificationConfig. Si la residencia de datos está habilitada, usaeu,sa, 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á notificaciones. Su formato esprojects/PROJECT_ID/topics/TOPIC.FILTER: Es la expresión que defines para seleccionar qué resultados se envían a Pub/Sub. Por ejemplo,state="ACTIVE".
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
gcloud scc notifications delete NOTIFICATION_NAME \ --PARENT_TYPE=PARENT_ID \ --location=LOCATION
Reemplaza lo siguiente:
NOTIFICATION_NAME: Es el nombre de la configuración de notificación.PARENT_TYPEEs el nivel de la jerarquía de recursos en el que se especifica la configuración. Usaorganization,folderoproject.PARENT_ID: Es el ID numérico del recurso superior.LOCATION: Es la ubicación de Security Command Center en la que se borraráNotificationConfig. Si la residencia de datos está habilitada, usaeu,sa, ous. De lo contrario, usa el valorglobal.
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
gcloud scc notifications list PARENT_TYPE/PARENT_ID \ --location=LOCATION
Reemplaza lo siguiente:
PARENT_TYPEEs el nivel de la jerarquía de recursos en el que se especifica la configuración. Usaorganizations,foldersoprojects.PARENT_ID: Es el ID numérico del recurso superior.LOCATION: Es la ubicación de Security Command Center en la que se enumerarán los recursosNotificationConfig. Si la residencia de datos está habilitada, usaeu,saous. De lo contrario, usa el valorglobal.
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 hallazgo.
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
Gcloud CLI no admite la conversión de un mensaje de Pub/Sub a NotificationMessage. Puedes usar gcloud CLI 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
Reemplaza lo siguiente:
- PROJECT_ID por el ID del proyecto
- SUBSCRIPTION_ID por tu ID de suscripción.
Go
¿Qué sigue?
- Aprende a filtrar notificaciones.