Coletar registros do Datadog

Compatível com:

Visão geral

Esse analisador extrai campos dos registros do Datadog, realiza várias mutações e correspondências do Grok para estruturar os dados e mapeia os campos extraídos para o UDM. Ele processa diferentes formatos de registro no campo message, incluindo pares de chave-valor e objetos JSON, e converte campos específicos em rótulos compatíveis com UDM e campos adicionais.

Antes de começar

  • Verifique se você tem uma instância do Google SecOps.
  • Verifique se você tem acesso privilegiado ao IAM do Google Cloud.
  • Verifique se você tem acesso privilegiado ao Google Cloud Storage.
  • Verifique se você tem acesso de usuário logs_write_archive ao Datadog.

Opção 1: compartilhamento de registros do Datadog pela configuração do Cloud Storage

Configurar a integração do Datadog com o Google Cloud Platform

Crie um bucket do Google Cloud Storage

  1. Faça login no Console do Google Cloud
  2. Acesse a página Buckets do Cloud Storage.

    Acessar buckets

  3. Clique em Criar.

  4. Na página Criar um bucket, insira as informações do seu bucket. Após cada uma das etapas a seguir, clique em Continuar para prosseguir para a próxima:

    1. Na seção Começar, faça o seguinte:

      1. Insira um nome exclusivo que atenda aos requisitos de nome de bucket (por exemplo, datadog-data).
      2. Para ativar o namespace hierárquico, clique na seta de expansão para abrir a seção Otimizar para cargas de trabalho orientadas a arquivos e com uso intensivo de dados e selecione Ativar namespace hierárquico neste bucket.

      3. Para adicionar um rótulo de bucket, clique na seta de expansão para abrir a seção Rótulos.

      4. Clique em Adicionar rótulo e especifique uma chave e um valor para o rótulo.

    2. Na seção Escolha onde armazenar seus dados, faça o seguinte:

      1. Selecione um tipo de local.
      2. Use o menu suspenso do tipo de local para selecionar um Local em que os dados de objetos no bucket serão armazenados permanentemente.
        • Se você selecionar o tipo de local birregional, também poderá ativar a replicação turbo usando a caixa de seleção relevante.
      3. Para configurar a replicação entre buckets, abra a seção Configurar a replicação entre buckets.
    3. Na seção Escolha uma classe de armazenamento para seus dados, selecione uma classe de armazenamento padrão para o bucket ou selecione Classe automática para gerenciamento automático da classe de armazenamento dos dados do bucket.

    4. Na seção Escolha como controlar o acesso a objetos, selecione não para aplicar a prevenção de acesso público e selecione um modelo de controle de acesso para os objetos do bucket.

    5. Na seção Escolha como proteger os dados do objeto, faça o seguinte:

      1. Selecione qualquer uma das opções em Proteção de dados que você quer definir para o bucket.
      2. Para escolher como os dados do objeto serão criptografados, clique na seta de expansão identificada como Criptografia de dados e selecione um método de criptografia de dados.
  5. Clique em Criar.

Criar uma conta de serviço do Google Cloud

  1. Acesse IAM e administrador > Contas de serviço.
  2. Crie uma nova conta de serviço.
  3. Dê um nome descritivo (por exemplo, datadog-user).
  4. Conceda à conta de serviço o papel de Administrador de objetos do Storage no bucket do Cloud Storage criado na etapa anterior.
  5. Crie uma chave SSH para a conta de serviço.
  6. Faça o download de um arquivo de chave JSON para a conta de serviço. Mantenha esse arquivo em segurança.

Configurar o Datadog para enviar registros ao Cloud Storage

  1. Faça login no Datadog usando uma conta privilegiada.
  2. Acesse Registros > Encaminhamento de registro.
  3. Clique em + Criar novo arquivo.
  4. Selecione Google Cloud Storage.
  5. Insira os parâmetros necessários e clique em Salvar.

Opção 2: compartilhamento de registros do Datadog pela configuração de webhook

Configurar um feed no Google SecOps para processar os registros do Datadog

  1. Acesse Configurações do SIEM > Feeds.
  2. Clique em Adicionar novo.
  3. No campo Nome do feed, insira um nome para o feed (por exemplo, Datadog Logs).
  4. Selecione Webhook como o Tipo de origem.
  5. Selecione Datadog como o Tipo de registro.
  6. Clique em Próxima.
  7. Opcional: especifique valores para os seguintes parâmetros de entrada:
    • Delimitador de divisão: o delimitador usado para separar linhas de registro, como \n.
    • Namespace de recursos: o namespace de recursos.
    • Rótulos de ingestão: o rótulo aplicado aos eventos desse feed.
  8. Clique em Próxima.
  9. Revise a configuração do feed na tela Finalizar e clique em Enviar.
  10. Clique em Gerar chave secreta para gerar uma chave secreta para autenticar esse feed.
  11. Copie e armazene a chave secreta. Não é possível acessar essa chave secreta novamente. Se necessário, você pode gerar uma nova chave secreta, mas essa ação torna a chave secreta anterior obsoleta.
  12. Na guia Detalhes, copie o URL do endpoint do feed no campo Informações do endpoint. É necessário especificar esse URL de endpoint no aplicativo cliente.
  13. Clique em Concluído.

Criar uma chave de API para o feed de webhook

  1. Acesse Console do Google Cloud > Credenciais.

    Ir para Credenciais

  2. Clique em Criar credenciais e, em seguida, selecione Chave de API.

  3. Restrinja o acesso da chave de API à API Chronicle.

