Visão geral
O Security Command Center fornece notificações em tempo real das descobertas no consoleGoogle Cloud . Este guia descreve como usar os serviços do Google Cloud e APIs de terceiros para estender essa funcionalidade e receber notificações quase em tempo real no Slack. Ao concluir o guia, você recebe alertas sobre novas descobertas em serviços de terceiros configurados sem fazer login no console do Google Cloud , o que permite uma triagem mais rápida de vulnerabilidades e ameaças. Saiba mais sobre os diferentes tipos de vulnerabilidades e ameaças no Security Command Center.
Topologia
Neste guia, você criará a configuração ilustrada no diagrama a seguir.
Objetivos
Neste guia, você:
- Configurar um tópico do Pub/Sub
- Configure o Slack.
- Escrever código no Cloud Run functions.
- Configure o Pub/Sub e as funções do Cloud Run para enviar notificações ao Slack sempre que uma nova descoberta de gravidade alta ou crítica for gravada no Security Command Center.
- Resolver problemas de notificação.
Custos
Neste tutorial, usamos componentes faturáveis do Google Cloud, incluindo:
- Pub/Sub
- Cloud Run functions
- Cloud Build
Use a calculadora de preços para gerar uma estimativa de custo com base na projeção de uso.
Antes de começar
Para concluir este guia, você precisa ter os seguintes papéis de gerenciamento de identidade e acesso (IAM):
- Administrador da organização (
roles/resourcemanager.organizationAdmin) - Administrador da Central de segurança (
roles/securitycenter.admin) - Administrador de segurança (
roles/iam.securityAdmin) - Um papel com a permissão
serviceusage.services.use, como proprietário (roles/owner), editor (roles/editor) ou um papel personalizado - Criar contas de serviço (
roles/iam.serviceAccountCreator) - Editor do Pub/Sub (
roles/pubsub.editor) - Administrador da conta de faturamento (
roles/billing.admin)
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.
Como configurar um projeto
Conclua as etapas a seguir para criar ou selecionar um projeto.
- Faça login na sua conta do Google Cloud . Se você começou a usar o Google Cloudagora, crie uma conta para avaliar o desempenho dos nossos produtos em situações reais. Clientes novos também recebem US $300 em créditos para executar, testar e implantar cargas de trabalho.
-
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
Tempo estimado: leva aproximadamente uma hora para configurar e testar notificações de um único serviço.
Como configurar um tópico do Pub/Sub
O Pub/Sub é um serviço de mensagens em tempo real que permite que as mensagens sejam enviadas e recebidas entre aplicativos independentes. Saiba mais sobre o Pub/Sub.
Nesta seção, você configura o Security Command Center para publicar descobertas em um tópico do Pub/Sub.
Para configurar e inscrever-se em um tópico do Pub/Sub, faça o seguinte:
Especifique o projeto do Google Cloud em uma variável de ambiente.
export PROJECT_ID=PROJECT_IDSubstitua PROJECT_ID pelo ID do projeto.
Especifique sua Google Cloud organização em uma variável de ambiente.
export ORG_ID=ORG_IDSubstitua ORG_ID pelo ID da organização.
Defina o ID do projeto para os comandos
gcloud.gcloud config set project PROJECT_IDCrie o tópico do Pub/Sub em que as notificações são publicadas.
gcloud pubsub topics create scc-critical-and-high-severity-findings-topicEspecifique o tópico em uma variável de ambiente.
export TOPIC=projects/$PROJECT_ID/topics/scc-critical-and-high-severity-findings-topicCrie a assinatura que notifica as funções do Cloud Run para enviar uma mensagem de chat quando as mensagens são publicadas no tópico.
gcloud pubsub subscriptions create scc-critical-and-high-severity-findings-sub \ --topic scc-critical-and-high-severity-findings-topicConfigure o Security Command Center para publicar notificações no tópico. Qualquer filtro compatível com a API ListFindings pode ser usado.
O filtro a seguir publica notificações para descobertas ativas de gravidade alta e crítica no local
global. Saiba mais sobre como filtrar descobertas.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-enabledAdicione a flag
--deletion-notifications-enabledpara receber notificações sobre eventos de exclusão de descobertas devido a políticas de retenção. A notificação contém o campodeletedFinding: truedefinido. Verifique se as funções ou o aplicativo do Cloud Run analisam o atributodeletedFindingpara que os alertas reflitam corretamente as exclusões de descobertas. Para desativar as notificações de exclusão, atualize oNotificationConfige defina a flag--no-deletion-notifications-enabled.
Em seguida, crie ou configure seu app de chat para receber notificações do Pub/Sub.
Como configurar um app de mensagens
Esta seção descreve como usar o Pub/Sub e as funções do Cloud Run ou do Cloud Run functions (1ª geração) para ativar notificações quase em tempo real no Slack.
Para enviar notificações a um canal do Slack, faça o seguinte:
- Crie um novo aplicativo Slack com privilégios suficientes para postar mensagens em um canal público do Slack.
- Crie e implante uma função do Cloud Run que poste mensagens de chat no Slack quando notificações forem recebidas do Pub/Sub.
Crie um novo aplicativo do Slack
Nesta seção, você cria um novo aplicativo do Slack para receber notificações.
- Acesse Apps da API Slack. A página é aberta em uma nova guia.
Faça login ou Crie uma conta.
Selecione Criar um app.
Defina o Nome do app como SCC Finding Notifier.
Selecione o Espaço de trabalho do Slack em desenvolvimento em que você quer que o bot do Slack publique mensagens e clique em Criar aplicativo.
No painel de navegação, selecione OAuth e permissões.
Navegue até a seção Escopos. Os escopos se dividem em duas categorias:
- Escopos do token do bot
- Escopos do token do usuário
Para este exercício, não é necessário adicionar um escopo de token de usuário. Em "Bot Token Scopes", clique em Add a OAuth Scope e digite:
chat:writechat:write.public
Acesse a parte de cima da página OAuth e permissões e clique em Instalar app no Workspace.
Na caixa de diálogo de confirmação, clique em Permitir.
Copie o Token de acesso do OAuth do usuário de bot para usá-lo na Função do Cloud.
Em seguida, implante uma função do Cloud Run para enviar notificações a um grupo do Slack.
Criar a função do Cloud Run do Slack
Nesta seção, você implantará uma função para enviar notificações à sua conta do Slack. O exemplo de código nesta seção é escrito em Python, mas é possível usar qualquer linguagem compatível com as funções do Cloud Run.
No console do Google Cloud , acesse a página Serviços das funções do Cloud Run.
Selecione o ID do projeto que contém o tópico do Pub/Sub.
Clique em Escrever uma função e preencha os campos:
- Em Nome do serviço, insira
slack-chat-high-and-critical-findings. - Em Região, selecione onde você quer armazenar o serviço.
- Em Ambiente de execução, selecione a versão do Python que será usada para executar a função.
- Em Nome do serviço, insira
Clique em Adicionar gatilho e selecione Gatilho do Pub/Sub.
Insira os detalhes do tópico do Pub/Sub que você criou em Configurar um tópico do Pub/Sub e clique em Salvar gatilho.
Clique em Criar. Os detalhes do serviço são exibidos.
No painel Origem da guia Origem, clique em requirements.txt.
No editor de código, adicione
requestsefunctions-framework==3.*:requests functions-framework==3.*No painel Origem, clique em main.py.
No editor de código, substitua o código pelo seguinte:
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." })Substitua:
BOT_ACCESS_TOKEN: o token de acesso OAuth do usuário do bot que você criou com o app Slack.SLACK_CHANNEL_NAME: o canal do Slack em que você quer enviar as notificações.
No campo Ponto de entrada da função, insira o nome da função no exemplo de código:
send_slack_chat_notification.Clique em Salvar e reimplantar. Se uma marca de seleção verde aparecer ao lado do nome da função, ela foi implantada com sucesso. Esse processo pode levar alguns minutos.
Se as etapas anteriores foram concluídas sem erros, a configuração está concluída e você vai começar a receber notificações. Observações importantes:
- Você recebe uma mensagem de chat separada para cada descoberta crítica ou de alta gravidade. A frequência ou o número de notificações depende dos recursos dentro da organização.
- As notificações são publicadas e enviadas quase em tempo real. No entanto, a imediatez das mensagens não é garantida, e vários fatores podem causar atrasos, incluindo problemas com o Slack.
Para alterar o fluxo de trabalho de notificações, faça o seguinte:
- Atualize sua função do Cloud Run para mudar os destinatários.
- Altere quais descobertas acionam as notificações atualizando o filtro do tópico do Pub/Sub.
Notificações de teste
Para testar se as notificações estão configuradas corretamente, siga estas instruções para alternar as descobertas de alta gravidade entre estados ativos e inativos.
- Acesse a página Descobertas do Security Command Center.
Acessar a página "Descobertas" - Selecione sua organização, se solicitado.
- No painel Filtros rápidos, acesse a seção Gravidade e selecione Alta ou Crítica. O painel Resultados da consulta de descobertas é atualizado para mostrar descobertas apenas da gravidade selecionada.
- No painel Resultados da consulta de descobertas, selecione uma descoberta marcando a caixa ao lado do nome dela.
- No menu Alterar estado ativo na barra de ações Resultados da consulta de descobertas, selecione Inativas. Se a consulta de descobertas atual mostrar apenas descobertas ativas, a descoberta será removida dos resultados da consulta.
- No painel Filtros rápidos, acesse a seção Estado e mude as seleções para que apenas Inativo seja selecionado. O painel Resultados da consulta de descobertas é atualizado para mostrar apenas descobertas inativas.
- No painel Resultados da consulta de descobertas, selecione a descoberta que você marcou como inativa.
- No menu Alterar estado ativo na barra de ações Resultados da consulta de descobertas, selecione Ativas.
- Confira suas mensagens do Slack. Uma mensagem semelhante à imagem a seguir será exibida:

