Atlassian Jira-Logs erfassen
Ü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:
- Rufen Sie die SIEM-Einstellungen > Feeds auf.
- Klicken Sie auf Neuen Feed hinzufügen.
- Klicken Sie auf der nächsten Seite auf Einen einzelnen Feed konfigurieren.
- Geben Sie im Feld Feedname einen Namen für den Feed ein, z. B. Atlassian Jira Logs.
- Wählen Sie Webhook als Quelltyp 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 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.
- Trennzeichen für Aufteilung: Das Trennzeichen, das zum Trennen von Logzeilen verwendet wird, z. B.
- Klicken Sie auf Weiter.
- Prüfen Sie die Feedkonfiguration auf dem Bildschirm Finalize (Abschließen) und klicken Sie dann auf Submit (Senden).
- 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.
- 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
Rufen Sie die Google Cloud Console > Anmeldedaten auf.
Klicken Sie auf Anmeldedaten erstellen und wählen Sie anschließend API-Schlüssel aus.
Schränken Sie den API-Schlüsselzugriff auf die Google Security Operations API ein.
Endpunkt-URL angeben
- Geben Sie in Ihrer Clientanwendung die HTTPS-Endpunkt-URL an, die im Webhook-Feed bereitgestellt wird.
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
- Greifen Sie als Administrator auf Ihre Jira-Instanz zu.
- Rufen Sie die Einstellungen settings > System > WebHooks auf.
- 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 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.
- 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