Atlassian Jira-Protokolle erfassen

Unterstützt in:

Übersicht

Dieser Parser verarbeitet Atlassian Jira-Protokolle im SYSLOG- und JSON-Format. Zuerst wird versucht, die Nachricht als JSON zu parsen. Andernfalls werden SYSLOG-formatierte Nachrichten mithilfe von Grok-Mustern analysiert. Dabei werden verschiedene Felder wie IP-Adressen, Nutzernamen, HTTP-Methoden und Antwortcodes extrahiert, bevor sie dem UDM zugeordnet werden. Der Parser verarbeitet auch bestimmte Jira-Audit-Ereignisse, einschließlich erfolgreicher und fehlgeschlagener Anmeldungen, und ordnet relevante Felder den Sicherheitsergebnisattributen im UDM zu.

Hinweise

  • Sie benötigen eine Google SecOps-Instanz.
  • Sie benötigen Berechtigungen für Atlassian Jira.

Feed in Google SecOps für die Aufnahme der Atlassian Jira-Protokolle konfigurieren

  1. Gehen Sie zu SIEM-Einstellungen > Feeds.
  2. Klicken Sie auf Neu hinzufügen.
  3. Geben Sie im Feld Feedname einen Namen für den Feed ein, z. B. Atlassian Jira-Protokolle.
  4. Wählen Sie als Quelltyp Webhook aus.
  5. Wählen Sie Atlassian Jira als Logtyp aus.
  6. Klicken Sie auf Weiter.
  7. Optional: Geben Sie Werte für die folgenden Eingabeparameter an:
    • Trennzeichen für die Aufteilung: Das Trennzeichen, mit dem Logzeilen getrennt werden, z. B. \n.
    • Asset-Namespace: der Asset-Namespace.
    • Aufnahmelabels: Das Label, das auf die Ereignisse aus diesem Feed angewendet wird.
  8. Klicken Sie auf Weiter.
  9. Überprüfen Sie die Feedkonfiguration auf dem Bildschirm Abschließen und klicken Sie dann auf Senden.
  10. Klicken Sie auf Geheimen Schlüssel generieren, um einen geheimen Schlüssel zur Authentifizierung dieses Feeds zu generieren.
  11. Kopieren und speichern Sie den geheimen Schlüssel. Sie können diesen geheimen Schlüssel nicht noch einmal aufrufen. Bei Bedarf können Sie einen neuen Secret-Schlüssel generieren. Dadurch wird der vorherige Secret-Schlüssel jedoch ungültig.
  12. Kopieren Sie auf dem Tab Details die Feedendpunkt-URL aus dem Feld Endpunktinformationen. Sie müssen diese Endpunkt-URL in Ihrer Clientanwendung angeben.
  13. Klicken Sie auf Fertig.

API-Schlüssel für den Webhook-Feed erstellen

  1. Rufen Sie die Google Cloud Console > Anmeldedaten auf.

    Zu den Anmeldedaten

  2. Klicken Sie auf Anmeldedaten erstellen und wählen Sie anschließend API-Schlüssel aus.

  3. Beschränken Sie den API-Schlüsselzugriff auf die Google Security Operations API.

Endpunkt-URL angeben

  1. Geben Sie in Ihrer Clientanwendung die HTTPS-Endpunkt-URL an, die im Webhook-Feed angegeben ist.
  2. Aktiviere die Authentifizierung, indem du den API-Schlüssel und den geheimen Schlüssel als Teil der benutzerdefinierten Kopfzeile im folgenden Format angibst:

    X-goog-api-key = API_KEY
    X-Webhook-Access-Key = SECRET
    

    Empfehlung: Geben Sie den API-Schlüssel als Header an, anstatt ihn in der URL anzugeben. Wenn Ihr Webhook-Client keine benutzerdefinierten Header unterstützt, können Sie den API-Schlüssel und den geheimen Schlüssel mithilfe von Suchparametern im folgenden Format angeben:

    ENDPOINT_URL?key=API_KEY&secret=SECRET
    

Ersetzen Sie Folgendes:

  • ENDPOINT_URL: die URL des Feedendpunkts.
  • API_KEY: Der API-Schlüssel, mit dem Sie sich bei Google Security Operations authentifizieren.
  • SECRET: den geheimen Schlüssel, den Sie zur Authentifizierung des Feeds generiert haben.