Solução de problemas
Se as mensagens de chat não estiverem sendo enviadas ou recebidas, siga estas etapas para identificar e resolver possíveis problemas.
Verifique os registros do Stackdriver da função do Cloud Run para determinar se ela está sendo invocada. Se ele não estiver sendo invocado, verifique se as notificações estão configuradas corretamente.
Se a função do Cloud Run estiver sendo invocada, ela poderá falhar. Verifique se há erros nas funções do Cloud Run usando o Error Reporting do consoleGoogle Cloud .
Limpar
Para evitar cobranças na sua conta do Google Cloud pelos recursos usados neste tutorial, exclua o projeto que os contém ou mantenha o projeto e exclua os recursos individuais.
Excluir o projeto
- No console Google Cloud , acesse a página Gerenciar recursos.
- Na lista de projetos, selecione o projeto que você quer excluir e clique em Excluir .
- Na caixa de diálogo, digite o ID do projeto e clique em Encerrar para excluí-lo.
Como excluir recursos individuais
Exclua a configuração de notificação:
gcloud scc notifications delete scc-critical-high-severity \ --organization=ORG_ID \ --location=globalSubstitua ORG_ID pelo ID da organização.
Para manter sua configuração e pausar temporariamente as notificações, adicione um comentário às chamadas
sendoupostna sua função do Cloud Run.Exclua a função do Cloud Run:
- Acesse as funções do Cloud Run.
Acessar as funções do Cloud Run - Clique na caixa de seleção ao lado do objeto a ser excluído.
- Clique em Excluir .
- Acesse as funções do Cloud Run.
Exclua a conta de serviço:
- Acessar a página Contas de serviço.
Acessar a página Contas de serviço - Selecione um projeto.
- Selecione a conta de serviço que você quer excluir e clique em Excluir .
- Acessar a página Contas de serviço.
A seguir
- Leia mais sobre erros de notificação.
- Saiba como filtrar notificações.
- Saiba como corrigir descobertas do Web Security Scanner e da Análise de integridade da segurança.