Raccogli i log di JFrog Artifactory
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
- Vai a Impostazioni SIEM > Feed.
- Fai clic su Aggiungi nuova.
- Nel campo Nome feed, inserisci un nome per il feed (ad esempio JFrog Artifactory Logs).
- Seleziona Webhook come Tipo di origine.
- Seleziona JFrog Artifactory 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.
- Dalla 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 della 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.
Crea un webhook in JFrog Artifactory per inviare dati a Google SecOps
- Accedi all'istanza JFrog utilizzando le tue credenziali di amministratore.
- Vai a Amministrazione > Generali > Webhook.
- Fai clic su + Nuovo webhook.
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.
Fai clic su Test per inviare un evento di test a Google SecOps.
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.