Webhook in Atlassian Jira für Google SecOps erstellen

  1. Melden Sie sich als Administrator in Ihrer Jira-Instanz an.
  2. Gehe zu Einstellungen Einstellungen > System > WebHooks.
  3. Klicken Sie auf WebHook erstellen.
  4. Konfigurieren Sie die folgenden Webhook-Details:
    • Name: Geben Sie einen aussagekräftigen Namen für den Webhook an, z. B. Google SecOps-Integration.
    • URL: Geben Sie die Endpunkt-URL der Google SecOps API ein.
    • Ereignisse: Wählen Sie die Jira-Ereignisse aus, die den Webhook auslösen sollen. Wählen Sie die Ereignisse aus, die für Ihre Sicherheitsüberwachung relevant sind, z. B. „Problem erstellt“, „Problem aktualisiert“ oder „Kommentar hinzugefügt“. Sie können bei Bedarf Alle Ereignisse auswählen.
    • Optional: JQL-Filter: Mit einem JQL-Filter können Sie weiter eingrenzen, welche Ereignisse den Webhook auslösen. Das ist nützlich, wenn Sie sich auf bestimmte Projekte, Problemtypen oder andere Kriterien konzentrieren möchten.
    • Textkörper ausschließen: Lassen Sie das Kästchen deaktiviert. Der Webhook muss die Ereignisdaten im JSON-Format an Google SecOps senden.
  5. Klicken Sie auf Erstellen, um die Webhook-Konfiguration zu speichern.

UDM-Zuordnungstabelle

