Raccogliere i log di Atlassian Jira

Supportato in:

Panoramica

Questo parser gestisce i log di Atlassian Jira nei formati SYSLOG e JSON. Innanzitutto tenta di analizzare il messaggio come JSON. In caso di fallimento, utilizza i pattern grok per analizzare i messaggi formattati SYSLOG, estraendo vari campi come indirizzi IP, nomi utente, metodi HTTP e codici di risposta prima di mapparli all'UDM. Il parser gestisce anche eventi di controllo Jira specifici, inclusi i successi e gli errori di accesso, e mappa i campi pertinenti agli attributi dei risultati di sicurezza all'interno dell'UDM.

Prima di iniziare

  • Assicurati di avere un'istanza Google SecOps.
  • Assicurati di disporre dell'accesso privilegiato ad Atlassian Jira.

Configura un feed in Google SecOps per importare i log di Atlassian Jira

  1. Vai a Impostazioni SIEM > Feed.
  2. Fai clic su Aggiungi nuovo.
  3. Nel campo Nome feed, inserisci un nome per il feed (ad esempio Log di Atlassian Jira).
  4. Seleziona Webhook come Tipo di origine.
  5. Seleziona Atlassian Jira 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. Nella 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 alla 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. Se il client webhook non supporta le intestazioni personalizzate, puoi specificare la chiave API e la chiave segreta utilizzando i parametri di query 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 Jira per Google SecOps

  1. Accedi alla tua istanza Jira come amministratore.
  2. Vai a Impostazioni settings > Sistema > WebHook.
  3. Fai clic su Crea un webhook.
  4. Configura i seguenti dettagli del webhook:
    • Nome: fornisci un nome descrittivo per il webhook (ad esempio Integrazione Google SecOps).
    • URL: inserisci l'URL dell'endpoint dell'API Google SecOps.
    • Eventi: seleziona gli eventi Jira che devono attivare l'webhook. Scegli gli eventi pertinenti alle tue esigenze di monitoraggio della sicurezza (ad esempio, problema creato, problema aggiornato, commento aggiunto). Se necessario, puoi selezionare Tutti gli eventi.
    • (Facoltativo) Filtro JQL: utilizza un filtro JQL per perfezionare ulteriormente gli eventi che attivano il webhook. Questo è utile per concentrarsi su progetti, tipi di problemi o altri criteri specifici.
    • Escludi corpo: lascia deselezionata questa opzione. Il webhook deve inviare i dati sugli eventi in formato JSON a Google SecOps.
  5. Fai clic su Crea per salvare la configurazione dell'webhook.

Tabella di mappatura UDM

