Raccogliere i log di Datadog
Panoramica
Questo parser estrae i campi dai log di Datadog, esegue diverse mutazioni e corrispondenze Grok per strutturare i dati e mappa i campi estratti all'UDM. Gestisce diversi formati di log all'interno del campo message, tra cui coppie chiave-valore e oggetti JSON, e converte campi specifici in etichette conformi a UDM e campi aggiuntivi.
Prima di iniziare
- Assicurati di avere un'istanza Google SecOps.
- Assicurati di disporre dell'accesso con privilegi a Google Cloud IAM.
- Assicurati di disporre dell'accesso con privilegi a Google Cloud Storage.
- Assicurati di disporre dell'accesso utente
logs_write_archive
a Datadog.
Opzione 1: condivisione dei log di Datadog tramite la configurazione di Cloud Storage
Configurare l'integrazione di Datadog con la piattaforma Google Cloud
- Configura un'integrazione per la piattaforma Google Cloud in Datadog. Per ulteriori informazioni, consulta la configurazione dell'integrazione di Google Cloud con Datadog.
Crea un bucket Google Cloud Storage
- Accedi alla console Google Cloud.
Vai alla pagina Bucket Cloud Storage.
Fai clic su Crea.
Nella pagina Crea un bucket, inserisci le informazioni del bucket. Dopo ogni passaggio che segue, fai clic su Continua per passare al passaggio successivo:
Nella sezione Inizia:
- Inserisci un nome univoco che soddisfi i requisiti per i nomi dei bucket (ad esempio datadog-data).
Per attivare lo spazio dei nomi gerarchico, fai clic sulla freccia di espansione per espandere la sezione Ottimizza per i workload orientati ai file e con uso intensivo dei dati, poi seleziona Abilita uno spazio dei nomi gerarchico in questo bucket.
Per aggiungere un'etichetta del bucket, fai clic sulla freccia di espansione per espandere la sezione Etichette.
Fai clic su Aggiungi etichetta e specifica una chiave e un valore per l'etichetta.
Nella sezione Scegli dove archiviare i tuoi dati, segui questi passaggi:
- Seleziona un Tipo di località.
- Utilizza il menu a discesa del tipo di località per selezionare una località in cui verranno archiviati in modo permanente i dati degli oggetti all'interno del bucket.
- Se selezioni il tipo di località a due regioni, puoi anche scegliere di attivare la replica turbo utilizzando la casella di controllo pertinente.
- Per configurare la replica tra bucket, espandi la sezione Configura la replica tra bucket.
Nella sezione Scegli una classe di archiviazione per i tuoi dati, seleziona una classe di archiviazione predefinita per il bucket o Autoclass per la gestione automatica della classe di archiviazione dei dati del bucket.
Nella sezione Scegli come controllare l'accesso agli oggetti, seleziona no per applicare la prevenzione dell'accesso pubblico e seleziona un modello di controllo dell'accesso per gli oggetti del bucket.
Nella sezione Scegli come proteggere i dati degli oggetti, segui questi passaggi:
- Seleziona una delle opzioni in Protezione dei dati che vuoi impostare per il bucket.
- Per scegliere la modalità di crittografia dei dati degli oggetti, fai clic sulla freccia di espansione etichettata Crittografia dei dati e seleziona un Metodo di crittografia dei dati.
Fai clic su Crea.
Creare un account di servizio Google Cloud
- Vai a IAM e amministrazione > Account di servizio.
- Crea un nuovo account di servizio.
- Assegna un nome descrittivo (ad esempio datadog-user).
- Concedi all'account di servizio il ruolo Amministratore oggetti archiviati per il bucket Cloud Storage creato nel passaggio precedente.
- Crea una chiave SSH per l'account di servizio.
- Scarica un file della chiave JSON per l'account di servizio. Tieni questo file al sicuro.
Configurare Datadog per inviare i log a Cloud Storage
- Accedi a Datadog utilizzando un account con privilegi.
- Vai a Log > Inoltro log.
- Fai clic su + Crea nuovo archivio.
- Seleziona Google Cloud Storage.
- Inserisci i parametri richiesti e fai clic su Salva.
Opzione 2: condivisione dei log di Datadog tramite la configurazione di webhook
Configura un feed in Google SecOps per importare i log di Datadog
- Vai a Impostazioni SIEM > Feed.
- Fai clic su Aggiungi nuova.
- Nel campo Nome feed, inserisci un nome per il feed (ad esempio Log di Datadog).
- Seleziona Webhook come Tipo di origine.
- Seleziona Datadog come Tipo di log.
- Fai clic su Avanti.
- (Facoltativo) Specifica i valori per i seguenti parametri di input:
- Delimitatore di split: il delimitatore utilizzato per separare le righe di log, ad esempio
\n
. - Spazio dei nomi degli asset: lo spazio dei nomi degli asset.
- Etichette di importazione: l'etichetta applicata agli eventi di questo feed.
- Delimitatore di split: il delimitatore utilizzato per separare le righe di log, ad esempio
- Fai clic su Avanti.
- Controlla la configurazione del feed nella schermata Concludi e poi fai clic su Invia.
- Fai clic su Genera chiave segreta per generare una chiave segreta per autenticare questo feed.
- Copia e memorizza la chiave segreta. Non potrai più visualizzare questa chiave segreta. Se necessario, puoi rigenerare una nuova chiave segreta, ma questa azione rende obsoleta la chiave segreta precedente.
- Dalla scheda Dettagli, copia l'URL dell'endpoint del feed dal campo Informazioni endpoint. Devi specificare questo URL endpoint nell'applicazione client.
- Fai clic su Fine.
Crea una chiave API per il feed webhook
Vai alla console Google Cloud > Credenziali.
Fai clic su Crea credenziali e poi seleziona Chiave API.
Limita l'accesso della chiave API all'API Chronicle.
Specifica l'URL dell'endpoint
- Nell'applicazione client, specifica l'URL dell'endpoint HTTPS fornito nel feed webhook.
Attiva l'autenticazione specificando la chiave API e la chiave segreta nell'intestazione personalizzata nel seguente formato:
X-goog-api-key = API_KEY X-Webhook-Access-Key = SECRET
Consiglio: specifica la chiave API come intestazione anziché nell'URL.
Se il client webhook non supporta le intestazioni personalizzate, puoi specificare la chiave API e la chiave segreta utilizzando parametri di ricerca nel seguente formato:
ENDPOINT_URL?key=API_KEY&secret=SECRET
Sostituisci quanto segue:
ENDPOINT_URL
: l'URL dell'endpoint del feed.API_KEY
: la chiave API per l'autenticazione in Google SecOps.SECRET
: la chiave segreta che hai generato per autenticare il feed.
Configura Datadog per inviare i log all'webhook
- Accedi a Datadog utilizzando un account con privilegi.
- Vai a Log > Inoltro log.
- Seleziona Destinazioni personalizzate.
- Fai clic su + Crea una nuova destinazione.
- Specifica i valori per i seguenti parametri di input:
- Scegli un tipo di destinazione: seleziona HTTP.
- Assegna un nome alla destinazione: fornisci un nome descrittivo per il webhook (ad esempio Webhook Google SecOps).
- Configura la destinazione: inserisci ENDPOINT_URL, seguito da API_KEY e SECRET.
- Configura le impostazioni di autenticazione: aggiungi un'intestazione generale come quella riportata di seguito, in modo che la richiesta HTTP non venga formattata in modo errato e consenta a Datadog di completare la creazione dell'webhook.
- Nome dell'intestazione:
Accept
. - Valore intestazione:
application/json
.
- Nome dell'intestazione:
- Fai clic su Salva.
Link di riferimento
Tabella di mappatura UDM
Campo log | Mappatura UDM | Logica |
---|---|---|
_id |
read_only_udm.metadata.product_log_id |
Mappato direttamente dal campo _id . |
alert |
read_only_udm.security_result.about.resource.attribute.labels |
Estratto dal campo alert e aggiunto come etichetta all'interno dell'oggetto security_result . |
attributes.@timestamp |
read_only_udm.metadata.event_timestamp |
Il timestamp dell'evento viene estratto dal campo attributes.@timestamp e convertito in secondi e nanosecondi. |
attributes.@version |
read_only_udm.metadata.product_version |
Mappato direttamente dal campo attributes.@version . |
attributes.level_value |
read_only_udm.security_result.about.resource.attribute.labels |
Estratto dal campo attributes.level_value e aggiunto come etichetta all'interno dell'oggetto security_result . |
attributes.logger_name |
read_only_udm.principal.application |
Mappato direttamente dal campo attributes.logger_name . |
attributes._trace.baggage._sli_service |
read_only_udm.additional.fields |
Mappato direttamente dal campo attributes._trace.baggage._sli_service e aggiunto come campo aggiuntivo. |
attributes._trace.baggage.device_id |
read_only_udm.principal.asset.asset_id |
Mappato direttamente dal campo attributes._trace.baggage.device_id , preceduto da "ID dispositivo:". |
attributes._trace.origin.operation |
read_only_udm.metadata.product_event_type |
Mappato direttamente dal campo attributes._trace.origin.operation . |
caller |
read_only_udm.security_result.about.resource.attribute.labels |
Estratto dal campo caller e aggiunto come etichetta all'interno dell'oggetto security_result . |
component |
read_only_udm.security_result.about.resource.attribute.labels |
Estratto dal campo component e aggiunto come etichetta all'interno dell'oggetto security_result . |
context.AlertName |
read_only_udm.security_result.threat_name |
Mappato direttamente dal campo context.AlertName . |
context.BusArch |
read_only_udm.security_result.about.resource.attribute.labels |
Estratto dal campo context.BusArch e aggiunto come etichetta all'interno dell'oggetto security_result . |
context.CANDBVersion |
read_only_udm.security_result.about.resource.attribute.labels |
Estratto dal campo context.CANDBVersion e aggiunto come etichetta all'interno dell'oggetto security_result . |
context.esn |
read_only_udm.security_result.about.resource.attribute.labels |
Estratto dal campo context.esn e aggiunto come etichetta all'interno dell'oggetto security_result . |
context.ftcpVersion |
read_only_udm.security_result.about.resource.attribute.labels |
Estratto dal campo context.ftcpVersion e aggiunto come etichetta all'interno dell'oggetto security_result . |
context.ingestMessageId |
read_only_udm.security_result.about.resource.attribute.labels |
Estratto dal campo context.ingestMessageId e aggiunto come etichetta all'interno dell'oggetto security_result . |
context.redactedVin |
read_only_udm.security_result.about.resource.attribute.labels |
Estratto dal campo context.redactedVin e aggiunto come etichetta all'interno dell'oggetto security_result . |
context.vehicleId |
read_only_udm.security_result.about.resource.attribute.labels |
Estratto dal campo context.vehicleId e aggiunto come etichetta all'interno dell'oggetto security_result . |
date |
read_only_udm.metadata.collected_timestamp |
Il timestamp raccolto viene estratto dal campo date (rinominato in date1 nel parser) e convertito in secondi e nanosecondi. |
host |
read_only_udm.principal.hostname |
Mappato direttamente dal campo host . |
message |
read_only_udm.security_result.about.resource.attribute.labels |
Il campo message viene analizzato e parti di esso vengono utilizzate per compilare i campi summary e json_data. La parte rimanente viene trattata come coppie chiave-valore e aggiunta come etichette all'interno dell'oggetto security_result. |
msg |
read_only_udm.security_result.about.resource.attribute.labels |
Estratto dal campo msg e aggiunto come etichetta all'interno dell'oggetto security_result . |
service |
read_only_udm.metadata.product_name |
Mappato direttamente dal campo service . |
status |
read_only_udm.security_result.severity |
La gravità viene determinata in base al campo status . "INFO", "DEBUG", "debug" e "info" vengono mappati a "LOW", "WARN" viene mappato a "MEDIUM" e gli altri valori non sono mappati esplicitamente nello snippet di codice fornito. |
tags |
read_only_udm.additional.fields |
Ogni tag nell'array tags viene analizzato in coppie chiave-valore e aggiunto come campi aggiuntivi. |
N/D | read_only_udm.metadata.event_type |
Impostato su "STATUS_UPDATE" se è presente il campo host e su "GENERIC_EVENT" in caso contrario. |
Modifiche
2023-07-21
- Parser creato.