Coletar registros de atividade de alertas do Google Cloud Monitoring

Compatível com:

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

  1. Acesse o Console do Google Cloud.
  2. Selecione seu projeto ou crie um novo.
  3. No menu de navegação, acesse Cloud Storage > Buckets.
  4. Clique em Criar bucket.
  5. 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
  6. 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.

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

  1. No Console do Google Cloud, acesse Logging > Roteador de registros.
  2. Clique em Criar coletor.
  3. 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.
  4. Clique em Próxima.
  5. 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.
  6. Clique em Próxima.
  7. 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"
      
  8. Clique em Próxima.

  9. Opcional: configure filtros de exclusão, se necessário.

  10. 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

  1. Acesse Configurações do SIEM > Feeds.
  2. Clique em Adicionar novo feed.
  3. Clique em Configurar um único feed.
  4. No campo Nome do feed, insira um nome para o feed (por exemplo, Google Cloud Monitoring Alerts Logs).
  5. Selecione Google Cloud Storage V2 como o Tipo de origem.
  6. Selecione GCP_MONITORING_ALERTS como o Tipo de registro.

  7. 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.com
    
  8. Copie esse endereço de e-mail para usar na próxima etapa.

  9. Clique em Próxima.

  10. 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-export pelo nome do bucket do GCS.
    • 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.

  11. Clique em Próxima.

  12. 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

  1. Acesse Cloud Storage > Buckets.
  2. Clique no nome do bucket (por exemplo, monitoring-logs-export).
  3. Acesse a guia Permissões.
  4. Clique em Conceder acesso.
  5. 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.
  6. 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.

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.