Nesta página, você verá como usar o recurso de notificações da API Security Command Center, incluindo os exemplos a seguir:
- Criar um
NotificationConfig - Receber um
NotificationConfig - Atualizar um
NotificationConfig - Excluir um
NotificationConfig - Listar
NotificationConfig - Receber notificações do Pub/Sub
Como alternativa, é possível configurar exportações contínuas para o Pub/Sub no Security Command Center.
Antes de começar
Para usar os exemplos nesta página, conclua o guia para configurar notificações de descoberta.
Para executar os exemplos a seguir, você precisa de um papel de Gerenciamento de identidade e acesso (IAM, na sigla em inglês) com as permissões apropriadas:
- Criar
NotificationConfig: editor de configurações de notificação da Central de segurança (roles/securitycenter.notificationConfigEditor) - Receber e listar
NotificationConfig: visualizador de configurações de notificação da Central de segurança (roles/securitycenter.notificationConfigViewer) ou editor de configurações de notificação da Central de segurança (roles/securitycenter.notificationConfigEditor) - Atualizar e excluir
NotificationConfig: Editor de notificações da Central de segurança (roles/securitycenter.notificationConfigEditor)
Para conceder os papéis apropriados a um principal que acesse um notificationConfig,
é preciso ter um dos seguintes papéis do IAM:
- Administrador da organização (
roles/resourcemanager.organizationAdmin) - Administrador de pastas do IAM (
roles/resourcemanager.folderIamAdmin) - Administrador de IAM do projeto (
roles/resourcemanager.projectIamAdmin)
Os papéis do IAM para o Security Command Center podem ser concedidos no nível da organização, da pasta ou do projeto. A capacidade de ver, editar, criar ou atualizar descobertas, recursos e fontes de segurança depende do nível a que você tem acesso. Para saber mais sobre os papéis do Security Command Center, consulte Controle de acesso.
Residência de dados e notificações
Se a residência de dados estiver ativada para o Security Command Center, as configurações que definem exportações contínuas para o Pub/Sub (recursos notificationConfig) estarão sujeitas ao controle de residência de dados e serão armazenadas no local do Security Command Center.
Para exportar descobertas de um local do Security Command Center para o Pub/Sub, configure a exportação contínua no mesmo local do Security Command Center das descobertas.
Como os filtros usados em exportações contínuas podem conter dados sujeitos a controles de residência, especifique o local correto antes de criá-los. O Security Command Center não restringe o local em que você cria as exportações.
As exportações contínuas são armazenadas apenas no local em que foram criadas e não podem ser visualizadas ou editadas em outros locais.
Depois de criar uma exportação contínua, não é possível mudar o local dela. Para mudar o local, exclua a exportação contínua e recrie-a no novo local.
Para saber como usar o Security Command Center quando a residência de dados está ativada, consulte Endpoints regionais do Security Command Center.
Como criar um NotificationConfig
Para criar um NotificationConfig, você precisa ter:
- um tópico do Pub/Sub para onde você quer enviar notificações;
- Papéis do IAM necessários para o principal que cria o
notificationConfig.
Para mais informações, consulte a etapa para configurar um tópico do Pub/Sub no guia para configurar notificações de localização.
Antes de criar um NotificationConfig, observe que cada organização pode ter um número limitado de recursos NotificationConfig. Para mais informações, consulte Cotas e limites.
O NotificationConfig inclui um campo filter, que limita as notificações a eventos úteis. Esse campo aceita todos os filtros disponíveis no método
findings.list da API Security Command Center.
Ao criar um NotificationConfig, você especifica um pai para o
NotificationConfig da hierarquia de recursos do Google Cloud , seja uma
organização, uma pasta ou um projeto. Se for necessário recuperar, atualizar ou excluir
o NotificationConfig depois, inclua o ID numérico da
organização, pasta ou projeto pai ao fazer referência a ele.
Para criar o NotificationConfig usando o idioma ou a plataforma de sua
escolha:
gcloud
gcloud scc notifications create NOTIFICATION_NAME \ --PARENT=PARENT_ID \ --location=LOCATION \ --description="NOTIFICATION_DESCRIPTION" \ --pubsub-topic=PUBSUB_TOPIC \ --filter="FILTER" \ --deletion-notifications-enabled
Substitua:
NOTIFICATION_NAME: o nome da notificação. Precisa ter entre 1 e 128 caracteres e conter apenas caracteres alfanuméricos, sublinhados ou hifens.PARENT: o escopo na hierarquia de recursos a que a notificação se aplica,organization,folderouproject.PARENT_ID: o ID da organização, pasta ou projeto principal, especificado no formatoorganizations/123,folders/456ouprojects/789.LOCATION: o local do Security Command Center em que umNotificationConfigserá criado. Se a residência de dados estiver ativada, useeu,saouus. Caso contrário, use o valorglobal.NOTIFICATION_DESCRIPTION: uma descrição da notificação de no máximo 1.024 caracteres.PUBSUB_TOPIC: o tópico do Pub/Sub que vai receber notificações. O formato éprojects/PROJECT_ID/topics/TOPIC.FILTER: a expressão que você define para selecionar quais descobertas serão enviadas ao Pub/Sub. Por exemplo,state=\"ACTIVE\".
Use as flags a seguir para configurar se você quer receber notificações sobre descobertas excluídas. Por padrão, as descobertas excluídas não são exportadas.
--deletion-notifications-enabled: ativa as notificações para descobertas excluídas devido a políticas de retenção de dados. Quando definido, as notificações são acionadas quando uma descoberta é excluída. A notificação inclui o atributodeletedFindingdefinido comotrue.--no-deletion-notifications-enabled: desativa as notificações para descobertas excluídas devido a políticas de retenção de dados.
Terraform
Crie um NotificationConfig para uma organização:
Crie um NotificationConfig para uma pasta:
Crie um NotificationConfig para um projeto:
Go
Java
Node.js
Python
Agora, as notificações são publicadas no tópico Pub/Sub que você especificou.
Para publicar notificações, uma conta de serviço é criada para você na forma de
service-org-ORGANIZATION_ID@gcp-sa-scc-notification.iam.gserviceaccount.com.
Essa conta de serviço é criada quando você cria seu primeiro NotificationConfig
e recebe automaticamente o papel securitycenter.notificationServiceAgent
na política do IAM para PUBSUB_TOPIC ao criar a
configuração de notificação. Esse papel de conta de serviço é necessário para que as notificações
funcionem.
Como receber uma NotificationConfig
Para acessar um NotificationConfig, você precisa ter um papel do IAM
que inclua a permissão securitycenter.notification.get.
gcloud
gcloud scc notifications describe NOTIFICATION_NAME \ --PARENT_TYPE=PARENT_ID \ --location=LOCATION
Substitua:
NOTIFICATION_NAME: o nome da configuração de notificação.PARENT_TYPE: o nível da hierarquia de recursos em que a configuração é especificada. Useorganization,folderouproject.PARENT_ID: o ID numérico do recurso pai.LOCATION: o local do Security Command Center em que oNotificationConfigserá buscado. Se a residência de dados estiver ativada, useeu,saouus. Caso contrário, use o valorglobal.
Como atualizar um NotificationConfig
Para atualizar um NotificationConfig, você precisa ter um papel de IAM
que inclua a permissão securitycenter.notification.update.
Quando você faz a atualização usando uma máscara de campo, somente os campos especificados são atualizados. Se
você não usar uma máscara de campo, todos os campos mutáveis no NotificationConfig serão
substituídos pelos novos valores. Você pode usar uma máscara de campo para atualizar o
tópico e a descrição do Pub/Sub.
Para concluir este exemplo, você precisa estar inscrito no novo tópico e sua
conta de serviço de notificações precisa ter a permissão pubsub.topics.setIamPolicy
no tópico.
Depois de conceder as permissões necessárias, atualize a descrição de NotificationConfig, o tópico do Pub/Sub e o filtro:
gcloud
gcloud scc notifications update NOTIFICATION_NAME \ --PARENT_TYPE=PARENT_ID \ --location=LOCATION \ --description="NOTIFICATION_DESCRIPTION" \ --pubsub-topic=PUBSUB_TOPIC \ --filter="FILTER" \ --deletion-notifications-enabled
Substitua:
NOTIFICATION_NAME: o nome da configuração de notificação.PARENT_TYPEo nível da hierarquia de recursos em que a configuração é especificada. Useorganization,folderouproject.PARENT_ID: o ID numérico do recurso pai.LOCATION: o local do Security Command Center em que oNotificationConfigserá atualizado. Se a residência de dados estiver ativada, useeu,saouus. Caso contrário, use o valorglobal.NOTIFICATION_DESCRIPTION: uma descrição da notificação de no máximo 1.024 caracteres.PUBSUB_TOPIC: o tópico do Pub/Sub que vai receber notificações. O formato éprojects/PROJECT_ID/topics/TOPIC.FILTER: a expressão definida para selecionar quais descobertas serão enviadas ao Pub/Sub. Por exemplo,state="ACTIVE".
Use as flags a seguir para configurar se você quer receber notificações sobre descobertas excluídas. Se você não especificar nenhuma das flags, o comportamento padrão será não exportar descobertas excluídas.
--deletion-notifications-enabled: ative as notificações para descobertas excluídas devido a políticas de retenção. Quando ativadas, as descobertas excluídas são exportadas para o Pub/Sub comdeleted_finding = true. Essa flag se aplica apenas a eventos de exclusão futuros. As descobertas excluídas antes de ativar essa flag não são exportadas retroativamente.--no-deletion-notifications-enabled: desative as notificações para descobertas excluídas.
Como excluir uma NotificationConfig
Para excluir um NotificationConfig, você precisa ter um papel do IAM
que inclua a permissão securitycenter.notification.delete.
Quando você exclui um NotificationConfig, o
papel securitycenter.notificationServiceAgent permanece no
tópico do Pub/Sub. Se você não estiver usando o tópico Pub/Sub
em qualquer outro NotificationConfig, remova o papel do tópico. Para mais
informações, consulte controle de acesso.
gcloud
gcloud scc notifications delete NOTIFICATION_NAME \ --PARENT_TYPE=PARENT_ID \ --location=LOCATION
Substitua:
NOTIFICATION_NAME: o nome da configuração de notificação.PARENT_TYPEo nível da hierarquia de recursos em que a configuração é especificada. Useorganization,folderouproject.PARENT_ID: o ID numérico do recurso pai.LOCATION: o local do Security Command Center em que oNotificationConfigserá excluído. Se a residência de dados estiver ativada, useeu,saouus. Caso contrário, use o valorglobal.
Como listar NotificationConfigs
Para listar NotificationConfigs, você precisa ter um papel do IAM que
inclua a permissão securitycenter.notification.list.
Todas as listas da API Security Command Center são paginadas. Cada resposta retorna uma página de
resultados e um token para retornar a próxima página. O padrão pageSize é 10. Você
pode configurar o tamanho da página para um mínimo de 1 e um máximo de 1.000.
gcloud
gcloud scc notifications list PARENT_TYPE/PARENT_ID \ --location=LOCATION
Substitua:
PARENT_TYPEo nível da hierarquia de recursos em que a configuração é especificada. Useorganizations,foldersouprojects.PARENT_ID: o ID numérico do recurso pai.LOCATION: o local do Security Command Center em que listar os recursosNotificationConfig. Se a residência de dados estiver ativada, useeu,saouus. Caso contrário, use o valorglobal.
Como receber notificações do Pub/Sub
Nesta seção, apresentamos um exemplo de mensagem de notificação e exemplos que mostram como
converter uma mensagem do Pub/Sub em um NotificationMessage que
contém uma descoberta.
As notificações são publicadas no Pub/Sub no formato JSON.
Veja abaixo um exemplo de mensagem de notificação:
{
"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"
},
"deletedFinding": true
}
O Security Command Center exclui descobertas periodicamente com base nas políticas de retenção de dados. É possível configurar se o Security Command Center exporta um snapshot de descobertas excluídas para o Pub/Sub.
Você ativa as notificações de exclusão ao criar ou atualizar uma configuração de exportação. Quando as notificações de exclusão estão ativadas na configuração de exportação, o Security Command Center envia um snapshot das descobertas excluídas para o Pub/Sub.
A notificação tem o campo "deletedFinding": true definido no payload. O estado da descoberta antes da exclusão (por exemplo,
"state": "ACTIVE") é preservado no payload, e eventTime é definido como o
horário em que a descoberta foi excluída no Security Command Center.
Quando você modifica a opção de notificação de exclusão em uma configuração de exportação, a mudança se aplica apenas a exclusões futuras de descobertas. As descobertas excluídas antes de ativar a opção não são exportadas retroativamente.
Converta uma mensagem do Pub/Sub em um NotificationMessage usando
a linguagem de sua escolha:
gcloud
A CCLI gcloud não é compatível com a conversão de uma mensagem do
Pub/Sub em NotificationMessage. É possível usar a CLI gcloud para
receber um NotificationMessage e imprimir o JSON diretamente no 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
Substitua:
- PROJECT_ID com o ID do projeto.
- SUBSCRIPTION_ID pelo ID da sua assinatura.
Go
A seguir
- Saiba como filtrar notificações.