Raccogliere gli audit log di CircleCI
Questo parser estrae i campi dai log di controllo di CircleCI nei formati CSV e JSON, trasformandoli nel modello UDM (Unified Data Model). Gestisce entrambi i formati, esegue trasformazioni e arricchimenti dei dati e mappa i campi estratti ai campi UDM corrispondenti all'interno dell'oggetto event. Si concentra sulle azioni utente, sull'accesso alle risorse e sugli eventi di aggiornamento, li classifica e compila i campi UDM pertinenti come principal, target, network e metadata.
Prima di iniziare
Assicurati di disporre dei seguenti prerequisiti:
- Istanza Google SecOps.
- Accesso con privilegi a CircleCI.
Configurare i feed
Esistono due diversi punti di contatto per configurare i feed nella piattaforma Google SecOps:
- Impostazioni SIEM > Feed
- Content Hub > 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 CircleCI).
- Seleziona Webhook come Tipo di origine.
- Seleziona CircleCI 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
. - Spazio dei nomi dell'asset: lo spazio dei nomi dell'asset.
- Etichette di importazione: l'etichetta applicata agli eventi di questo feed.
- 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 Concludi 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 potrai più visualizzare questa chiave segreta. Se necessario, puoi rigenerare una nuova chiave segreta, ma questa azione rende obsoleta la chiave segreta precedente.
- Dalla scheda Dettagli, copia l'URL dell'endpoint del feed dal campo Informazioni endpoint. Devi specificare questo URL dell'endpoint nell'applicazione client.
- Fai clic su Fine.
Configurare i feed da Content Hub
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: spazio dei nomi associato al feed.
Etichette di importazione: le 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 potrai più visualizzare questa chiave segreta. Se necessario, puoi rigenerare una nuova chiave segreta, ma questa azione rende obsoleta la chiave segreta precedente.
Dalla scheda Dettagli, copia l'URL dell'endpoint del feed dal campo Informazioni endpoint. Devi specificare questo URL endpoint nell'applicazione client.
Crea una chiave API per il feed webhook
Vai a Google Cloud console > Credenziali.
Fai clic su Crea credenziali e poi seleziona Chiave API.
Limita l'accesso alla chiave API all'API Google Security Operations.
Specifica l'URL dell'endpoint
- Nell'applicazione client, specifica l'URL dell'endpoint HTTPS fornito nel feed webhook.
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.
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.
Configurazione di un webhook in CircleCI
- Accedi all'interfaccia web di CircleCI.
- Seleziona il progetto da cui vuoi importare i log.
- Fai clic su Impostazioni progetto.
- Seleziona Webhook.
- Fai clic su Aggiungi webhook.
Specifica i valori per i seguenti parametri di input:
- Nome webhook: fornisci un nome descrittivo (ad esempio Google SecOps).
- URL endpoint: inserisci il
<ENDPOINT_URL>
dell'endpoint API Google SecOps.
- Eventi:seleziona gli eventi CircleCI che devono attivare l'webhook (ad esempio, seleziona workflow-completed per inviare i dati al termine di un flusso di lavoro).
Fai clic su Salva per creare l'webhook.
Tabella di mappatura UDM
Campo log | Mappatura UDM | Logica |
---|---|---|
account.id | read_only_udm.about.resource.attribute.labels.value | Il valore di account.id dal log non elaborato viene assegnato al campo UDM read_only_udm.about.resource.attribute.labels.value, dove la chiave corrispondente è account_id. |
azione | read_only_udm.metadata.product_event_type | Il valore di action dal log non elaborato viene assegnato al campo UDM read_only_udm.metadata.product_event_type. |
actor.id | read_only_udm.principal.user.product_object_id | Il valore di actor.id dal log non elaborato viene assegnato al campo UDM read_only_udm.principal.user.product_object_id. |
actor.name | read_only_udm.principal.user.userid | Il prefisso "github: " viene rimosso dal campo actor.name nel log non elaborato. Il valore rimanente viene assegnato al campo UDM read_only_udm.principal.user.userid. Se actor.name esiste nel log non elaborato, il valore USER_RESOURCE_UPDATE_CONTENT viene assegnato a read_only_udm.metadata.event_type. In caso contrario, viene assegnato USER_RESOURCE_ACCESS. |
id | read_only_udm.metadata.product_log_id | Il valore di id dal log non elaborato viene assegnato al campo UDM read_only_udm.metadata.product_log_id. Il parser imposta read_only_udm.metadata.log_type su CIRCLECI. Il parser imposta read_only_udm.metadata.product_name su CIRCLECI. Il parser imposta read_only_udm.metadata.vendor_name su CIRCLECI. |
occurred_at | read_only_udm.metadata.event_timestamp | Il valore di occurred_at dal log non elaborato viene analizzato come timestamp e assegnato al campo UDM read_only_udm.metadata.event_timestamp. |
organization.name | read_only_udm.target.administrative_domain | Il prefisso "github: " viene rimosso dal campo organization.name nel log non elaborato. Il valore rimanente viene assegnato al campo UDM read_only_udm.target.administrative_domain. |
payload.job.id | read_only_udm.about.resource.attribute.labels.value | Il valore di payload.job.id dal log non elaborato viene assegnato al campo UDM read_only_udm.about.resource.attribute.labels.value, dove la chiave corrispondente è job_id. |
payload.job.job_name | read_only_udm.about.resource.attribute.labels.value | Il valore di payload.job.job_name dal log non elaborato viene assegnato al campo UDM read_only_udm.about.resource.attribute.labels.value, dove la chiave corrispondente è job_name. |
payload.job.job_status | read_only_udm.about.resource.attribute.labels.value | Il valore di payload.job.job_status dal log non elaborato viene assegnato al campo UDM read_only_udm.about.resource.attribute.labels.value, dove la chiave corrispondente è job_status. |
payload.workflow.id | read_only_udm.about.resource.attribute.labels.value | Il valore di payload.workflow.id dal log non elaborato viene assegnato al campo UDM read_only_udm.about.resource.attribute.labels.value, dove la chiave corrispondente è workflow_id. |
request.id | read_only_udm.network.session_id | Il valore di request.id dal log non elaborato viene assegnato al campo UDM read_only_udm.network.session_id. |
scope.id | read_only_udm.about.resource.attribute.labels.value | Il valore di scope.id dal log non elaborato viene assegnato al campo UDM read_only_udm.about.resource.attribute.labels.value, dove la chiave corrispondente è scope_id. Il parser imposta inizialmente sec_action su BLOCK. Se il campo success nel log non elaborato è true, sec_action viene modificato in ALLOW. Il valore di sec_action viene quindi assegnato al campo UDM read_only_udm.security_result.action. |
target.id | read_only_udm.target.resource.product_object_id | Il valore di target.id dal log non elaborato viene assegnato al campo UDM read_only_udm.target.resource.product_object_id. |
target.name | read_only_udm.target.resource.name | Il prefisso "github: " viene rimosso dal campo target.name nel log non elaborato. Il valore rimanente viene assegnato al campo UDM read_only_udm.target.resource.name. Il parser imposta read_only_udm.target.resource.resource_type su STORAGE_OBJECT. |
version | read_only_udm.target.resource.attribute.labels.value | Il valore di version dal log non elaborato viene convertito in una stringa e assegnato al campo UDM read_only_udm.target.resource.attribute.labels.value, dove la chiave corrispondente è version. |
Modifiche
2023-03-09
- Parser appena creato.
Hai bisogno di ulteriore assistenza? Ricevi risposte dai membri della community e dai professionisti di Google SecOps.