Raccogli i log di JFrog Artifactory

Supportato in:

Questo parser gestisce due diversi formati di log JFrog Artifactory. Utilizza pattern grok per identificare ed estrarre i campi da ciascun formato. Poi mappa questi campi all'UDM, gestisce i payload JSON in uno dei formati ed elimina i log che non corrispondono a nessuno dei formati.

Prima di iniziare

  • Assicurati di avere un'istanza Google SecOps.
  • Assicurati di disporre dell'accesso privilegiato a JFrog.

Configura un feed in Google SecOps per importare i log di JFrog Artifactory

  1. Vai a Impostazioni SIEM > Feed.
  2. Fai clic su Aggiungi nuova.
  3. Nel campo Nome feed, inserisci un nome per il feed (ad esempio JFrog Artifactory Logs).
  4. Seleziona Webhook come Tipo di origine.
  5. Seleziona JFrog Artifactory come Tipo di log.
  6. Fai clic su Avanti.
  7. (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.
  8. Fai clic su Avanti.
  9. Controlla la configurazione del feed nella schermata Concludi e poi fai clic su Invia.
  10. Fai clic su Genera chiave segreta per generare una chiave segreta per autenticare questo feed.
  11. 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.
  12. Dalla scheda Dettagli, copia l'URL dell'endpoint del feed dal campo Informazioni endpoint. Devi specificare questo URL endpoint nell'applicazione client.
  13. Fai clic su Fine.

Crea una chiave API per il feed webhook

  1. Vai alla console Google 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. Nell'applicazione client, specifica l'URL dell'endpoint HTTPS fornito nel feed webhook.
  2. 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.

  3. 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.

Crea un webhook in JFrog Artifactory per inviare dati a Google SecOps

  1. Accedi all'istanza JFrog utilizzando le tue credenziali di amministratore.
  2. Vai a Amministrazione > Generali > Webhook.
  3. Fai clic su + Nuovo webhook.
  4. Configura le seguenti impostazioni del webhook:

    • Chiave webhook: fornisci un nome descrittivo (ad esempio Google SecOps).
    • URL: inserisci il <ENDPOINT_URL> dell'endpoint API Google SecOps.

    • Eventi: seleziona gli eventi Artifactory che devono attivare il webhook, scegli gli eventi pertinenti alle tue esigenze di monitoraggio della sicurezza (ad esempio deployed, downloaded, deleted).

    • Dominio: se utilizzi un repository virtuale, seleziona il dominio pertinente. In caso contrario, lascia questo campo impostato su Qualsiasi locale.

    • Repository: seleziona il repository specifico o lascialo impostato su Qualsiasi repository remoto o Qualsiasi repository locale, a seconda dei tuoi requisiti.

  5. Fai clic su Test per inviare un evento di test a Google SecOps.

  6. Fai clic su Salva.

Tabella di mappatura UDM

Campo log Mappatura UDM Logica
action read_only_udm.metadata.product_event_type Il valore di action dal log non elaborato viene convertito in minuscolo e mappato.
datetime read_only_udm.metadata.event_timestamp Il campo datetime del log non elaborato viene analizzato e convertito in un timestamp.
hostname read_only_udm.principal.hostname Mappato direttamente dal campo hostname del log non elaborato.
id read_only_udm.metadata.product_log_id Mappato direttamente dal campo id del log non elaborato (dal payload JSON).
ip read_only_udm.principal.ip Mappato direttamente dal campo ip del log non elaborato. Hardcoded in "USER_RESOURCE_ACCESS". Hardcoded su "JFROG_ARTIFACTORY". Hardcoded su "Artifactory". Hardcoded su "JFROG".
owner read_only_udm.principal.user.userid Mappato se username non è presente nel log non elaborato (dal payload JSON).
repo_name read_only_udm.target.resource.name Mappato direttamente dal campo repo_name del log non elaborato.
repo_type read_only_udm.target.resource.resource_subtype Mappato direttamente dal campo repo_type del log non elaborato.
scope read_only_udm.target.resource.name Mappato direttamente dal campo scope del log non elaborato (dal payload JSON).
scope read_only_udm.target.resource.resource_subtype Hardcoded su "scope" se scope è presente nel log non elaborato.
sequenceId read_only_udm.metadata.product_log_id Le virgolette vengono rimosse dal campo sequenceId e poi mappate.
subject read_only_udm.about.labels.key Hardcoded su "subject" se subject è presente nel log non elaborato.
subject read_only_udm.about.labels.value Mappato direttamente dal campo subject del log non elaborato (dal payload JSON).
type read_only_udm.metadata.product_event_type Mappato direttamente dal campo type del log non elaborato (dal payload JSON).
user read_only_udm.principal.user.userid Mappato direttamente dal campo user del log non elaborato.
username read_only_udm.principal.user.userid Mappato direttamente dal campo username del log non elaborato (dal payload JSON).

Modifiche

2024-09-23

  • Miglioramento:
  • È stato aggiunto il supporto per l'analisi dei log non analizzati.
  • "target_ip" è stato mappato a "target.ip" e "target.asset.ip".
  • "desc" è stato mappato a "metadata.description".
  • "method" è stato mappato a "network.http.method".
  • "url" è stato mappato a "target.url".
  • "prin_url" è stato mappato a "principal.url".
  • "response_code" è stato mappato a "network.http.response_code".
  • "RequestMethod" è stato mappato a "network.http.method".
  • "RequestPath" è stato mappato a "target.url".
  • "DownstreamContentSize" e "DownstreamStatus" sono stati mappati a "Additional.Fields".
  • "ServiceAddr" è stato mappato a "principal.hostname" e "principal.port".
  • "ClientAddr" è stato mappato a "target.ip" e "target.port".
  • "user_agent" è stato mappato a "network.http.user_agent".
  • "livello" è stato mappato a "security_result.severity".
  • "msg" è stato mappato a "security_result.description".
  • "protocol" è stato mappato a "network.application_protocol".

2023-08-25

  • Parser appena creato.