Raccogliere i log Jenkins
Panoramica
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 a Google Cloud Storage.
- Accesso con privilegi a Jenkins.
Crea un Google Cloud bucket di archiviazione
- Vai a Cloud Storage.
- Crea un nuovo bucket. Scegli un nome univoco e una regione appropriata.
- Assicurati che il bucket disponga di controlli dell'accesso appropriati (ad esempio, solo gli account di servizio autorizzati possono scriverci).
Crea un Google Cloud service account
- Vai a IAM e amministrazione > Service Accounts.
- Crea un nuovo account di servizio. Assegna un nome descrittivo (ad esempio, jenkins-logs).
- Concedi all'account di servizio il ruolo Creatore oggetti Storage nel bucket GCS creato nel passaggio precedente.
- Crea una chiave SSH per il account di servizio: Crea ed elimina le account di servizio account.
Scarica un file della chiave JSON per il account di servizio.
Installa Google Cloud il plug-in Storage in Jenkins
- Vai a Manage Jenkins (Gestisci Jenkins) > Plugins (Plug-in).
- Seleziona Plug-in disponibili.
- Cerca il plug-in Google Cloud Storage.
- Installa il plug-in e riavvia Jenkins, se necessario.
Installare il plug-in delle credenziali OAuth di Google in Jenkins
- Vai a Manage Jenkins (Gestisci Jenkins) > Plugins (Plug-in).
- Seleziona Plug-in disponibili.
- Cerca il plug-in Google OAuth Credentials.
- Installa il plug-in e riavvia Jenkins, se necessario.
Configura Jenkins per l'autenticazione con Google Cloud
Vai a Manage Jenkins > Credentials > System.
Fai clic su aggiungi Aggiungi credenziali.
Kind: seleziona Google Service Account from private key.
Nome progetto: imposta un nome per le credenziali.
Carica il file della chiave JSON che hai ottenuto durante la creazione dell'account di servizio. Google Cloud
Fai clic su Crea.
Configura i log di Jenkins per il caricamento di Google SecOps
- Nella configurazione del job Jenkins, aggiungi Google Storage Build Log Upload nelle azioni post-build, con i seguenti parametri:
- Credenziali Google: il nome delle credenziali Google che hai creato nel passaggio precedente.
- Nome log: il nome del file in cui archiviare il log di build di Jenkins, nel percorso di archiviazione specificato.
- Posizione di archiviazione: il nome del bucket in cui vuoi caricare i log. Il bucket deve essere accessibile all'account di servizio che hai creato.
- Testa il caricamento del log.
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 di Jenkins.
- Seleziona Google Cloud Storage come Tipo di origine.
- Seleziona Jenkins come Tipo di log.
- Fai clic su Ottieni account di servizio come Account di servizio Chronicle.
- Fai clic su Avanti.
Specifica i valori per i seguenti parametri di input:
- URI bucket di archiviazione: Google Cloud URL del bucket di archiviazione nel formato
gs://my-bucket/<value>
. - L'URI è un: seleziona Directory che include sottodirectory.
- Opzioni di eliminazione dell'origine: seleziona l'opzione di eliminazione in base alle tue preferenze.
- URI bucket di archiviazione: Google Cloud URL del bucket di archiviazione nel formato
Fai clic su Avanti.
Controlla la nuova configurazione del feed nella schermata Finalizza e poi fai clic su Invia.
Configurare i feed dall'hub dei contenuti
Specifica i valori per i seguenti campi:
- URI bucket di archiviazione: Google Cloud URL del bucket di archiviazione nel formato
gs://my-bucket/<value>
. - L'URI è un: seleziona Directory che include sottodirectory.
- Opzioni di eliminazione dell'origine: seleziona l'opzione di eliminazione in base alle tue preferenze.
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.
Tabella di mappatura UDM
Campo log | Mappatura UDM | Logic |
---|---|---|
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 O principal.ip O metadata.description | Se data corrisponde a un pattern di indirizzo IP, viene mappato a principal.ip. Se corrisponde a un pattern del nome utente, viene mappato a principal.user.userid. In caso contrario, viene mappato su metadata.description. |
msg1 | target.asset.product_object_id O security_result.action_details | Utilizzato per estrarre oggetto e azione. Se è presente un / , viene suddiviso in oggetto e azione. Se è presente » , viene suddiviso in oggetto e azione. In caso contrario, viene trattato come azione e potenzialmente analizzato ulteriormente. |
msg2 | metadata.description O security_result.action_details | Se presente, inizialmente mappato su 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 dall'oggetto se è presente un / . Rappresenta un identificatore dell'oggetto più specifico. La chiave è codificata come "Plugin Name". |
src_ip | principal.ip | Estratto dal messaggio o dai dati. Rappresenta l'indirizzo IP di origine. |
user | principal.user.userid | Estratto dal messaggio o dai dati. Rappresenta l'utente associato all'evento. |
metadata.event_timestamp | Copiato dal campo calcolato @timestamp. | |
metadata.event_type | Determinato dalla logica del parser. Imposta USER_UNCATEGORIZED se è presente user, STATUS_UNCATEGORIZED se è presente src_ip e GENERIC_EVENT altrimenti. | |
metadata.product_name | Codificato come Jenkins. | |
metadata.product_version | Codificato come Jenkins. | |
metadata.vendor_name | Codificato come JENKINS. | |
metadata.event_timestamp | Costruito a partire dai campi anno, mese, giorno, ora e am/pm. |
Hai bisogno di ulteriore assistenza? Ricevi risposte dai membri della community e dai professionisti di Google SecOps.