Raccogliere i log di Sysdig
Questo parser estrae i dati degli 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 principal o target, dettagli dei risultati di sicurezza e contesto correlato a Kubernetes, arricchendo i dati per l'analisi in Google SecOps. Il parser esegue anche conversioni dei tipi di dati, gestione degli errori e logica condizionale in base ai valori dei campi per garantire una rappresentazione UDM accurata e completa.
Prima di iniziare
Assicurati di soddisfare i seguenti prerequisiti:
- Istanza Google SecOps.
- Accesso con privilegi a Sysdig Secure.
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 Google Security Operations.
Opzione 1
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 Sysdig Logs.
- Seleziona Webhook come Tipo di origine.
- Seleziona Sysdig 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.
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 il webhook in Sysdig
- Accedi a Sysdig Secure con privilegi di amministratore.
- Vai a Profilo > Impostazioni > Inoltro eventi.
- Fai clic su + Aggiungi integrazione e seleziona Webhook dal menu a discesa.
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
Inoltrare i dati direttamente a Google SecOps
- Accedi a Sysdig Secure utilizzando le tue credenziali di amministratore.
- Vai a Impostazioni > Inoltro eventi.
- Fai clic su + Aggiungi integrazione e seleziona Google Chronicle dal menu a discesa.
- 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, trovi questa opzione in Impostazioni > Profilo.
- Spazio dei nomi: facoltativo. Utilizza questo campo 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 | Logic |
---|---|---|
agentId |
read_only_udm.metadata.product_deployment_id |
Il valore di agentId del log non elaborato viene mappato direttamente a questo campo UDM. |
category |
read_only_udm.security_result.category_details |
Il valore di category del log non elaborato viene mappato direttamente a questo campo UDM. |
content.fields.container.id |
read_only_udm.target.asset.asset_id |
Il valore di content.fields.container.id del log non elaborato viene anteposto a "container_id:" e mappato a questo campo UDM. Utilizzato se containerId è vuoto. |
content.fields.container.image.repository |
read_only_udm.target.file.full_path |
Il valore di content.fields.container.image.repository del log non elaborato viene mappato direttamente a questo campo UDM. |
content.fields.container.image.tag |
read_only_udm.metadata.ingestion_labels.value where key is tag |
Il valore di content.fields.container.image.tag del log non elaborato viene mappato direttamente a questo campo UDM. |
content.fields.evt.res |
read_only_udm.metadata.ingestion_labels.value where key is evt_res |
Il valore di content.fields.evt.res del log non elaborato viene mappato direttamente a questo campo UDM. |
content.fields.evt.type |
read_only_udm.metadata.event_type |
Il valore di content.fields.evt.type del log non elaborato viene mappato direttamente a questo campo UDM. |
content.fields.falco.rule |
read_only_udm.security_result.rule_name |
Il valore di content.fields.falco.rule del log non elaborato viene mappato direttamente a questo campo UDM. Utilizzato se content.ruleName è vuoto. |
content.fields.group.gid |
read_only_udm.target.group.product_object_id |
Il valore di content.fields.group.gid del log non elaborato viene 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 del log non elaborato viene mappato direttamente a questo campo UDM. |
content.fields.proc.cmdline |
read_only_udm.target.process.command_line |
Il valore di content.fields.proc.cmdline del log non elaborato viene 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 del log non elaborato viene mappato direttamente a questo campo UDM. |
content.fields.proc.pid |
read_only_udm.target.process.pid |
Il valore di content.fields.proc.pid del log non elaborato viene 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 del log non elaborato viene mappato direttamente a questo campo UDM. |
content.fields.proc.sid |
read_only_udm.metadata.ingestion_labels.value where key is sid |
Il valore di content.fields.proc.sid del log non elaborato viene 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 del log non elaborato viene mappato direttamente a questo campo UDM. |
content.fields.user.uid |
read_only_udm.principal.user.userid |
Il valore di content.fields.user.uid del log non elaborato viene mappato direttamente a questo campo UDM. |
content.output |
read_only_udm.additional.fields.value.string_value where key is content_output |
Il valore di content.output del log non elaborato viene mappato direttamente a questo campo UDM. |
content.policyId |
read_only_udm.security_result.rule_id |
Il valore di content.policyId del log non elaborato viene mappato direttamente a questo campo UDM. |
content.policyOrigin |
read_only_udm.additional.fields.value.string_value where key is content_policyOrigin |
Il valore di content.policyOrigin del log non elaborato viene mappato direttamente a questo campo UDM. |
content.policyVersion |
read_only_udm.additional.fields.value.string_value where key is content_policyVersion |
Il valore di content.policyVersion del log non elaborato viene mappato direttamente a questo campo UDM. |
content.ruleName |
read_only_udm.security_result.rule_name |
Il valore di content.ruleName del log non elaborato viene 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 where key is content_ruleType |
Il valore di content.ruleType del log non elaborato viene mappato direttamente a questo campo UDM. |
containerId |
read_only_udm.target.asset.asset_id |
Il valore di containerId del log non elaborato viene anteposto a "container_id:" e mappato a questo campo UDM. |
description |
read_only_udm.metadata.description |
Il valore di description del log non elaborato viene mappato direttamente a questo campo UDM. |
id |
read_only_udm.metadata.product_log_id |
Il valore di id del log non elaborato viene mappato direttamente a questo campo UDM. |
labels.container.label.io.kubernetes.container.name |
read_only_udm.additional.fields.value.string_value where key is container_name |
Il valore di labels.container.label.io.kubernetes.container.name del log non elaborato viene mappato direttamente a questo campo UDM. |
labels.container.label.io.kubernetes.pod.name |
read_only_udm.additional.fields.value.string_value where key is pod_name |
Il valore di labels.container.label.io.kubernetes.pod.name del log non elaborato viene mappato direttamente a questo campo UDM. Utilizzato 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 del log non elaborato viene mappato direttamente a questo campo UDM. Utilizzato se labels.kubernetes.namespace.name è vuoto. |
labels.aws.instanceId |
read_only_udm.target.resource.product_object_id |
Il valore di labels.aws.instanceId del log non elaborato viene mappato direttamente a questo campo UDM. |
labels.aws.region |
read_only_udm.target.resource.attribute.cloud.availability_zone |
Il valore di labels.aws.region del log non elaborato viene 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 del log non elaborato viene mappato direttamente a questo campo UDM. Utilizzato se machineId è vuoto. |
labels.kubernetes.cluster.name |
read_only_udm.additional.fields.value.string_value where key is kubernetes_cluster_name |
Il valore di labels.kubernetes.cluster.name del log non elaborato viene mappato direttamente a questo campo UDM. |
labels.kubernetes.deployment.name |
read_only_udm.additional.fields.value.string_value where key is kubernetes_deployment_name |
Il valore di labels.kubernetes.deployment.name del log non elaborato viene mappato direttamente a questo campo UDM. |
labels.kubernetes.namespace.name |
read_only_udm.principal.namespace |
Il valore di labels.kubernetes.namespace.name del log non elaborato viene mappato direttamente a questo campo UDM. |
labels.kubernetes.node.name |
read_only_udm.additional.fields.value.string_value where key is kubernetes_node_name |
Il valore di labels.kubernetes.node.name del log non elaborato viene mappato direttamente a questo campo UDM. |
labels.kubernetes.pod.name |
read_only_udm.additional.fields.value.string_value where key is pod_name |
Il valore di labels.kubernetes.pod.name del log non elaborato viene mappato direttamente a questo campo UDM. |
labels.kubernetes.service.name |
read_only_udm.additional.fields.value.string_value where key is kubernetes_service_name |
Il valore di labels.kubernetes.service.name del log non elaborato viene mappato direttamente a questo campo UDM. |
machineId |
read_only_udm.principal.mac |
Il valore di machineId del log non elaborato viene mappato direttamente a questo campo UDM. |
name |
read_only_udm.security_result.summary |
Il valore di name del log non elaborato viene mappato direttamente a questo campo UDM. |
severity |
read_only_udm.security_result.severity |
Il valore di severity del log non elaborato viene mappato a un valore stringa in base a questi intervalli: <4 = HIGH, >3 e <6 = MEDIUM, 6 = LOW, 7 = INFORMATIONAL. |
source |
read_only_udm.security_result.description |
Il valore di source del log non elaborato viene mappato direttamente a questo campo UDM. |
timestampRFC3339Nano |
read_only_udm.metadata.event_timestamp |
Il valore di timestampRFC3339Nano del 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 del log non elaborato viene mappato direttamente a questo campo UDM. |
(Parser Logic) | read_only_udm.metadata.product_name |
Codificato in modo permanente su "SYSDIG". |
(Parser Logic) | read_only_udm.metadata.vendor_name |
Codificato in modo permanente 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 |
Codificato in modo permanente su "SYSDIG". |
(Parser Logic) | read_only_udm.target.resource.resource_type |
Imposta su "CLOUD_PROJECT" se esiste labels.aws.instanceId . |
Hai bisogno di ulteriore assistenza? Ricevi risposte dai membri della community e dai professionisti di Google SecOps.