Coletar registros de atividade de alertas do Google Cloud Monitoring
Este documento explica como ingerir registros do Cloud Logging relacionados à atividade de alertas do Cloud Monitoring no Google Security Operations usando o Google Cloud Storage V2.
O Cloud Monitoring oferece recursos de alerta para recursos do Google Cloud. As políticas de alertas baseadas em registros notificam você quando uma mensagem específica aparece nos registros. Quando uma entrada de registro atende à condição da política de alertas, um incidente é aberto no Cloud Monitoring e você recebe uma notificação sobre ele. Com essa integração, é possível exportar entradas do Cloud Logging para o Google Security Operations para análise e correlação de segurança.
Antes de começar
Verifique se você atende os seguintes pré-requisitos:
- Uma instância do Google SecOps
- Google Cloud projeto com a API Cloud Storage ativada
- Permissões para criar e gerenciar buckets do GCS
- Permissões para gerenciar políticas do IAM em buckets do GCS
- Permissões para configurar coletores do Cloud Logging
Criar um bucket do Google Cloud Storage
Usando o console do Google Cloud
- Acesse o Console do Google Cloud.
- Selecione seu projeto ou crie um novo.
- No menu de navegação, acesse Cloud Storage > Buckets.
- Clique em Criar bucket.
Informe os seguintes detalhes de configuração:
Configuração Valor Nomeie seu bucket Insira um nome exclusivo globalmente, por exemplo, monitoring-logs-export.Tipo de local Escolha com base nas suas necessidades (região, birregional, multirregional) Local Selecione o local (por exemplo, us-central1).Classe de armazenamento Padrão (recomendado para registros acessados com frequência) Controle de acesso Uniforme (recomendado) Ferramentas de proteção Opcional: ativar o controle de versões de objetos ou a política de retenção Clique em Criar.
Como usar a ferramenta de linha de comando gcloud
Como alternativa, crie um bucket usando o comando
gcloud:gcloud storage buckets create gs://monitoring-logs-export \ --location=us-central1 \ --default-storage-class=STANDARD- Substitua:
monitoring-logs-export: o nome do bucket obrigatório (globalmente exclusivo).us-central1: sua região preferida.
- Substitua:
Configurar o Cloud Logging para exportar registros para o GCS
As entradas de registro são armazenadas como arquivos JSON quando encaminhadas para o Cloud Storage. É possível exportar registros relacionados à atividade de alerta do Cloud Monitoring, como registros de auditoria para gerenciamento de políticas de alerta.
Crie um coletor de registros
- No Console do Google Cloud, acesse Logging > Roteador de registros.
- Clique em Criar coletor.
- Informe os seguintes detalhes de configuração:
- Nome do coletor: insira um nome descritivo (por exemplo,
monitoring-alerts-to-gcs). - Descrição do coletor: descrição opcional.
- Nome do coletor: insira um nome descritivo (por exemplo,
- Clique em Próxima.
- Na seção Selecionar serviço do coletor:
- Serviço de coletor: selecione Bucket do Cloud Storage.
- Selecionar bucket do Cloud Storage: escolha o bucket (por exemplo,
monitoring-logs-export) na lista.
- Clique em Próxima.
Na seção Escolher os registros para incluir no coletor, insira uma consulta de filtro para selecionar os registros que você quer exportar.
Exemplo de filtro para registros de auditoria do Cloud Monitoring:
protoPayload.serviceName="monitoring.googleapis.com" logName:"cloudaudit.googleapis.com/activity"Exemplo de filtro para acionadores de política de alertas com base em registros:
Se quiser exportar os registros subjacentes que acionam suas políticas de alertas baseadas em registros, use um filtro que corresponda a esses registros específicos. Exemplo:
severity >= ERROR resource.type="gce_instance"
Clique em Próxima.
Opcional: configure filtros de exclusão, se necessário.
Clique em Criar coletor.
Os novos coletores que encaminham dados de registros para buckets do Cloud Storage podem levar várias horas para começar a encaminhar entradas de registro. As entradas de registro encaminhadas são salvas em lotes a cada hora nos buckets do Cloud Storage. Pode ser necessário aguardar de duas a três horas até que as primeiras entradas comecem a aparecer.
Recuperar a conta de serviço do Google SecOps
O Google SecOps usa uma conta de serviço exclusiva para ler dados do seu bucket do GCS. Você precisa conceder a essa conta de serviço acesso ao seu bucket.
Configurar um feed no Google SecOps para ingerir registros do Cloud Monitoring
- Acesse Configurações do SIEM > Feeds.
- Clique em Adicionar novo feed.
- Clique em Configurar um único feed.
- No campo Nome do feed, insira um nome para o feed (por exemplo,
Google Cloud Monitoring Alerts Logs). - Selecione Google Cloud Storage V2 como o Tipo de origem.
Selecione GCP_MONITORING_ALERTS como o Tipo de registro.
Clique em Receber conta de serviço. Um e-mail exclusivo da conta de serviço será exibido, por exemplo:
chronicle-12345678@chronicle-gcp-prod.iam.gserviceaccount.comCopie esse endereço de e-mail para usar na próxima etapa.
Clique em Próxima.
Especifique valores para os seguintes parâmetros de entrada:
URL do bucket de armazenamento: insira o URI do bucket do GCS:
gs://monitoring-logs-export/- Substitua
monitoring-logs-exportpelo nome do bucket do GCS.
- Substitua
Opção de exclusão da fonte: selecione a opção de exclusão de acordo com sua preferência:
- Nunca: nunca exclui arquivos após as transferências (recomendado para testes).
- Excluir arquivos transferidos: exclui os arquivos após a transferência bem-sucedida.
Excluir arquivos transferidos e diretórios vazios: exclui arquivos e diretórios vazios após a transferência bem-sucedida.
Idade máxima do arquivo: inclui arquivos modificados no último número de dias. O padrão é de 180 dias.
Namespace do recurso: o namespace do recurso.
Rótulos de ingestão: o rótulo a ser aplicado aos eventos deste feed.
Clique em Próxima.
Revise a nova configuração do feed na tela Finalizar e clique em Enviar.
Conceder permissões do IAM à conta de serviço do Google SecOps
A conta de serviço do Google SecOps precisa do papel de Leitor de objetos do Storage no seu bucket do GCS.
Usando o console do Google Cloud
- Acesse Cloud Storage > Buckets.
- Clique no nome do bucket (por exemplo,
monitoring-logs-export). - Acesse a guia Permissões.
- Clique em Conceder acesso.
- Informe os seguintes detalhes de configuração:
- Adicionar participantes: cole o e-mail da conta de serviço do Google SecOps.
- Atribuir papéis: selecione Leitor de objetos do Storage.
- Clique em Salvar.
Como usar a ferramenta de linha de comando gcloud
Outra opção é conceder permissões usando o comando
gcloud:gcloud storage buckets add-iam-policy-binding gs://monitoring-logs-export \ --member="serviceAccount:SECOPS_SERVICE_ACCOUNT_EMAIL" \ --role="roles/storage.objectViewer"- Substitua:
monitoring-logs-export: o nome do bucket.SECOPS_SERVICE_ACCOUNT_EMAIL: o e-mail da conta de serviço do Google SecOps.
- Substitua:
Como usar a ferramenta de linha de comando gsutil (legado)
Conceda à conta de serviço do SecOps as permissões necessárias para ler objetos no bucket de destino:
gsutil iam ch serviceAccount:SECOPS_SERVICE_ACCOUNT_EMAIL:objectViewer \ gs://monitoring-logs-export
Verifique as permissões
Para verificar se as permissões foram concedidas corretamente:
gcloud storage buckets get-iam-policy gs://monitoring-logs-export \ --flatten="bindings[].members" \ --filter="bindings.role:roles/storage.objectViewer"O e-mail da conta de serviço do Google SecOps vai aparecer na saída.
Tabela de mapeamento do UDM
| Campo de registro | Mapeamento do UDM | Lógica |
|---|---|---|
| jsonPayload.type_1 | additional.fields.jsonPayload_type_1 | Valor copiado diretamente |
| jsonPayload.debugInfo | additional.fields.number | Extraído de jsonPayload.debugInfo usando o padrão grok |
| jsonPayload.scheduledTime, receiveTimestamp, timestamp | metadata.event_timestamp | Valor de jsonPayload.scheduledTime se não estiver vazio, caso contrário, receiveTimestamp se não estiver vazio, caso contrário, carimbo de data/hora se não estiver vazio, convertido usando a correspondência de data. |
| event_type | metadata.event_type | Valor de "event_type" se não estiver vazio. Caso contrário, definido como "GENERIC_EVENT". |
| insertId | metadata.product_log_id | Valor copiado diretamente |
| jsonPayload.targetType | network.application_protocol | Valor copiado diretamente |
| httpRequest.status | network.http.response_code | Convertido para número inteiro |
| resource.labels.location | principal.location.name | Valor copiado diretamente |
| jsonPayload.jobName | principal.url | Valor copiado diretamente |
| jsonPayload.status | security_result.action | Defina como "BLOCK" se jsonPayload.status == "PERMISSION_DENIED" |
| gravidade, | security_result.severity | Definido como "INFORMATIONAL" se severity =~ (?i)INFO; "LOW" se severity == "LOW"; "MEDIUM" se severity == "MEDIUM"; "HIGH" se severity == "HIGH"; "CRITICAL" se severity == "VERY-HIGH" |
| jsonPayload.debugInfo | security_result.summary | Extraído de jsonPayload.debugInfo usando o padrão grok |
| logName | src.url | Valor copiado diretamente |
| resource.labels.project_id | target.resource.attribute.labels.project_id | Valor copiado diretamente |
| resource.labels.job_id | target.resource.attribute.labels.resource_labels_job_id | Valor copiado diretamente |
| resource.type | target.resource.resource_subtype | Valor copiado diretamente |
| jsonPayload.url | target.url | Valor copiado diretamente |
| metadata.product_name | Defina como "Gcp_monitoring_alerts" | |
| metadata.vendor_name | Defina como "GCP_MONITORING_ALERTS" |
Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais do Google SecOps.