Raccogliere i log di Atlassian Bitbucket
Panoramica
Questo parser estrae i campi dai log JSON di Atlassian Bitbucket e li mappa all'UDM. Gestisce vari formati di log, compila le entità principali 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à della 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 avere un'istanza Google SecOps.
- Assicurati di disporre dell'accesso privilegiato a un repository al suo interno.
Configura un feed in Google SecOps per importare i log di Atlassian Bitbucket
- Vai a Impostazioni SIEM > Feed.
- Fai clic su Aggiungi nuovo.
- 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 split: il delimitatore utilizzato per separare le righe di log, ad esempio
\n
. - Spazio dei nomi degli asset: lo spazio dei nomi degli asset.
- Etichette di importazione: l'etichetta applicata agli eventi di questo feed.
- Delimitatore di split: 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.
- Nella scheda Dettagli, copia l'URL dell'endpoint del feed dal campo Informazioni endpoint. Devi specificare questo URL endpoint nell'applicazione client.
- Fai clic su Fine.
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 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 Security Operations.SECRET
: la chiave segreta che hai generato per autenticare il feed.
Creare 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.
- Attivatori: seleziona gli eventi pertinenti.
- Fai clic su Salva.
Tabella di mappatura UDM
Campo log | Mappatura UDM | Logica |
---|---|---|
agentComputerName |
principal.hostname |
Dati inseriti 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 |
Mappatura diretta. |
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 |
Analizzati 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 |
Analizzata come timestamp ISO8601. |
agentDetectionInfo.agentUuid |
principal.asset_id , principal.asset.asset_id |
Utilizzato se agentRealtimeInfo.agentUuid non è presente. Deve essere preceduto dal prefisso "agentUuid:". |
agentDetectionInfo.agentVersion |
metadata.product_version |
Utilizzato se agentRealtimeInfo.agentVersion non è presente. |
agentDetectionInfo.externalIp |
target.ip |
Mappatura diretta. |
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 chiave "agentDetectionInfo.siteId". Utilizzato se agentRealtimeInfo.siteId non è presente. |
agentDetectionInfo.siteName |
additional.fields |
Aggiunto come coppia chiave-valore con chiave "agentDetectionInfo.siteName". Utilizzato se agentRealtimeInfo.siteName non è presente. |
agentRealtimeInfo.accountId |
metadata.product_deployment_id |
Convertito in stringa. |
agentRealtimeInfo.accountName |
metadata.product_name |
Mappatura diretta. |
agentRealtimeInfo.agentComputerName |
principal.hostname , principal.asset.hostname |
Mappatura diretta. |
agentRealtimeInfo.agentId |
principal.asset_id , principal.asset.asset_id |
Deve essere preceduto dal prefisso "agentId:". |
agentRealtimeInfo.agentMachineType |
principal.asset.category |
Mappatura diretta. |
agentRealtimeInfo.agentOsName |
principal.platform_version , principal.asset.platform_software.platform_version |
Mappatura diretta. |
agentRealtimeInfo.agentOsRevision |
principal.platform_patch_level , principal.asset.platform_software.platform_patch_level |
Mappatura diretta. |
agentRealtimeInfo.agentOsType |
principal.asset.platform_software.platform , principal.platform |
Mappato a WINDOWS, MAC o LINUX in base al valore. |
agentRealtimeInfo.agentUuid |
principal.asset_id , principal.asset.asset_id |
Mappatura diretta. Deve essere preceduto dal prefisso "agentUuid:". |
agentRealtimeInfo.agentVersion |
metadata.product_version |
Mappatura diretta. |
agentRealtimeInfo.groupId |
principal.user.group_identifiers |
Unito al campo se non vuoto o "-". |
agentRealtimeInfo.groupName |
principal.group.group_display_name |
Mappatura diretta. |
agentRealtimeInfo.siteId |
additional.fields |
Aggiunto come coppia chiave-valore con chiave "agentDetectionInfo.siteId". |
agentRealtimeInfo.siteName |
additional.fields |
Aggiunto come coppia chiave-valore con chiave "agentDetectionInfo.siteName". |
associatedItems.0.id |
principal.resource.id |
Mappatura diretta. |
associatedItems.0.name |
principal.resource.name |
Mappatura diretta. |
associatedItems.0.typeName |
principal.resource.resource_subtype |
Mappatura diretta. |
authorAccountId |
principal.user.userid |
Mappatura diretta. |
category |
metadata.product_event_type |
Mappatura diretta. Se non è presente e il messaggio contiene "minacce", imposta "Minacce". |
id |
metadata.product_log_id |
Convertito in stringa. |
indicators.0.description |
security_result.description |
Mappatura diretta. |
objectItem.id |
additional.fields |
Aggiunto come coppia chiave-valore con chiave "objectItem.id". |
objectItem.name |
additional.fields |
Aggiunto come coppia chiave-valore con chiave "objectItem.name". |
objectItem.typeName |
additional.fields |
Aggiunto come coppia chiave-valore con chiave "objectItem.typeName". |
remoteAddress |
principal.ip |
Mappatura diretta. |
summary |
security_result.summary |
Mappatura diretta. |
threatInfo.classification |
security_result.category_details |
Mappatura diretta. Utilizzato anche per determinare security_result.category . |
threatInfo.collectionId |
metadata.ingestion_labels |
Aggiunto come coppia chiave-valore con chiave "alert_aggregation_value". |
threatInfo.confidenceLevel |
security_result.confidence_details |
Mappatura diretta. Utilizzato anche per determinare security_result.confidence . |
threatInfo.createdAt |
metadata.collected_timestamp |
Analizzata 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 |
Mappatura diretta. |
threatInfo.filePath |
target.file.full_path |
Mappatura diretta. |
threatInfo.fileSize |
target.file.size |
Convertito in stringa e poi in numero intero non firmato. |
threatInfo.identifiedAt |
event_timestamp |
Analizzata come timestamp ISO8601. |
threatInfo.maliciousProcessArguments |
principal.process.command_line |
Mappatura diretta. Utilizzato anche nel campo security_result.summary se summary non è presente. |
threatInfo.md5 |
target.file.md5 |
Mappatura diretta. |
threatInfo.originatorProcess |
target.process.parent_process.file.full_path |
Mappatura diretta. Utilizzato anche nel campo security_result.summary se summary non è presente. |
threatInfo.processUser |
target.user.userid |
Mappatura diretta. |
threatInfo.sha1 |
target.file.sha1 |
Mappatura diretta. |
threatInfo.sha256 |
target.file.sha256 |
Mappatura diretta. |
threatInfo.storyline |
principal.process.product_specific_process_id |
Deve essere preceduto dal prefisso "ID:". |
threatInfo.threatId |
security_result.threat_id |
Mappatura diretta. |
threatInfo.threatName |
security_result.threat_name , target.file.names |
Mappati e uniti direttamente in target.file.names . Utilizzato anche nel campo security_result.summary se summary non è presente. Impostato 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 su "Atlassian Bitbucket". Impostato inizialmente su "Atlassian Bitbucket". Può essere sostituito da agentRealtimeInfo.accountName o agentDetectionInfo.accountName . |
timestamp |
metadata.event_timestamp , timestamp |
Mappatura diretta. |
Modifiche
2023-06-12
- Parser appena creato.