Coletar registros do Datadog
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
- Configure uma integração do Google Cloud Platform no Datadog. Para mais informações, consulte a Configuração da integração do Datadog com o Google Cloud.
Crie um bucket do Google Cloud Storage
- Faça login no Console do Google Cloud
Acesse a página Buckets do Cloud Storage.
Clique em Criar.
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:
Na seção Começar, faça o seguinte:
- Insira um nome exclusivo que atenda aos requisitos de nome de bucket (por exemplo, datadog-data).
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.
Para adicionar um rótulo de bucket, clique na seta de expansão para abrir a seção Rótulos.
Clique em Adicionar rótulo e especifique uma chave e um valor para o rótulo.
Na seção Escolha onde armazenar seus dados, faça o seguinte:
- Selecione um tipo de local.
- 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.
- Para configurar a replicação entre buckets, abra a seção Configurar a replicação entre buckets.
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.
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.
Na seção Escolha como proteger os dados do objeto, faça o seguinte:
- Selecione qualquer uma das opções em Proteção de dados que você quer definir para o bucket.
- 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.
Clique em Criar.
Criar uma conta de serviço do Google Cloud
- Acesse IAM e administrador > Contas de serviço.
- Crie uma nova conta de serviço.
- Dê um nome descritivo (por exemplo, datadog-user).
- Conceda à conta de serviço o papel de Administrador de objetos do Storage no bucket do Cloud Storage criado na etapa anterior.
- Crie uma chave SSH para a conta de serviço.
- 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
- Faça login no Datadog usando uma conta privilegiada.
- Acesse Registros > Encaminhamento de registro.
- Clique em + Criar novo arquivo.
- Selecione Google Cloud Storage.
- 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
- Acesse Configurações do SIEM > Feeds.
- Clique em Adicionar novo.
- No campo Nome do feed, insira um nome para o feed (por exemplo, Datadog Logs).
- Selecione Webhook como o Tipo de origem.
- Selecione Datadog como o Tipo de registro.
- Clique em Próxima.
- 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.
- Delimitador de divisão: o delimitador usado para separar linhas de registro, como
- Clique em Próxima.
- Revise a configuração do feed na tela Finalizar e clique em Enviar.
- Clique em Gerar chave secreta para gerar uma chave secreta para autenticar esse feed.
- 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.
- 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.
- Clique em Concluído.
Criar uma chave de API para o feed de webhook
Acesse Console do Google Cloud > Credenciais.
Clique em Criar credenciais e, em seguida, selecione Chave de API.
Restrinja o acesso da chave de API à API Chronicle.
Especificar o URL do endpoint
- No aplicativo cliente, especifique o URL do endpoint HTTPS fornecido no feed de webhook.
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.
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
- Faça login no Datadog usando uma conta privilegiada.
- Acesse Registros > Encaminhamento de registro.
- Selecione Destinos personalizados.
- Clique em + Criar um novo destino.
- Especifique valores para os seguintes parâmetros de entrada:
- Escolher um tipo de destino: selecione HTTP.
- Nomeie o destino: forneça um nome descritivo para o webhook (por exemplo, Webhook do Google SecOps).
- Configure o destino: insira o ENDPOINT_URL, seguido por API_KEY e SECRET.
- 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
.
- Nome do cabeçalho:
- Clique em Salvar.
Links de referência
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.