Raccogliere i log di Atlassian Bitbucket

Supportato in:

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:

  1. Vai a Impostazioni SIEM > 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 Atlassian Bitbucket).
  5. Seleziona Webhook come Tipo di origine.
  6. Seleziona Atlassian Bitbucket come Tipo di log.
  7. Fai clic su Avanti.
  8. (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.
  9. Fai clic su Avanti.
  10. Controlla la configurazione del feed nella schermata Finalizza e poi fai clic su Invia.
  11. Fai clic su Genera chiave segreta per generare una chiave segreta per autenticare questo feed.
  12. 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.
  13. Nella scheda Dettagli, copia l'URL dell'endpoint del feed dal campo Informazioni sull'endpoint. Devi specificare questo URL dell'endpoint nell'applicazione client.
  14. 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

  1. Vai alla consoleGoogle Cloud > Credenziali.

    Vai a credenziali

  2. Fai clic su Crea credenziali e poi seleziona Chiave API.

  3. Limita l'accesso della chiave API all'API Google Security Operations.

Specifica l'URL dell'endpoint

  1. Nella tua applicazione client, specifica l'URL dell'endpoint HTTPS fornito nel feed webhook.
  2. 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

  1. In Bitbucket, vai alle impostazioni del repository.
  2. Fai clic su Webhook in Flusso di lavoro.
  3. Fai clic su Aggiungi webhook.
  4. 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.
  5. 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.