Especificar o URL do endpoint

  1. No aplicativo cliente, especifique o URL do endpoint HTTPS fornecido no feed de webhook.
  2. Ative a autenticação especificando a chave de API e a chave secreta como parte do cabeçalho personalizado no seguinte formato:

    X-goog-api-key = API_KEY
    X-Webhook-Access-Key = SECRET
    

    Recomendação: especifique a chave de API como um cabeçalho em vez de especificar no URL.

  3. Se o cliente do webhook não tiver suporte a cabeçalhos personalizados, especifique a chave de API e a chave secreta usando parâmetros de consulta no seguinte formato:

    ENDPOINT_URL?key=API_KEY&secret=SECRET
    

    Substitua:

    • ENDPOINT_URL: o URL do endpoint do feed.
    • API_KEY: a chave de API para autenticação no Google SecOps.
    • SECRET: a chave secreta que você gerou para autenticar o feed.

Configurar o Datadog para enviar registros ao webhook

  1. Faça login no Datadog usando uma conta privilegiada.
  2. Acesse Registros > Encaminhamento de registro.
  3. Selecione Destinos personalizados.
  4. Clique em + Criar um novo destino.
  5. Especifique valores para os seguintes parâmetros de entrada:
    1. Escolher um tipo de destino: selecione HTTP.
    2. Nomeie o destino: forneça um nome descritivo para o webhook (por exemplo, Webhook do Google SecOps).
    3. Configure o destino: insira o ENDPOINT_URL, seguido por API_KEY e SECRET.
    4. Configurar as configurações de autenticação: adicione um cabeçalho geral como o seguinte. Isso não vai deformar a solicitação HTTP e permitir que o Datadog conclua a criação do webhook.
      • Nome do cabeçalho: Accept.
      • Valor do cabeçalho: application/json.
    5. Clique em Salvar.

Tabela de mapeamento do UDM

Campo de registro Mapeamento do UDM Lógica
_id read_only_udm.metadata.product_log_id Mapeado diretamente do campo _id.
alert read_only_udm.security_result.about.resource.attribute.labels Extraídos do campo alert e adicionados como um rótulo no objeto security_result.
attributes.@timestamp read_only_udm.metadata.event_timestamp O carimbo de data/hora do evento é extraído do campo attributes.@timestamp e convertido em segundos e nanossegundos.
attributes.@version read_only_udm.metadata.product_version Mapeado diretamente do campo attributes.@version.
attributes.level_value read_only_udm.security_result.about.resource.attribute.labels Extraídos do campo attributes.level_value e adicionados como um rótulo no objeto security_result.
attributes.logger_name read_only_udm.principal.application Mapeado diretamente do campo attributes.logger_name.
attributes._trace.baggage._sli_service read_only_udm.additional.fields Mapeado diretamente do campo attributes._trace.baggage._sli_service e adicionado como um campo extra.
attributes._trace.baggage.device_id read_only_udm.principal.asset.asset_id Mapeado diretamente do campo attributes._trace.baggage.device_id, com o prefixo "ID do dispositivo:".
attributes._trace.origin.operation read_only_udm.metadata.product_event_type Mapeado diretamente do campo attributes._trace.origin.operation.
caller read_only_udm.security_result.about.resource.attribute.labels Extraídos do campo caller e adicionados como um rótulo no objeto security_result.
component read_only_udm.security_result.about.resource.attribute.labels Extraídos do campo component e adicionados como um rótulo no objeto security_result.
context.AlertName read_only_udm.security_result.threat_name Mapeado diretamente do campo context.AlertName.
context.BusArch read_only_udm.security_result.about.resource.attribute.labels Extraídos do campo context.BusArch e adicionados como um rótulo no objeto security_result.
context.CANDBVersion read_only_udm.security_result.about.resource.attribute.labels Extraídos do campo context.CANDBVersion e adicionados como um rótulo no objeto security_result.
context.esn read_only_udm.security_result.about.resource.attribute.labels Extraídos do campo context.esn e adicionados como um rótulo no objeto security_result.
context.ftcpVersion read_only_udm.security_result.about.resource.attribute.labels Extraídos do campo context.ftcpVersion e adicionados como um rótulo no objeto security_result.
context.ingestMessageId read_only_udm.security_result.about.resource.attribute.labels Extraídos do campo context.ingestMessageId e adicionados como um rótulo no objeto security_result.
context.redactedVin read_only_udm.security_result.about.resource.attribute.labels Extraídos do campo context.redactedVin e adicionados como um rótulo no objeto security_result.
context.vehicleId read_only_udm.security_result.about.resource.attribute.labels Extraídos do campo context.vehicleId e adicionados como um rótulo no objeto security_result.
date read_only_udm.metadata.collected_timestamp O carimbo de data/hora coletado é extraído do campo date (renomeado para date1 no analisador) e convertido em segundos e nanossegundos.
host read_only_udm.principal.hostname Mapeado diretamente do campo host.
message read_only_udm.security_result.about.resource.attribute.labels O campo message é analisado, e partes dele são usadas para preencher os campos summary e json_data. A parte restante é tratada como pares de chave-valor e adicionada como rótulos no objeto security_result.
msg read_only_udm.security_result.about.resource.attribute.labels Extraídos do campo msg e adicionados como um rótulo no objeto security_result.
service read_only_udm.metadata.product_name Mapeado diretamente do campo service.
status read_only_udm.security_result.severity A gravidade é determinada com base no campo status. "INFO", "DEBUG", "debug" e "info" são mapeados para "LOW", "WARN" é mapeado para "MEDIUM" e outros valores não são mapeados explicitamente no snippet de código fornecido.
tags read_only_udm.additional.fields Cada tag na matriz tags é analisada em pares de chave-valor e adicionada como campos adicionais.
N/A read_only_udm.metadata.event_type Defina como "STATUS_UPDATE" se o campo host estiver presente e como "GENERIC_EVENT" caso contrário.

Alterações

2023-07-21

  • O analisador foi criado.