Raccogli i log di Jenkins

Supportata in:

Questo parser estrae informazioni chiave come timestamp, ID utente, IP di origine, azioni e ID oggetto dai log formattati in JSON e SYSLOG. Utilizza i pattern grok per trovare corrispondenze con vari formati di messaggi di log, gestendo le variazioni nella struttura e compilando un modello UDM (Unified Data Model) con i campi estratti. Il parser classifica anche gli eventi in base alla presenza di informazioni sull'utente o sull'IP.

Prima di iniziare

Assicurati di soddisfare i seguenti prerequisiti:

  • Istanza Google SecOps.
  • Accesso privilegiato a Google Cloud IAM.
  • Accesso privilegiato allo spazio di archiviazione di Google Cloud .
  • Accesso privilegiato a Jenkins.

Crea un bucket di archiviazione Google Cloud

  1. Vai a Cloud Storage.
  2. Crea un nuovo bucket. Scegli un nome univoco e una regione appropriata.
  3. Assicurati che il bucket disponga di controlli degli accessi appropriati (ad esempio, solo i service account autorizzati possono scrivere nel bucket).

Crea un Google Cloud service account

  1. Vai a IAM e amministrazione > Account di servizio.
  2. Crea un nuovo account di servizio. Assegna un nome descrittivo (ad esempio jenkins-logs).
  3. Concedi al account di servizio il ruolo Storage Object Creator nel bucket GCS creato nel passaggio precedente.
  4. Crea una chiave SSH per il tuo account di servizio: Crea ed elimina le account di servizio account.
  5. Scarica un file della chiave JSON per il account di servizio.

Installa il plug-in di archiviazione Google Cloud in Jenkins

  1. Vai a Manage Jenkins (Gestisci Jenkins) > Plugins (Plug-in).
  2. Seleziona Plug-in disponibili.
  3. Cerca il plug-in Google Cloud Storage.
  4. Installa il plug-in e riavvia Jenkins, se necessario.

Installa il plug-in Google OAuth Credentials in Jenkins

  1. Vai a Manage Jenkins (Gestisci Jenkins) > Plugins (Plug-in).
  2. Seleziona Plug-in disponibili.
  3. Cerca il plug-in Google OAuth Credentials.
  4. Installa il plug-in e riavvia Jenkins, se necessario.

Configura Jenkins per l'autenticazione con Google Cloud

  1. Vai a Manage Jenkins (Gestisci Jenkins) > Credentials (Credenziali) > System (Sistema).

  2. Fai clic su add Aggiungi credenziali.

  3. Tipo: seleziona Google service account da chiave privata.

  4. Nome progetto: imposta un nome per le credenziali.

  5. Carica il file della chiave JSON ottenuto durante la creazione del service account Google Cloud .

  6. Fai clic su Crea.

Configura i log di Jenkins per caricarli su Google SecOps

  1. Nella configurazione del job Jenkins, aggiungi Google Storage Build Log Upload nelle azioni post-build, con i seguenti parametri:
    • Google Credentials (Credenziali Google): il nome delle credenziali Google create nel passaggio precedente.
    • Nome log: il nome del file in cui archiviare il log di build di Jenkins, nel percorso di archiviazione specificato.
    • Località di archiviazione: il nome del bucket in cui vuoi caricare i log. Il bucket deve essere accessibile al account di servizio che hai creato.
  2. Testa il caricamento dei log.

Configura i feed

Per configurare un feed:

  1. Vai a Impostazioni > Gestione dei dati > Feed. Se utilizzi una piattaforma solo SIEM, vai a Impostazioni > Feed.
  2. Fai clic su Aggiungi nuovo feed.
  3. Nella pagina successiva, fai clic su Configura un singolo feed.
  4. Nel campo Nome feed, inserisci un nome per il feed, ad esempio Log di Jenkins.
  5. Seleziona Google Cloud Storage V2 come Tipo di origine.
  6. Seleziona Jenkins come Tipo di log.
  7. Fai clic su Ottieni service account come Service account Chronicle.
  8. Specifica i valori per i seguenti parametri di input:

    • URI bucket di archiviazione: URL del bucket di archiviazione Google Cloud nel formato gs://my-bucket/<value>/. Questo URL deve terminare con una barra (/).
    • Opzioni di eliminazione dell'origine: seleziona l'opzione di eliminazione in base alle tue preferenze.
  9. Fai clic su Crea feed.

Tabella di mappatura UDM

Campo log Mappatura UDM Logica
act security_result.action_details Estratto dai campi msg1 o msg2. Rappresenta l'azione eseguita. Lo spazio vuoto iniziale viene rimosso.
dati principal.user.userid OPPURE principal.ip OPPURE metadata.description Se i dati corrispondono a un pattern di indirizzo IP, vengono mappati a principal.ip. Se corrisponde a un pattern di nome utente, viene mappato a principal.user.userid. In caso contrario, viene mappato a metadata.description.
msg1 target.asset.product_object_id OPPURE security_result.action_details Utilizzato per estrarre object e act. Se è presente un /, viene suddiviso in object e act. Se è presente », viene suddiviso in object e act. In caso contrario, viene trattato come act e potenzialmente analizzato ulteriormente.
msg2 metadata.description OPPURE security_result.action_details Se presente, inizialmente mappato a metadata.description. Se contiene "completed:", il valore successivo viene estratto e mappato a security_result.action_details.
oggetto target.asset.product_object_id Estratto da msg1. Rappresenta l'oggetto su cui è stata eseguita l'azione.
object_id target.resource.attribute.labels.value Estratto da object se è presente un /. Rappresenta un identificatore di oggetto più specifico. La chiave è impostata come hardcoded su "Plugin Name".
src_ip principal.ip Estratto da message o data. Rappresenta l'indirizzo IP di origine.
user principal.user.userid Estratto da message o data. Rappresenta l'utente associato all'evento.
metadata.event_timestamp Copiato dal campo calcolato @timestamp.
metadata.event_type Determinato dalla logica del parser. Impostato su USER_UNCATEGORIZED se è presente user, su STATUS_UNCATEGORIZED se è presente src_ip e su GENERIC_EVENT in caso contrario.
metadata.product_name Impostato come hardcoded su Jenkins.
metadata.product_version Impostato come hardcoded su Jenkins.
metadata.vendor_name Impostato come hardcoded su JENKINS.
metadata.event_timestamp Costruito dai campi year, month, day, time e ampm.

Log delle modifiche

Visualizza il log delle modifiche per questo parser

Hai bisogno di ulteriore assistenza? Ricevi risposte dai membri della community e dai professionisti di Google SecOps.