Raccogliere i log di Atlassian Bitbucket
Panoramica
Questo parser estrae i campi dai log JSON di Atlassian Bitbucket e li mappa a UDM. Gestisce vari formati di log e compila le entità principale o di destinazione in base ai campi disponibili, come indirizzi IP, ID utente e informazioni sugli asset. Inoltre, classifica gli eventi in base all'attività di rete e degli utenti e arricchisce i dati con i risultati di sicurezza, se presenti. Il parser dà la priorità a agentRealtimeInfo
rispetto a agentDetectionInfo
durante il completamento dei campi.
Prima di iniziare
Assicurati di soddisfare i seguenti prerequisiti:
- Istanza Google SecOps.
- Accesso privilegiato a un repository all'interno.
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 Atlassian Bitbucket).
- Seleziona Webhook come Tipo di origine.
- Seleziona Atlassian Bitbucket 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 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
- Spazio dei nomi dell'asset: lo spazio dei nomi dell'asset.
- Etichette di importazione: l'etichetta applicata agli eventi di questo feed.
- Nome feed: un valore precompilato che identifica il feed.
Tipo di origine: metodo utilizzato per raccogliere i log in Google SecOps.
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.
Crea una chiave API per il feed webhook
Vai alla consoleGoogle Cloud > Credenziali.
Fai clic su Crea credenziali e poi seleziona Chiave API.
Limita l'accesso della chiave API all'API Google Security Operations.
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 Security Operations.SECRET
: la chiave segreta che hai generato per autenticare il feed.
Crea un webhook in Atlassian Bitbucket
- In Bitbucket, vai alle impostazioni del repository.
- Fai clic su Webhook in Flusso di lavoro.
- Fai clic su Aggiungi webhook.
- Configura i seguenti campi:
- Titolo: fornisci un nome descrittivo (ad esempio Google SecOps).
- URL: inserisci l'URL dell'endpoint API Google SecOps.
- Stato: impostato su Attivo.
- Trigger: seleziona gli eventi pertinenti.
- Fai clic su Salva.
Tabella di mappatura UDM
Campo log | Mappatura UDM | Logic |
---|---|---|
agentComputerName |
principal.hostname |
Compilato da agentRealtimeInfo.agentComputerName . |
agentDetectionInfo.accountId |
metadata.product_deployment_id |
Convertito in stringa. Utilizzato se agentRealtimeInfo.accountId non è presente. |
agentDetectionInfo.accountName |
metadata.product_name |
Utilizzato se agentRealtimeInfo.accountName non è presente. |
agentDetectionInfo.agentDomain |
principal.administrative_domain |
Mappato direttamente. |
agentDetectionInfo.agentIpV4 |
target.ip |
Estratto dall'array JSON e unito al campo target.ip . |
agentDetectionInfo.agentIpV6 |
principal.ip |
Estratto dall'array JSON e unito al campo principal.ip . |
agentDetectionInfo.agentLastLoggedInUserName |
principal.user.userid |
Analizzato per estrarre l'ID utente e il dominio (se presente). Se non è presente alcun dominio, viene mappato direttamente a principal.user.userid . |
agentDetectionInfo.agentOsName |
principal.platform_version , principal.asset.platform_software.platform_version |
Utilizzato se agentRealtimeInfo.agentOsName non è presente. |
agentDetectionInfo.agentOsRevision |
principal.platform_patch_level , principal.asset.platform_software.platform_patch_level |
Utilizzato se agentRealtimeInfo.agentOsRevision non è presente. |
agentDetectionInfo.agentRegisteredAt |
principal.asset.first_discover_time |
Analizzato come timestamp ISO8601. |
agentDetectionInfo.agentUuid |
principal.asset_id , principal.asset.asset_id |
Utilizzato se agentRealtimeInfo.agentUuid non è presente. Prefisso "agentUuid:". |
agentDetectionInfo.agentVersion |
metadata.product_version |
Utilizzato se agentRealtimeInfo.agentVersion non è presente. |
agentDetectionInfo.externalIp |
target.ip |
Mappato direttamente. |
agentDetectionInfo.groupId |
principal.user.group_identifiers |
Unito al campo se non è vuoto o "-". Utilizzato se agentRealtimeInfo.groupId non è presente. |
agentDetectionInfo.groupName |
principal.group.group_display_name |
Utilizzato se agentRealtimeInfo.groupName non è presente. |
agentDetectionInfo.siteId |
additional.fields |
Aggiunto come coppia chiave-valore con la chiave "agentDetectionInfo.siteId". Utilizzato se agentRealtimeInfo.siteId non è presente. |
agentDetectionInfo.siteName |
additional.fields |
Aggiunto come coppia chiave-valore con la chiave "agentDetectionInfo.siteName". Utilizzato se agentRealtimeInfo.siteName non è presente. |
agentRealtimeInfo.accountId |
metadata.product_deployment_id |
Convertito in stringa. |
agentRealtimeInfo.accountName |
metadata.product_name |
Mappato direttamente. |
agentRealtimeInfo.agentComputerName |
principal.hostname , principal.asset.hostname |
Mappato direttamente. |
agentRealtimeInfo.agentId |
principal.asset_id , principal.asset.asset_id |
Prefisso "agentId:". |
agentRealtimeInfo.agentMachineType |
principal.asset.category |
Mappato direttamente. |
agentRealtimeInfo.agentOsName |
principal.platform_version , principal.asset.platform_software.platform_version |
Mappato direttamente. |
agentRealtimeInfo.agentOsRevision |
principal.platform_patch_level , principal.asset.platform_software.platform_patch_level |
Mappato direttamente. |
agentRealtimeInfo.agentOsType |
principal.asset.platform_software.platform , principal.platform |
Mappato su WINDOWS, MAC o LINUX in base al valore. |
agentRealtimeInfo.agentUuid |
principal.asset_id , principal.asset.asset_id |
Mappato direttamente. Prefisso "agentUuid:". |
agentRealtimeInfo.agentVersion |
metadata.product_version |
Mappato direttamente. |
agentRealtimeInfo.groupId |
principal.user.group_identifiers |
Unito al campo se non è vuoto o "-". |
agentRealtimeInfo.groupName |
principal.group.group_display_name |
Mappato direttamente. |
agentRealtimeInfo.siteId |
additional.fields |
Aggiunto come coppia chiave-valore con la chiave "agentDetectionInfo.siteId". |
agentRealtimeInfo.siteName |
additional.fields |
Aggiunto come coppia chiave-valore con la chiave "agentDetectionInfo.siteName". |
associatedItems.0.id |
principal.resource.id |
Mappato direttamente. |
associatedItems.0.name |
principal.resource.name |
Mappato direttamente. |
associatedItems.0.typeName |
principal.resource.resource_subtype |
Mappato direttamente. |
authorAccountId |
principal.user.userid |
Mappato direttamente. |
category |
metadata.product_event_type |
Mappato direttamente. Se non è presente e il messaggio contiene "minacce", impostalo su "Minacce". |
id |
metadata.product_log_id |
Convertito in stringa. |
indicators.0.description |
security_result.description |
Mappato direttamente. |
objectItem.id |
additional.fields |
Aggiunto come coppia chiave-valore con la chiave "objectItem.id". |
objectItem.name |
additional.fields |
Aggiunto come coppia chiave-valore con la chiave "objectItem.name". |
objectItem.typeName |
additional.fields |
Aggiunto come coppia chiave-valore con la chiave "objectItem.typeName". |
remoteAddress |
principal.ip |
Mappato direttamente. |
summary |
security_result.summary |
Mappato direttamente. |
threatInfo.classification |
security_result.category_details |
Mappato direttamente. Utilizzato anche per determinare security_result.category . |
threatInfo.collectionId |
metadata.ingestion_labels |
Aggiunto come coppia chiave-valore con la chiave "alert_aggregation_value". |
threatInfo.confidenceLevel |
security_result.confidence_details |
Mappato direttamente. Utilizzato anche per determinare security_result.confidence . |
threatInfo.createdAt |
metadata.collected_timestamp |
Analizzato come timestamp ISO8601. |
threatInfo.detectionEngines |
metadata.ingestion_labels |
key e title di ogni elemento vengono aggiunti come coppie chiave-valore. |
threatInfo.fileExtensionType |
target.process.file.mime_type |
Mappato direttamente. |
threatInfo.filePath |
target.file.full_path |
Mappato direttamente. |
threatInfo.fileSize |
target.file.size |
Convertito in stringa, poi in numero intero senza segno. |
threatInfo.identifiedAt |
event_timestamp |
Analizzato come timestamp ISO8601. |
threatInfo.maliciousProcessArguments |
principal.process.command_line |
Mappato direttamente. Utilizzato anche nel campo security_result.summary se summary non è presente. |
threatInfo.md5 |
target.file.md5 |
Mappato direttamente. |
threatInfo.originatorProcess |
target.process.parent_process.file.full_path |
Mappato direttamente. Utilizzato anche nel campo security_result.summary se summary non è presente. |
threatInfo.processUser |
target.user.userid |
Mappato direttamente. |
threatInfo.sha1 |
target.file.sha1 |
Mappato direttamente. |
threatInfo.sha256 |
target.file.sha256 |
Mappato direttamente. |
threatInfo.storyline |
principal.process.product_specific_process_id |
Prefisso "ID:". |
threatInfo.threatId |
security_result.threat_id |
Mappato direttamente. |
threatInfo.threatName |
security_result.threat_name , target.file.names |
Mappato e unito direttamente in target.file.names . Utilizzato anche nel campo security_result.summary se summary non è presente. Imposta inizialmente su "GENERIC_EVENT". Modificato in "NETWORK_UNCATEGORIZED", "STATUS_UPDATE" o "USER_UNCATEGORIZED" in base alla presenza di IP/nome host/utente principale e di destinazione. Copiato dal campo event.type . Imposta "Atlassian Bitbucket". Inizialmente impostato su "Atlassian Bitbucket". Può essere sostituito da agentRealtimeInfo.accountName o agentDetectionInfo.accountName . |
timestamp |
metadata.event_timestamp , timestamp |
Mappato direttamente. |
Hai bisogno di ulteriore assistenza? Ricevi risposte dai membri della community e dai professionisti di Google SecOps.