Atlassian Jira-Protokolle erfassen
Ü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
- Gehen Sie zu SIEM-Einstellungen > Feeds.
- Klicken Sie auf Neu hinzufügen.
- Geben Sie im Feld Feedname einen Namen für den Feed ein, z. B. Atlassian Jira-Protokolle.
- Wählen Sie als Quelltyp Webhook aus.
- Wählen Sie Atlassian Jira als Logtyp aus.
- Klicken Sie auf Weiter.
- 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.
- Trennzeichen für die Aufteilung: Das Trennzeichen, mit dem Logzeilen getrennt werden, z. B.
- Klicken Sie auf Weiter.
- Überprüfen Sie die Feedkonfiguration auf dem Bildschirm Abschließen und klicken Sie dann auf Senden.
- Klicken Sie auf Geheimen Schlüssel generieren, um einen geheimen Schlüssel zur Authentifizierung dieses Feeds zu generieren.
- 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.
- Kopieren Sie auf dem Tab Details die Feedendpunkt-URL aus dem Feld Endpunktinformationen. Sie müssen diese Endpunkt-URL in Ihrer Clientanwendung angeben.
- Klicken Sie auf Fertig.
API-Schlüssel für den Webhook-Feed erstellen
Rufen Sie die Google Cloud Console > Anmeldedaten auf.
Klicken Sie auf Anmeldedaten erstellen und wählen Sie anschließend API-Schlüssel aus.
Beschränken Sie den API-Schlüsselzugriff auf die Google Security Operations API.
Endpunkt-URL angeben
- Geben Sie in Ihrer Clientanwendung die HTTPS-Endpunkt-URL an, die im Webhook-Feed angegeben ist.
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
- Melden Sie sich als Administrator in Ihrer Jira-Instanz an.
- Gehe zu Einstellungen Einstellungen > System > WebHooks.
- Klicken Sie auf WebHook erstellen.
- 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.
- 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