Atlassian Jira-Logs erfassen

Unterstützt in:

Übersicht

Dieser Parser verarbeitet Atlassian Jira-Logs im SYSLOG- und JSON-Format. Zuerst wird versucht, die Nachricht als JSON zu parsen. Wenn das nicht funktioniert, werden Grok-Muster verwendet, um SYSLOG-formatierte Nachrichten zu parsen und verschiedene Felder wie IP-Adressen, Nutzernamen, HTTP-Methoden und Antwortcodes zu extrahieren, bevor sie der UDM zugeordnet werden. Der Parser verarbeitet auch bestimmte Jira-Audit-Ereignisse, einschließlich erfolgreicher und fehlgeschlagener Anmeldungen, und ordnet relevante Felder Sicherheitsergebnisattributen innerhalb des UDM zu.

Hinweise

Prüfen Sie, ob die folgenden Voraussetzungen erfüllt sind:

  • Google SecOps-Instanz.
  • Privilegierter Zugriff auf Atlassian Jira.

Feeds einrichten

Es gibt zwei verschiedene Einstiegspunkte zum Einrichten von Feeds in der Google SecOps-Plattform:

  • SIEM-Einstellungen > Feeds
  • Content Hub> Content-Pakete

Feeds über „SIEM-Einstellungen“ > „Feeds“ einrichten

So konfigurieren Sie einen Feed:

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

Feeds über den Content Hub einrichten

Geben Sie Werte für die folgenden Felder an:

  • Trennzeichen für Aufteilung: Das Trennzeichen, das zum Trennen von Logzeilen verwendet wird, z. B. \n.

Erweiterte Optionen

  • Feedname: Ein vorausgefüllter Wert, der den Feed identifiziert.
  • Quelltyp: Methode, die zum Erfassen von Logs in Google SecOps verwendet wird.
  • Asset-Namespace: Der Namespace, der dem Feed zugeordnet ist.
  • Aufnahmelabels: Labels, die auf alle Ereignisse aus diesem Feed angewendet werden.

  • Klicken Sie auf Geheimen Schlüssel generieren, um einen geheimen Schlüssel zur Authentifizierung dieses Feeds zu generieren.

  • Kopieren Sie den geheimen Schlüssel und speichern Sie ihn. Sie können diesen geheimen Schlüssel nicht noch einmal aufrufen. Bei Bedarf können Sie einen neuen geheimen Schlüssel generieren. Dadurch wird der vorherige geheime Schlüssel jedoch ungültig.

  • Kopieren Sie auf dem Tab Details die Feed-Endpunkt-URL aus dem Feld Endpunktinformationen. Sie müssen diese Endpunkt-URL in Ihrer Clientanwendung angeben.

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. Schränken Sie den API-Schlüsselzugriff auf die Google Security Operations API ein.

Endpunkt-URL angeben

  1. Geben Sie in Ihrer Clientanwendung die HTTPS-Endpunkt-URL an, die im Webhook-Feed bereitgestellt wird.
  2. Aktivieren Sie die Authentifizierung, indem Sie den API-Schlüssel und den geheimen Schlüssel als Teil des benutzerdefinierten Headers im folgenden Format angeben:

    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 Headern unterstützt, können Sie den API-Schlüssel und den geheimen Schlüssel mit Suchparametern im folgenden Format angeben:

    ENDPOINT_URL?key=API_KEY&secret=SECRET
    

Ersetzen Sie Folgendes:

  • ENDPOINT_URL: Die URL des Feed-Endpunkts.
  • API_KEY: Der API-Schlüssel für die Authentifizierung bei Google Security Operations.
  • SECRET: Der geheime Schlüssel, den Sie zur Authentifizierung des Feeds generiert haben.

