Raccogliere i log di Datadog
Panoramica
Questo parser estrae i campi dai log di Datadog, esegue diverse mutazioni e la corrispondenza 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 soddisfare i seguenti prerequisiti:
- Istanza Google SecOps.
- Accesso privilegiato a Google Cloud IAM.
- Accesso privilegiato a Cloud Storage.
logs_write_archive
l'accesso utente a Datadog.
Opzione 1: condivisione dei log Datadog tramite la configurazione di Cloud Storage
Configura l'integrazione di Datadog con la piattaforma Google Cloud
- Configura un'integrazione per Google Cloud in Datadog. Per ulteriori informazioni, consulta la configurazione dell'integrazione di Datadog Google Cloud .
Crea un Google Cloud bucket di archiviazione
- Accedi alla Google Cloud console.
Vai alla pagina Bucket Cloud Storage.
Fai clic su Crea.
Nella pagina Crea un bucket, inserisci le informazioni del bucket. Dopo ogni passaggio riportato di seguito, fai clic su Continua per passare al passaggio successivo:
Nella sezione Inizia:
- Inserisci un nome univoco che soddisfi i requisiti del nome del bucket (ad esempio, datadog-data).
Per attivare lo spazio dei nomi gerarchico, fai clic sulla freccia di espansione per espandere la sezione Ottimizza per 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 i dati degli oggetti all'interno del bucket verranno archiviati in modo permanente.
- Se selezioni il tipo di località a doppia regione, puoi anche scegliere di attivare la replica turbo utilizzando la casella di controllo pertinente.
- Per configurare la replica tra bucket, espandi la sezione Configura replica tra bucket.
Nella sezione Scegli una classe di archiviazione per i tuoi dati, seleziona una classe di archiviazione predefinita per il bucket oppure 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 come criptare i dati degli oggetti, fai clic sulla freccia di espansione con l'etichetta Crittografia dei dati e seleziona un metodo di crittografia dei dati.
Fai clic su Crea.
Crea un service account Google Cloud
- Vai a IAM e amministrazione > Service Accounts.
- Crea un nuovo account di servizio.
- Assegna un nome descrittivo (ad esempio datadog-user).
- Concedi al account di servizio il ruolo Storage Object Admin nel bucket Cloud Storage che hai creato nel passaggio precedente.
- Crea una chiave SSH per il account di servizio.
- Scarica un file della chiave JSON per il account di servizio. Conserva questo file in modo sicuro.
Configura 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 Datadog tramite la configurazione del webhook
Configurare i feed
Esistono due diversi punti di accesso per configurare i feed nella piattaforma Google SecOps:
- Impostazioni SIEM > Feed
- Hub dei contenuti > Pacchetti di contenuti
Configura i feed da Impostazioni SIEM > Feed
Per configurare un feed:
- Vai a Impostazioni SIEM > Feed.
- Fai clic su Aggiungi nuovo feed.
- Nella pagina successiva, fai clic su Configura un singolo feed.
- Nel campo Nome feed, inserisci un nome per il feed (ad esempio, Log 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 suddivisione: il delimitatore utilizzato per separare le righe di log, ad esempio
\n
.
- Delimitatore di suddivisione: il delimitatore utilizzato per separare le righe di log, ad esempio
- Fai clic su Avanti.
- Controlla la configurazione del feed nella schermata Finalizza 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 puoi visualizzare di nuovo questa chiave segreta. Se necessario, puoi rigenerare una nuova chiave segreta, ma questa azione rende obsoleta la chiave segreta precedente.
- Nella scheda Dettagli, copia l'URL dell'endpoint del feed dal campo Informazioni sull'endpoint. Devi specificare questo URL dell'endpoint nell'applicazione client.
- Fai clic su Fine.
Configurare i feed dall'hub dei contenuti
Specifica i valori per i seguenti campi:
- Delimitatore di suddivisione: il delimitatore utilizzato per separare le righe di log, ad esempio
\n
.
Opzioni avanzate
- Nome feed: un valore precompilato che identifica il feed.
- Tipo di origine: metodo utilizzato per raccogliere i log in Google SecOps.
- Spazio dei nomi dell'asset: lo spazio dei nomi associato al feed.
Etichette di importazione: etichette applicate a tutti gli eventi di questo feed.
Fai clic su Genera chiave segreta per generare una chiave segreta per autenticare questo feed.
Copia e memorizza la chiave segreta. Non puoi visualizzare di nuovo questa chiave segreta. Se necessario, puoi rigenerare una nuova chiave segreta, ma questa azione rende obsoleta la chiave segreta precedente.
Nella scheda Dettagli, copia l'URL dell'endpoint del feed dal campo Informazioni sull'endpoint. Devi specificare questo URL dell'endpoint nell'applicazione client.
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
- Nella tua applicazione client, specifica l'URL dell'endpoint HTTPS fornito nel feed webhook.
Attiva l'autenticazione specificando la chiave API e la chiave segreta come parte dell'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 a Google SecOps.SECRET
: la chiave segreta che hai generato per autenticare il feed.
Configura Datadog per inviare i log al 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 l'ENDPOINT_URL, seguito da API_KEY e SECRET.
- Configura le impostazioni di autenticazione: aggiungi un'intestazione generale come la seguente. In questo modo, la richiesta HTTP non verrà formattata in modo errato e Datadog potrà completare la creazione del webhook.
- Nome intestazione:
Accept
. - Valore dell'intestazione:
application/json
.
- Nome intestazione:
- Fai clic su Salva.
Link di riferimento
Tabella di mappatura UDM
Campo log | Mappatura UDM | Logic |
---|---|---|
_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 , con il prefisso "Device Id:". |
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 alcune sue parti 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" sono mappati a "LOW", "WARN" è mappato a "MEDIUM" e gli altri valori non sono mappati in modo esplicito nello snippet di codice fornito. |
tags |
read_only_udm.additional.fields |
Ogni tag dell'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 , altrimenti su "GENERIC_EVENT". |
Hai bisogno di ulteriore assistenza? Ricevi risposte dai membri della community e dai professionisti di Google SecOps.