Raccogliere i log di Sysdig

Supportato in:

Questo parser estrae i dati sugli eventi di sicurezza dai log JSON di Sysdig, trasformando e mappando i campi dei log non elaborati nel formato UDM di Google Security Operations. Gestisce vari campi, tra cui metadati, informazioni su principali/target, dettagli dei risultati di sicurezza e contesto relativo a Kubernetes, arricchendo i dati per l'analisi in Google SecOps. Il parser esegue anche conversioni di tipo di dati, gestione degli errori e logica condizionale in base ai valori dei campi per garantire una rappresentazione accurata e completa dell'UDM.

Prima di iniziare

  • Assicurati di avere un'istanza Google SecOps.
  • Assicurati di disporre dell'accesso con privilegi a Sysdig Secure.

Crea una chiave API per il feed webhook

  1. Vai alla console Google Cloud > Credenziali.

    Vai a credenziali

  2. Fai clic su Crea credenziali e poi seleziona Chiave API.

  3. Limita l'accesso della chiave API all'API Google Security Operations.

Opzione 1

Configura un feed webhook in Google SecOps per importare i log Sysdig

  1. Vai a Impostazioni SIEM > Feed.
  2. Fai clic su Aggiungi nuova.
  3. Nel campo Nome feed, inserisci un nome per il feed (ad esempio Log Sysdig).
  4. Seleziona Webhook come Tipo di origine.
  5. Seleziona Sysdig come Tipo di log.
  6. Fai clic su Avanti.
  7. (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.
  8. Fai clic su Avanti.
  9. Controlla la configurazione del feed nella schermata Concludi e poi fai clic su Invia.
  10. Fai clic su Genera chiave segreta per generare una chiave segreta per autenticare questo feed.
  11. 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.
  12. Dalla scheda Dettagli, copia l'URL dell'endpoint del feed dal campo Informazioni endpoint. Devi specificare questo URL endpoint nell'applicazione client.
  13. Fai clic su Fine.

Specifica l'URL dell'endpoint

  1. Nell'applicazione client, specifica l'URL dell'endpoint HTTPS fornito nel feed webhook.
  2. 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.

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

Configurare il webhook in Sysdig

  1. Accedi a Sysdig Secure con privilegi di amministratore.
  2. Vai a Profilo > Impostazioni > Inoltro eventi.
  3. Fai clic su + Aggiungi integrazione e seleziona Webhook dal menu a discesa.
  4. Specifica i valori per i seguenti parametri di input:

    • Nome integrazione: fornisci un nome descrittivo per il webhook (ad esempio Webhook Google SecOps).
    • Endpoint: inserisci il webhook <ENDPOINT_URL>, seguito da <API_KEY e <SECRET>.
    • Dati da inviare: seleziona dal menu a discesa i tipi di dati Sysdig da inoltrare.

    • Testa l'integrazione, quindi attiva l'opzione Attivato.

    • Fai clic su Salva.

Opzione 2

Inoltra i dati direttamente a Google SecOps

  1. Accedi a Sysdig Secure utilizzando le tue credenziali di amministratore.
  2. Vai a Impostazioni > Inoltro eventi.
  3. Fai clic su + Aggiungi integrazione e seleziona Google Chronicle dal menu a discesa.
  4. Specifica i valori per i seguenti parametri di input:
    • Nome integrazione: fornisci un nome descrittivo per l'integrazione (ad esempio Integrazione Google SecOps).
    • ID cliente: l'ID cliente Google associato al tuo account Google Cloud. In Google SecOps, puoi trovarlo in Impostazioni > Profilo.
    • Spazio dei nomi: facoltativo. Utilizzalo come tag per identificare il dominio di dati appropriato per l'indicizzazione e l'arricchimento.
    • Credenziali JSON: carica le credenziali JSON di Google SecOps.
    • Regione: seleziona la tua regione, ad esempio Stati Uniti, Europa o Asia.
    • Dati da inviare: seleziona i tipi di dati Sysdig da inoltrare dal menu a discesa.
    • Testa l'integrazione, quindi attiva l'opzione Attivato.
    • Fai clic su Salva.

Tabella di mappatura UDM

Campo log Mappatura UDM Logica
agentId read_only_udm.metadata.product_deployment_id Il valore di agentId dal log non elaborato è mappato direttamente a questo campo UDM.
category read_only_udm.security_result.category_details Il valore di category dal log non elaborato è mappato direttamente a questo campo UDM.
content.fields.container.id read_only_udm.target.asset.asset_id Al valore di content.fields.container.id del log non elaborato viene anteposto "container_id:" e viene mappato a questo campo UDM. Da utilizzare se containerId è vuoto.
content.fields.container.image.repository read_only_udm.target.file.full_path Il valore di content.fields.container.image.repository dal log non elaborato è mappato direttamente a questo campo UDM.
content.fields.container.image.tag read_only_udm.metadata.ingestion_labels.value dove la chiave è tag Il valore di content.fields.container.image.tag dal log non elaborato è mappato direttamente a questo campo UDM.
content.fields.evt.res read_only_udm.metadata.ingestion_labels.value dove la chiave è evt_res Il valore di content.fields.evt.res dal log non elaborato è mappato direttamente a questo campo UDM.
content.fields.evt.type read_only_udm.metadata.event_type Il valore di content.fields.evt.type dal log non elaborato è mappato direttamente a questo campo UDM.
content.fields.falco.rule read_only_udm.security_result.rule_name Il valore di content.fields.falco.rule dal log non elaborato è mappato direttamente a questo campo UDM. Da utilizzare se content.ruleName è vuoto.
content.fields.group.gid read_only_udm.target.group.product_object_id Il valore di content.fields.group.gid dal log non elaborato è mappato direttamente a questo campo UDM.
content.fields.group.name read_only_udm.target.group.group_display_name Il valore di content.fields.group.name dal log non elaborato è mappato direttamente a questo campo UDM.
content.fields.proc.cmdline read_only_udm.target.process.command_line Il valore di content.fields.proc.cmdline dal log non elaborato è mappato direttamente a questo campo UDM.
content.fields.proc.pcmdline read_only_udm.target.process.parent_process.command_line Il valore di content.fields.proc.pcmdline dal log non elaborato è mappato direttamente a questo campo UDM.
content.fields.proc.pid read_only_udm.target.process.pid Il valore di content.fields.proc.pid dal log non elaborato è mappato direttamente a questo campo UDM.
content.fields.proc.ppid read_only_udm.target.process.parent_process.pid Il valore di content.fields.proc.ppid dal log non elaborato è mappato direttamente a questo campo UDM.
content.fields.proc.sid read_only_udm.metadata.ingestion_labels.value dove la chiave è sid Il valore di content.fields.proc.sid dal log non elaborato è mappato direttamente a questo campo UDM.
content.fields.user.loginname read_only_udm.principal.user.user_display_name Il valore di content.fields.user.loginname dal log non elaborato è mappato direttamente a questo campo UDM.
content.fields.user.uid read_only_udm.principal.user.userid Il valore di content.fields.user.uid dal log non elaborato è mappato direttamente a questo campo UDM.
content.output read_only_udm.additional.fields.value.string_value dove la chiave è content_output Il valore di content.output dal log non elaborato è mappato direttamente a questo campo UDM.
content.policyId read_only_udm.security_result.rule_id Il valore di content.policyId dal log non elaborato è mappato direttamente a questo campo UDM.
content.policyOrigin read_only_udm.additional.fields.value.string_value dove la chiave è content_policyOrigin Il valore di content.policyOrigin dal log non elaborato è mappato direttamente a questo campo UDM.
content.policyVersion read_only_udm.additional.fields.value.string_value dove la chiave è content_policyVersion Il valore di content.policyVersion dal log non elaborato è mappato direttamente a questo campo UDM.
content.ruleName read_only_udm.security_result.rule_name Il valore di content.ruleName dal log non elaborato è mappato direttamente a questo campo UDM.
content.ruleTags read_only_udm.security_result.rule_labels I valori nell'array content.ruleTags del log non elaborato vengono mappati a questo campo UDM, con chiavi generate dinamicamente come "ruletag_index".
content.ruleType read_only_udm.additional.fields.value.string_value dove la chiave è content_ruleType Il valore di content.ruleType dal log non elaborato è mappato direttamente a questo campo UDM.
containerId read_only_udm.target.asset.asset_id Al valore di containerId del log non elaborato viene anteposto "container_id:" e viene mappato a questo campo UDM.
description read_only_udm.metadata.description Il valore di description dal log non elaborato è mappato direttamente a questo campo UDM.
id read_only_udm.metadata.product_log_id Il valore di id dal log non elaborato è mappato direttamente a questo campo UDM.
labels.container.label.io.kubernetes.container.name read_only_udm.additional.fields.value.string_value dove la chiave è container_name Il valore di labels.container.label.io.kubernetes.container.name dal log non elaborato è mappato direttamente a questo campo UDM.
labels.container.label.io.kubernetes.pod.name read_only_udm.additional.fields.value.string_value dove la chiave è pod_name Il valore di labels.container.label.io.kubernetes.pod.name dal log non elaborato è mappato direttamente a questo campo UDM. Da utilizzare se labels.kubernetes.pod.name è vuoto.
labels.container.label.io.kubernetes.pod.namespace read_only_udm.principal.namespace Il valore di labels.container.label.io.kubernetes.pod.namespace dal log non elaborato è mappato direttamente a questo campo UDM. Da utilizzare se labels.kubernetes.namespace.name è vuoto.
labels.aws.instanceId read_only_udm.target.resource.product_object_id Il valore di labels.aws.instanceId dal log non elaborato è mappato direttamente a questo campo UDM.
labels.aws.region read_only_udm.target.resource.attribute.cloud.availability_zone Il valore di labels.aws.region dal log non elaborato è mappato direttamente a questo campo UDM.
labels.host.hostName read_only_udm.principal.ip OPPURE read_only_udm.principal.hostname Se il valore contiene "ip", viene analizzato come indirizzo IP e mappato a principal.ip. In caso contrario, viene mappato a principal.hostname.
labels.host.mac read_only_udm.principal.mac Il valore di labels.host.mac dal log non elaborato è mappato direttamente a questo campo UDM. Da utilizzare se machineId è vuoto.
labels.kubernetes.cluster.name read_only_udm.additional.fields.value.string_value dove la chiave è kubernetes_cluster_name Il valore di labels.kubernetes.cluster.name dal log non elaborato è mappato direttamente a questo campo UDM.
labels.kubernetes.deployment.name read_only_udm.additional.fields.value.string_value dove la chiave è kubernetes_deployment_name Il valore di labels.kubernetes.deployment.name dal log non elaborato è mappato direttamente a questo campo UDM.
labels.kubernetes.namespace.name read_only_udm.principal.namespace Il valore di labels.kubernetes.namespace.name dal log non elaborato è mappato direttamente a questo campo UDM.
labels.kubernetes.node.name read_only_udm.additional.fields.value.string_value dove la chiave è kubernetes_node_name Il valore di labels.kubernetes.node.name dal log non elaborato è mappato direttamente a questo campo UDM.
labels.kubernetes.pod.name read_only_udm.additional.fields.value.string_value dove la chiave è pod_name Il valore di labels.kubernetes.pod.name dal log non elaborato è mappato direttamente a questo campo UDM.
labels.kubernetes.service.name read_only_udm.additional.fields.value.string_value dove la chiave è kubernetes_service_name Il valore di labels.kubernetes.service.name dal log non elaborato è mappato direttamente a questo campo UDM.
machineId read_only_udm.principal.mac Il valore di machineId dal log non elaborato è mappato direttamente a questo campo UDM.
name read_only_udm.security_result.summary Il valore di name dal log non elaborato è mappato direttamente a questo campo UDM.
severity read_only_udm.security_result.severity Il valore di severity dal log non elaborato viene mappato a un valore di stringa in base a questi intervalli: <4 = ALTO, >3 e <6 = MEDIO, 6 = BASSO, 7 = INFORMATIVO.
source read_only_udm.security_result.description Il valore di source dal log non elaborato è mappato direttamente a questo campo UDM.
timestampRFC3339Nano read_only_udm.metadata.event_timestamp Il valore di timestampRFC3339Nano dal log non elaborato viene analizzato come timestamp e mappato a questo campo UDM.
type read_only_udm.metadata.product_event_type Il valore di type dal log non elaborato è mappato direttamente a questo campo UDM.
(Parser Logic) read_only_udm.metadata.product_name Hardcoded su "SYSDIG".
(Parser Logic) read_only_udm.metadata.vendor_name Hardcoded su "SYSDIG".
(Parser Logic) read_only_udm.metadata.event_type Impostato su "PROCESS_UNCATEGORIZED" per impostazione predefinita o su "GENERIC_EVENT" se labels.host.hostName è vuoto.
(Parser Logic) read_only_udm.metadata.log_type Hardcoded su "SYSDIG".
(Parser Logic) read_only_udm.target.resource.resource_type Impostato su "CLOUD_PROJECT" se labels.aws.instanceId esiste.

Modifiche

2024-01-05

  • Quando "severity" è 0, 1, 2, 3, la mappatura di "security_result.severity" è stata modificata da "LOW" a "HIGH".
  • Quando "severity" è 6, la mappatura di "security_result.severity" è stata modificata da "HIGH" a "LOW".
  • Quando "severity" è 7, la mappatura di "security_result.severity" è stata modificata da "HIGH" a "INFORMATIONAL".
  • È stato aggiunto "drop" per i log non in formato JSON.
  • È stato aggiunto "on_error" alla mappatura della data "timestampRFC3339Nano".

2022-10-07

  • Parser appena creato.