Logfeld UDM-Zuordnung Logik
affectedObjects.id target.resource.attribute.labels.value Das Feld id in jedem Objekt des affectedObjects-Arrays wird einem Label mit dem Schlüssel „ID_[index]“ zugeordnet, wobei [index] die Position des Objekts im Array ist.
affectedObjects.name target.resource.attribute.labels.value Das Feld name in jedem Objekt des affectedObjects-Arrays wird einem Label mit dem Schlüssel „Name_[index]“ zugeordnet, wobei [index] die Position des Objekts im Array ist.
affectedObjects.type target.resource.attribute.labels.value Das Feld type in jedem Objekt des affectedObjects-Arrays wird einem Label mit dem Schlüssel „Typ_[index]“ zugeordnet, wobei [index] die Position des Objekts im Array ist.
associatedItems.0.id target.user.userid Wenn associatedItems.0.typeName „USER“ ist, wird dieses Feld target.user.userid zugeordnet. Andernfalls wird es einem Label mit dem Schlüssel „associatedItems Id“ in security_result.detection_fields zugeordnet.
associatedItems.0.name target.user.user_display_name Wenn associatedItems.0.typeName „USER“ ist, wird dieses Feld target.user.user_display_name zugeordnet. Andernfalls wird es einem Label mit dem Schlüssel „associatedItems Name“ in security_result.detection_fields zugeordnet.
associatedItems.0.parentId target.process.parent_process.pid Wenn associatedItems.0.typeName „USER“ ist, wird dieses Feld target.process.parent_process.pid zugeordnet.
associatedItems.0.parentName target.resource.parent Wenn associatedItems.0.typeName „USER“ ist, wird dieses Feld target.resource.parent zugeordnet.
associatedItems.0.typeName security_result.detection_fields.value Wird in security_result.detection_fields einem Label mit dem Schlüssel „associatedItems TypeName“ zugeordnet.
author.id principal.user.userid Zugewiesen zu principal.user.userid.
author.name principal.user.user_display_name Zugewiesen zu principal.user.user_display_name.
author.type principal.resource.attribute.labels.value Wird in principal.resource.attribute.labels einem Label mit dem Schlüssel „Autorentyp“ zugeordnet.
author.uri principal.url Zugewiesen zu principal.url.
authorAccountId principal.user.userid Zugewiesen zu principal.user.userid.
authorKey target.resource.attribute.labels.value In target.resource.attribute.labels einem Label mit dem Schlüssel „Author Key“ zugeordnet.
auditType.action security_result.summary Zugewiesen zu security_result.summary. Wird auch verwendet, um security_result.action und metadata.event_type abzuleiten (USER_LOGIN, wenn die Aktion „login“ enthält, ALLOW, wenn „successful“ (erfolgreich) und BLOCK, wenn „failed“ (fehlgeschlagen) ist).
auditType.area metadata.product_event_type Zugewiesen zu metadata.product_event_type.
auditType.category security_result.category_details Zugewiesen zu security_result.category_details.
category metadata.product_event_type Zugewiesen zu metadata.product_event_type.
changedValues.changedFrom security_result.about.resource.attribute.labels.value In security_result.about.resource.attribute.labels einem Label mit dem Schlüssel „Changed From“ zugeordnet.
changedValues.changedTo security_result.about.resource.attribute.labels.value Zu einem Label mit dem Schlüssel „Geändert zu“ in security_result.about.resource.attribute.labels zugeordnet.
changedValues.fieldName security_result.about.resource.attribute.labels.value Ist einem Label mit dem Schlüssel „FieldName“ in security_result.about.resource.attribute.labels zugeordnet.
changedValues.i18nKey security_result.about.resource.attribute.labels.value Wird in security_result.about.resource.attribute.labels einem Label mit dem Schlüssel „FieldName“ zugeordnet.
changedValues.key security_result.about.resource.attribute.labels.value In security_result.about.resource.attribute.labels einem Label mit dem Schlüssel „Changed From“ zugeordnet.
changedValues.to security_result.about.resource.attribute.labels.value Zu einem Label mit dem Schlüssel „Geändert zu“ in security_result.about.resource.attribute.labels zugeordnet.
created metadata.event_timestamp Geparst und metadata.event_timestamp zugeordnet.
dst_ip target.ip Zugewiesen zu target.ip.
extraAttributes.name principal.resource.attribute.labels.value Ist einem Label mit dem Schlüssel „Name“ in principal.resource.attribute.labels zugeordnet.
extraAttributes.value principal.resource.attribute.labels.value Wird in principal.resource.attribute.labels einem Label mit dem Schlüssel „Wert“ zugeordnet.
http_method network.http.method Zugewiesen zu network.http.method.
http_referral_url network.http.referral_url Zugewiesen zu network.http.referral_url.
id metadata.product_log_id Zugewiesen zu metadata.product_log_id.
objectItem.id security_result.detection_fields.value In security_result.detection_fields einem Label mit dem Schlüssel „objectItem Id“ zugeordnet.
objectItem.name security_result.detection_fields.value In security_result.detection_fields einem Label mit dem Schlüssel „objectItem Name“ zugeordnet.
objectItem.typeName security_result.detection_fields.value Wird in security_result.detection_fields einem Label mit dem Schlüssel „objectItem TypeName“ zugeordnet.
path principal.url Wenn nicht „-“ oder „/status“, wird principal.url zugeordnet.
protocol network.ip_protocol Wenn „HTTP“, wird es network.ip_protocol zugeordnet.
remoteAddress principal.ip Zugewiesen zu principal.ip.
response_code network.http.response_code Zugewiesen zu network.http.response_code.
sent_bytes network.sent_bytes Zugewiesen zu network.sent_bytes.
source principal.ip Sie werden analysiert, um IP-Adressen zu extrahieren, und mit principal.ip zusammengeführt.
src_ip1, src_ip2, src_ip3 principal.ip Zugewiesen zu principal.ip.
summary metadata.description Zugewiesen zu metadata.description.
user_agent network.http.user_agent Zugewiesen zu network.http.user_agent.
user_name principal.user.userid Zugewiesen zu principal.user.userid. Legen Sie „MACHINE“ fest, wenn auditType.action „login“ enthält. Wird von date_time abgeleitet, wenn syslog geparst wird, oder von created, wenn JSON geparst wird. Wenn timestamp in JSON verfügbar ist, wird es anstelle von created verwendet. Wenn keines davon vorhanden ist, wird die create_time aus dem Batch verwendet. Wird anhand der Anwesenheit anderer Felder abgeleitet: NETWORK_HTTP, wenn dst_ip vorhanden ist, USER_UNCATEGORIZED, wenn user_name oder (associatedItems.0.typeName ist „USER“ und associatedItems.0.id ist vorhanden) vorhanden ist, STATUS_UPDATE, wenn src_ip1, src_ip2, src_ip3 oder remoteAddress vorhanden ist, andernfalls GENERIC_EVENT. Wird zu „USER_LOGIN“ überschrieben, wenn auditType.action „login“ enthält. Muss immer auf „ATLASSIAN_JIRA“ festgelegt sein. Muss immer auf „ATLASSIAN_JIRA“ festgelegt sein. Legen Sie „ALLOW“ fest, wenn auditType.action „login successful“ (Anmeldung erfolgreich) enthält, und „BLOCK“, wenn auditType.action „login failed“ (Anmeldung fehlgeschlagen) enthält.