Webhook in Atlassian Jira für Google SecOps erstellen

  1. Greifen Sie als Administrator auf Ihre Jira-Instanz zu.
  2. Rufen Sie die Einstellungen settings > System > WebHooks auf.
  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 Google SecOps API-Endpunkt-URL 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. „Vorgang erstellt“, „Vorgang aktualisiert“ oder „Kommentar hinzugefügt“. Bei Bedarf können Sie 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.
    • Exclude body (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 „Type_[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 sie 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 sie 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 Zugeordnet zu principal.user.userid.
author.name principal.user.user_display_name Zugeordnet zu principal.user.user_display_name.
author.type principal.resource.attribute.labels.value Dem Label mit dem Schlüssel „Author Type“ in principal.resource.attribute.labels zugeordnet.
author.uri principal.url Zugeordnet zu principal.url.
authorAccountId principal.user.userid Zugeordnet zu principal.user.userid.
authorKey target.resource.attribute.labels.value Dem Label mit dem Schlüssel „Author Key“ in target.resource.attribute.labels zugeordnet.
auditType.action security_result.summary Zugeordnet 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“, BLOCK, wenn „failed“).
auditType.area metadata.product_event_type Zugeordnet zu metadata.product_event_type.
auditType.category security_result.category_details Zugeordnet zu security_result.category_details.
category metadata.product_event_type Zugeordnet zu metadata.product_event_type.
changedValues.changedFrom security_result.about.resource.attribute.labels.value Dem Label mit dem Schlüssel „Changed From“ in security_result.about.resource.attribute.labels zugeordnet.
changedValues.changedTo security_result.about.resource.attribute.labels.value Dem Label mit dem Schlüssel „Changed To“ in security_result.about.resource.attribute.labels zugeordnet.
changedValues.fieldName security_result.about.resource.attribute.labels.value Das Feld 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 Das Feld ist einem Label mit dem Schlüssel „FieldName“ in security_result.about.resource.attribute.labels zugeordnet.
changedValues.key security_result.about.resource.attribute.labels.value Dem Label mit dem Schlüssel „Changed From“ in security_result.about.resource.attribute.labels zugeordnet.
changedValues.to security_result.about.resource.attribute.labels.value Dem Label mit dem Schlüssel „Changed To“ in security_result.about.resource.attribute.labels zugeordnet.
created metadata.event_timestamp Geprüft und metadata.event_timestamp zugeordnet.
dst_ip target.ip Zugeordnet zu target.ip.
extraAttributes.name principal.resource.attribute.labels.value Dem 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 „Value“ zugeordnet.
http_method network.http.method Zugeordnet zu network.http.method.
http_referral_url network.http.referral_url Zugeordnet zu network.http.referral_url.
id metadata.product_log_id Zugeordnet zu metadata.product_log_id.
objectItem.id security_result.detection_fields.value Dem Label mit dem Schlüssel „objectItem Id“ in security_result.detection_fields zugeordnet.
objectItem.name security_result.detection_fields.value Dem Label mit dem Schlüssel „objectItem Name“ in security_result.detection_fields 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 network.ip_protocol zugeordnet.
remoteAddress principal.ip Zugeordnet zu principal.ip.
response_code network.http.response_code Zugeordnet zu network.http.response_code.
sent_bytes network.sent_bytes Zugeordnet zu network.sent_bytes.
source principal.ip Die Daten wurden geparst, um IP-Adressen zu extrahieren, und in principal.ip zusammengeführt.
src_ip1, src_ip2, src_ip3 principal.ip Zugeordnet zu principal.ip.
summary metadata.description Zugeordnet zu metadata.description.
user_agent network.http.user_agent Zugeordnet zu network.http.user_agent.
user_name principal.user.userid Zugeordnet zu principal.user.userid. Auf „MACHINE“ festlegen, wenn auditType.action „login“ enthält. Abgeleitet von date_time beim Parsen von Syslog oder von created beim Parsen von JSON. Wenn timestamp in JSON verfügbar ist, wird es anstelle von created verwendet. Wenn keines dieser Elemente vorhanden ist, wird die create_time aus dem Batch verwendet. Abgeleitet basierend auf dem Vorhandensein anderer Felder: NETWORK_HTTP, wenn dst_ip vorhanden ist, USER_UNCATEGORIZED, wenn user_name oder (associatedItems.0.typeName gleich „USER“ und associatedItems.0.id vorhanden) vorhanden ist, STATUS_UPDATE, wenn src_ip1, src_ip2, src_ip3 oder remoteAddress vorhanden ist, oder GENERIC_EVENT andernfalls. Wird auf USER_LOGIN überschrieben, wenn auditType.action „login“ enthält. Muss immer auf „ATLASSIAN_JIRA“ festgelegt sein. Muss immer auf „ATLASSIAN_JIRA“ festgelegt sein. Auf „ALLOW“ setzen, wenn auditType.action „login successful“ enthält, auf „BLOCK“, wenn auditType.action „login failed“ enthält.

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