Campo log Mappatura UDM Logica
affectedObjects.id target.resource.attribute.labels.value Il campo id all'interno di ogni oggetto dell'array affectedObjects è mappato a un'etichetta con chiave "ID_[index]", dove [index] è la posizione dell'oggetto nell'array.
affectedObjects.name target.resource.attribute.labels.value Il campo name all'interno di ogni oggetto dell'array affectedObjects è mappato a un'etichetta con chiave "Nome_[indice]", dove [indice] è la posizione dell'oggetto nell'array.
affectedObjects.type target.resource.attribute.labels.value Il campo type all'interno di ogni oggetto dell'array affectedObjects è mappato a un'etichetta con chiave "Tipo_[indice]", dove [indice] è la posizione dell'oggetto nell'array.
associatedItems.0.id target.user.userid Se associatedItems.0.typeName è "USER", questo campo è mappato a target.user.userid. In caso contrario, viene mappato a un'etichetta con la chiave "associatedItems Id" in security_result.detection_fields.
associatedItems.0.name target.user.user_display_name Se associatedItems.0.typeName è "USER", questo campo è mappato a target.user.user_display_name. In caso contrario, viene mappato a un'etichetta con la chiave "associatedItems Name" in security_result.detection_fields.
associatedItems.0.parentId target.process.parent_process.pid Se associatedItems.0.typeName è "USER", questo campo è mappato a target.process.parent_process.pid.
associatedItems.0.parentName target.resource.parent Se associatedItems.0.typeName è "USER", questo campo è mappato a target.resource.parent.
associatedItems.0.typeName security_result.detection_fields.value Mappato a un'etichetta con chiave "associatedItems TypeName" in security_result.detection_fields.
author.id principal.user.userid Mappatura a principal.user.userid.
author.name principal.user.user_display_name Mappatura a principal.user.user_display_name.
author.type principal.resource.attribute.labels.value Mappato a un'etichetta con chiave "Tipo di autore" in principal.resource.attribute.labels.
author.uri principal.url Mappatura a principal.url.
authorAccountId principal.user.userid Mappatura a principal.user.userid.
authorKey target.resource.attribute.labels.value Mappato a un'etichetta con chiave "Author Key" in target.resource.attribute.labels.
auditType.action security_result.summary Mappatura a security_result.summary. Viene utilizzato anche per dedurre security_result.action e metadata.event_type (USER_LOGIN se l'azione contiene "login", ALLOW se "successful", BLOCK se "failed").
auditType.area metadata.product_event_type Mappatura a metadata.product_event_type.
auditType.category security_result.category_details Mappatura a security_result.category_details.
category metadata.product_event_type Mappatura a metadata.product_event_type.
changedValues.changedFrom security_result.about.resource.attribute.labels.value Mappato a un'etichetta con chiave "Modificato da" in security_result.about.resource.attribute.labels.
changedValues.changedTo security_result.about.resource.attribute.labels.value Mappato a un'etichetta con chiave "Modificato in" in security_result.about.resource.attribute.labels.
changedValues.fieldName security_result.about.resource.attribute.labels.value Mappato a un'etichetta con chiave "FieldName" in security_result.about.resource.attribute.labels.
changedValues.i18nKey security_result.about.resource.attribute.labels.value Mappato a un'etichetta con chiave "FieldName" in security_result.about.resource.attribute.labels.
changedValues.key security_result.about.resource.attribute.labels.value Mappato a un'etichetta con chiave "Modificato da" in security_result.about.resource.attribute.labels.
changedValues.to security_result.about.resource.attribute.labels.value Mappato a un'etichetta con chiave "Modificato in" in security_result.about.resource.attribute.labels.
created metadata.event_timestamp Analizzati e mappati a metadata.event_timestamp.
dst_ip target.ip Mappatura a target.ip.
extraAttributes.name principal.resource.attribute.labels.value Mappato a un'etichetta con chiave "Name" in principal.resource.attribute.labels.
extraAttributes.value principal.resource.attribute.labels.value Mappato a un'etichetta con chiave "Valore" in principal.resource.attribute.labels.
http_method network.http.method Mappatura a network.http.method.
http_referral_url network.http.referral_url Mappatura a network.http.referral_url.
id metadata.product_log_id Mappatura a metadata.product_log_id.
objectItem.id security_result.detection_fields.value Mappato a un'etichetta con chiave "objectItem Id" in security_result.detection_fields.
objectItem.name security_result.detection_fields.value Mappato a un'etichetta con chiave "objectItem Name" in security_result.detection_fields.
objectItem.typeName security_result.detection_fields.value Mappato a un'etichetta con chiave "objectItem TypeName" in security_result.detection_fields.
path principal.url Se non "-" o "/status", mappato a principal.url.
protocol network.ip_protocol Se "HTTP", mappato a network.ip_protocol.
remoteAddress principal.ip Mappatura a principal.ip.
response_code network.http.response_code Mappatura a network.http.response_code.
sent_bytes network.sent_bytes Mappatura a network.sent_bytes.
source principal.ip Analizzati per estrarre gli indirizzi IP e uniti in principal.ip.
src_ip1, src_ip2, src_ip3 principal.ip Mappatura a principal.ip.
summary metadata.description Mappatura a metadata.description.
user_agent network.http.user_agent Mappatura a network.http.user_agent.
user_name principal.user.userid Mappatura a principal.user.userid. Imposta su "MACCHINA" se auditType.action contiene "login". Dedotto da date_time se viene analizzato syslog o da created se viene analizzato JSON. Se timestamp è disponibile in JSON, viene utilizzato al posto di created. Se non sono presenti, viene utilizzato il valore create_time del batch. Dedotto in base alla presenza di altri campi: NETWORK_HTTP se è presente dst_ip, USER_UNCATEGORIZED se è presente user_name o (associatedItems.0.typeName è "USER" e associatedItems.0.id è presente), STATUS_UPDATE se è presente src_ip1, src_ip2, src_ip3 o remoteAddress oppure GENERIC_EVENT in caso contrario. Sostituito con USER_LOGIN se auditType.action contiene "login". Deve sempre essere impostato su "ATLASSIAN_JIRA". Deve sempre essere impostato su "ATLASSIAN_JIRA". Imposta su "ALLOW" se auditType.action contiene "login successful", "BLOCK" se auditType.action contiene "login failed".

Modifiche

2023-12-12

  • È stato aggiunto il supporto per la mappatura di più indirizzi IP da "source" a "principal.ip".

2023-11-10

  • È stato aggiunto un nuovo pattern Grok per analizzare i log JSON con errori.
  • "affectedObjects" è stato mappato a "target.resource.attribute.labels".
  • "changedValues" è stato mappato a "security_result.about.resource.attribute.labels".
  • "extraAttributes" è stato mappato a "principal.resource.attribute.labels".
  • "source" è stato mappato a "principal.ip".
  • Sono stati mappati "author.id", "author.name", "author.uri", "author.type", "auditType.area", "auditType.category" e "auditType.action" a "principal.user.userid", "principal.user.user_display_name", "principal.url", "principal.resource.attribute.labels", "metadata.product_event_type", "security_result.category_details" e "security_result.summary", rispettivamente.

2023-02-09

  • È stato aggiunto un blocco "json" per recuperare i dati JSON.

2023-01-10

  • Miglioramento: è stato aggiunto il supporto per i log in formato JSON.
  • "authorAccountId" è stato mappato a "principal.user.userid".
  • "id" è stato mappato a "metadata.product_log_id".
  • "remoteAddress" è stato mappato a "principal.ip".
  • "summary" è stato mappato a "metadata.description".
  • "category" è stato mappato a "metadata.product_event_type".
  • "authorKey" è stato mappato a "target.resource.attribute.labels".
  • Sono stati mappati "objectItem.id", "objectItem.name", "objectItem.typeName" a "security_result.detection_fields".
  • "associatedItems.0.id" è stato mappato a "target.user.userid" quando "associatedItems.0.typeName" è "USER".
  • "associatedItems.0.name" è stato mappato a "target.user.user_display_name" quando "associatedItems.0.typeName" è "USER".
  • "associatedItems.0.parentId" è stato mappato a "target.process.parent_process.pid" quando "associatedItems.0.typeName" è "USER".
  • "associatedItems.0.parentName" è stato mappato a "target.resource.parent" quando "associatedItems.0.typeName" è "USER".
  • "associatedItems.0.id" e "associatedItems.0.name" sono stati mappati a "security_result.detection_fields" quando "associatedItems.0.typeName" non è "USER".
  • "associatedItems.0.typeName" è stato mappato a "security_result.detection_fields".
  • Sono stati mappati "changedValues.fieldName", "changedValues.changedFrom", ""changedValues.changedTo" a "security_result.about.resource.attribute.labels".
  • "STATUS_UPDATE" è stato mappato a "metadata.event_type" se è presente "remoteAddress".
  • "USER_UNCATEGORIZED" è stato mappato a "metadata.event_type" se è presente "authorAccountId" o "associatedItems.0.typeName" è "USER" ed è presente "associatedItems.0.id".

2022-05-31

  • Correzione di bug: è stata aggiunta una condizione per controllare la mappatura errata di principal.url se il valore dell'URL nei log contiene "/status".

Hai bisogno di ulteriore assistenza? Ricevi risposte dai membri della community e dai professionisti di Google SecOps.