Änderungen

2023-12-12

  • Es wurde die Unterstützung für die Zuordnung mehrerer IP-Adressen von „source“ zu „principal.ip“ hinzugefügt.

2023-11-10

  • Es wurde ein neues Grok-Muster zum Parsen fehlgeschlagener JSON-Logs hinzugefügt.
  • „affectedObjects“ wurde „target.resource.attribute.labels“ zugeordnet.
  • „changedValues“ wurde in „security_result.about.resource.attribute.labels“ geändert.
  • „extraAttributes“ wurde auf „principal.resource.attribute.labels“ zugeordnet.
  • „source“ wurde auf „principal.ip“ zugeordnet.
  • „author.id“, „author.name“, „author.uri“, „author.type“, „auditType.area“, „auditType.category“ und „auditType.action“ wurden jeweils in „principal.user.userid“, „principal.user.user_display_name“, „principal.url“, „principal.resource.attribute.labels“, „metadata.product_event_type“, „security_result.category_details“ und „security_result.summary“ umgewandelt.

2023-02-09

  • Es wurde ein „json“-Block hinzugefügt, um die JSON-Daten abzurufen.

2023-01-10

  • Verbesserung: Unterstützung für Protokolle im JSON-Format hinzugefügt
  • „authorAccountId“ wurde „principal.user.userid“ zugeordnet.
  • „id“ wurde „metadata.product_log_id“ zugeordnet.
  • „remoteAddress“ wurde „principal.ip“ zugeordnet.
  • „summary“ wurde „metadata.description“ zugeordnet.
  • „category“ wurde mit „metadata.product_event_type“ verknüpft.
  • „authorKey“ wurde „target.resource.attribute.labels“ zugeordnet.
  • „objectItem.id“, „objectItem.name“ und „objectItem.typeName“ wurden in „security_result.detection_fields“ zugeordnet.
  • „associatedItems.0.id“ wurde „target.user.userid“ zugeordnet, wenn „associatedItems.0.typeName“ „USER“ ist.
  • „associatedItems.0.name“ wurde „target.user.user_display_name“ zugeordnet, wenn „associatedItems.0.typeName“ „USER“ ist.
  • „associatedItems.0.parentId“ wurde auf „target.process.parent_process.pid“ zugeordnet, wenn „associatedItems.0.typeName“ „USER“ ist.
  • „associatedItems.0.parentName“ wurde „target.resource.parent“ zugeordnet, wenn „associatedItems.0.typeName“ „USER“ ist.
  • „associatedItems.0.id“ und „associatedItems.0.name“ wurden „security_result.detection_fields“ zugeordnet, wenn „associatedItems.0.typeName“ nicht „USER“ ist.
  • „associatedItems.0.typeName“ wurde in „security_result.detection_fields“ umgewandelt.
  • „changedValues.fieldName“, „changedValues.changedFrom“ und „changedValues.changedTo“ wurden in „security_result.about.resource.attribute.labels“ umgewandelt.
  • „STATUS_UPDATE“ wurde „metadata.event_type“ zugeordnet, wenn „remoteAddress“ vorhanden ist.
  • „USER_UNCATEGORIZED“ wurde „metadata.event_type“ zugeordnet, wenn „authorAccountId“ vorhanden ist oder „associatedItems.0.typeName“ „USER“ ist und „associatedItems.0.id“ vorhanden ist.

2022-05-31

  • Fehlerbehebung: Es wurde eine Bedingung hinzugefügt, um die falsche Zuordnung für „principal.url“ zu prüfen, wenn der URL-Wert in den Protokollen „/status“ enthält.

Benötigen Sie weitere Hilfe? Antworten von Community-Mitgliedern und Google SecOps-Experten erhalten