Atlassian Bitbucket-Logs erfassen
Übersicht
Dieser Parser extrahiert Felder aus Atlassian Bitbucket-JSON-Logs und ordnet sie dem UDM zu. Es verarbeitet verschiedene Logformate und füllt Prinzipal- oder Zielentitäten basierend auf verfügbaren Feldern wie IP-Adressen, Nutzer-IDs und Asset-Informationen aus. Außerdem werden Ereignisse anhand von Netzwerk- und Nutzeraktivitäten kategorisiert und die Daten werden gegebenenfalls mit Sicherheitsergebnissen angereichert. Beim Ausfüllen von Feldern priorisiert der Parser agentRealtimeInfo
gegenüber agentDetectionInfo
.
Hinweise
Prüfen Sie, ob die folgenden Voraussetzungen erfüllt sind:
- Google SecOps-Instanz.
- Privilegierter Zugriff auf ein Repository.
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 Bitbucket-Logs.
- Wählen Sie Webhook als Quelltyp aus.
- Wählen Sie Atlassian Bitbucket 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
- Asset-Namespace: der Asset-Namespace.
- Aufnahmelabels: Das Label, das auf die Ereignisse aus diesem Feed angewendet wird.
- Feedname: Ein vorausgefüllter Wert, der den Feed identifiziert.
Quelltyp: Methode, die zum Erfassen von Logs in Google SecOps verwendet wird.
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 Bitbucket erstellen
- Rufen Sie in Bitbucket die Repository-Einstellungen auf.
- Klicken Sie unter Workflow auf Webhooks.
- Klicken Sie auf Add webhook (Webhook hinzufügen).
- Konfigurieren Sie die folgenden Felder:
- Titel: Geben Sie einen aussagekräftigen Namen an, z. B. Google SecOps.
- URL: Geben Sie die Google SecOps API-Endpunkt-URL ein.
- Status: Auf Aktiv festlegen.
- Trigger: Wählen Sie die relevanten Ereignisse aus.
- Klicken Sie auf Speichern.
UDM-Zuordnungstabelle
Logfeld | UDM-Zuordnung | Logik |
---|---|---|
agentComputerName |
principal.hostname |
Aus agentRealtimeInfo.agentComputerName übernommen. |
agentDetectionInfo.accountId |
metadata.product_deployment_id |
In String umgewandelt. Wird verwendet, wenn agentRealtimeInfo.accountId nicht vorhanden ist. |
agentDetectionInfo.accountName |
metadata.product_name |
Wird verwendet, wenn agentRealtimeInfo.accountName nicht vorhanden ist. |
agentDetectionInfo.agentDomain |
principal.administrative_domain |
Direkt zugeordnet. |
agentDetectionInfo.agentIpV4 |
target.ip |
Aus dem JSON-Array extrahiert und in das Feld target.ip zusammengeführt. |
agentDetectionInfo.agentIpV6 |
principal.ip |
Aus dem JSON-Array extrahiert und in das Feld principal.ip zusammengeführt. |
agentDetectionInfo.agentLastLoggedInUserName |
principal.user.userid |
Wird geparst, um die Nutzer-ID und die Domain (falls vorhanden) zu extrahieren. Wenn keine Domain vorhanden ist, wird direkt principal.user.userid zugeordnet. |
agentDetectionInfo.agentOsName |
principal.platform_version , principal.asset.platform_software.platform_version |
Wird verwendet, wenn agentRealtimeInfo.agentOsName nicht vorhanden ist. |
agentDetectionInfo.agentOsRevision |
principal.platform_patch_level , principal.asset.platform_software.platform_patch_level |
Wird verwendet, wenn agentRealtimeInfo.agentOsRevision nicht vorhanden ist. |
agentDetectionInfo.agentRegisteredAt |
principal.asset.first_discover_time |
Wird als ISO8601-Zeitstempel geparst. |
agentDetectionInfo.agentUuid |
principal.asset_id , principal.asset.asset_id |
Wird verwendet, wenn agentRealtimeInfo.agentUuid nicht vorhanden ist. Beginnt mit „agentUuid:“. |
agentDetectionInfo.agentVersion |
metadata.product_version |
Wird verwendet, wenn agentRealtimeInfo.agentVersion nicht vorhanden ist. |
agentDetectionInfo.externalIp |
target.ip |
Direkt zugeordnet. |
agentDetectionInfo.groupId |
principal.user.group_identifiers |
Wird in das Feld eingefügt, wenn es nicht leer oder „-“ ist. Wird verwendet, wenn agentRealtimeInfo.groupId nicht vorhanden ist. |
agentDetectionInfo.groupName |
principal.group.group_display_name |
Wird verwendet, wenn agentRealtimeInfo.groupName nicht vorhanden ist. |
agentDetectionInfo.siteId |
additional.fields |
Wird als Schlüssel/Wert-Paar mit dem Schlüssel „agentDetectionInfo.siteId“ hinzugefügt. Wird verwendet, wenn agentRealtimeInfo.siteId nicht vorhanden ist. |
agentDetectionInfo.siteName |
additional.fields |
Wird als Schlüssel/Wert-Paar mit dem Schlüssel „agentDetectionInfo.siteName“ hinzugefügt. Wird verwendet, wenn agentRealtimeInfo.siteName nicht vorhanden ist. |
agentRealtimeInfo.accountId |
metadata.product_deployment_id |
In String umgewandelt. |
agentRealtimeInfo.accountName |
metadata.product_name |
Direkt zugeordnet. |
agentRealtimeInfo.agentComputerName |
principal.hostname , principal.asset.hostname |
Direkt zugeordnet. |
agentRealtimeInfo.agentId |
principal.asset_id , principal.asset.asset_id |
Muss mit „agentId:“ beginnen. |
agentRealtimeInfo.agentMachineType |
principal.asset.category |
Direkt zugeordnet. |
agentRealtimeInfo.agentOsName |
principal.platform_version , principal.asset.platform_software.platform_version |
Direkt zugeordnet. |
agentRealtimeInfo.agentOsRevision |
principal.platform_patch_level , principal.asset.platform_software.platform_patch_level |
Direkt zugeordnet. |
agentRealtimeInfo.agentOsType |
principal.asset.platform_software.platform , principal.platform |
Entsprechend dem Wert wird WINDOWS, MAC oder LINUX zugeordnet. |
agentRealtimeInfo.agentUuid |
principal.asset_id , principal.asset.asset_id |
Direkt zugeordnet. Beginnt mit „agentUuid:“. |
agentRealtimeInfo.agentVersion |
metadata.product_version |
Direkt zugeordnet. |
agentRealtimeInfo.groupId |
principal.user.group_identifiers |
Wird in das Feld eingefügt, wenn es nicht leer oder „-“ ist. |
agentRealtimeInfo.groupName |
principal.group.group_display_name |
Direkt zugeordnet. |
agentRealtimeInfo.siteId |
additional.fields |
Wird als Schlüssel/Wert-Paar mit dem Schlüssel „agentDetectionInfo.siteId“ hinzugefügt. |
agentRealtimeInfo.siteName |
additional.fields |
Wird als Schlüssel/Wert-Paar mit dem Schlüssel „agentDetectionInfo.siteName“ hinzugefügt. |
associatedItems.0.id |
principal.resource.id |
Direkt zugeordnet. |
associatedItems.0.name |
principal.resource.name |
Direkt zugeordnet. |
associatedItems.0.typeName |
principal.resource.resource_subtype |
Direkt zugeordnet. |
authorAccountId |
principal.user.userid |
Direkt zugeordnet. |
category |
metadata.product_event_type |
Direkt zugeordnet. Wenn nicht vorhanden und die Nachricht „Bedrohungen“ enthält, auf „Bedrohungen“ festlegen. |
id |
metadata.product_log_id |
In String umgewandelt. |
indicators.0.description |
security_result.description |
Direkt zugeordnet. |
objectItem.id |
additional.fields |
Wird als Schlüssel/Wert-Paar mit dem Schlüssel „objectItem.id“ hinzugefügt. |
objectItem.name |
additional.fields |
Wird als Schlüssel/Wert-Paar mit dem Schlüssel „objectItem.name“ hinzugefügt. |
objectItem.typeName |
additional.fields |
Wird als Schlüssel/Wert-Paar mit dem Schlüssel „objectItem.typeName“ hinzugefügt. |
remoteAddress |
principal.ip |
Direkt zugeordnet. |
summary |
security_result.summary |
Direkt zugeordnet. |
threatInfo.classification |
security_result.category_details |
Direkt zugeordnet. Wird auch zur Bestimmung von security_result.category verwendet. |
threatInfo.collectionId |
metadata.ingestion_labels |
Wird als Schlüssel/Wert-Paar mit dem Schlüssel „alert_aggregation_value“ hinzugefügt. |
threatInfo.confidenceLevel |
security_result.confidence_details |
Direkt zugeordnet. Wird auch zur Bestimmung von security_result.confidence verwendet. |
threatInfo.createdAt |
metadata.collected_timestamp |
Wird als ISO8601-Zeitstempel geparst. |
threatInfo.detectionEngines |
metadata.ingestion_labels |
key und title jedes Elements werden als Schlüssel/Wert-Paare hinzugefügt. |
threatInfo.fileExtensionType |
target.process.file.mime_type |
Direkt zugeordnet. |
threatInfo.filePath |
target.file.full_path |
Direkt zugeordnet. |
threatInfo.fileSize |
target.file.size |
Wird in einen String und dann in eine vorzeichenlose Ganzzahl konvertiert. |
threatInfo.identifiedAt |
event_timestamp |
Wird als ISO8601-Zeitstempel geparst. |
threatInfo.maliciousProcessArguments |
principal.process.command_line |
Direkt zugeordnet. Wird auch im Feld security_result.summary verwendet, wenn summary nicht vorhanden ist. |
threatInfo.md5 |
target.file.md5 |
Direkt zugeordnet. |
threatInfo.originatorProcess |
target.process.parent_process.file.full_path |
Direkt zugeordnet. Wird auch im Feld security_result.summary verwendet, wenn summary nicht vorhanden ist. |
threatInfo.processUser |
target.user.userid |
Direkt zugeordnet. |
threatInfo.sha1 |
target.file.sha1 |
Direkt zugeordnet. |
threatInfo.sha256 |
target.file.sha256 |
Direkt zugeordnet. |
threatInfo.storyline |
principal.process.product_specific_process_id |
Beginnt mit „ID:“ |
threatInfo.threatId |
security_result.threat_id |
Direkt zugeordnet. |
threatInfo.threatName |
security_result.threat_name , target.file.names |
Direkt zugeordnet und in target.file.names zusammengeführt. Wird auch im Feld security_result.summary verwendet, wenn summary nicht vorhanden ist. Wird anfangs auf „GENERIC_EVENT“ festgelegt. Wurde basierend auf dem Vorhandensein von Prinzipal und Ziel-IP/Hostname/Nutzer in „NETWORK_UNCATEGORIZED“, „STATUS_UPDATE“ oder „USER_UNCATEGORIZED“ geändert. Aus dem Feld event.type kopiert. Legen Sie diesen Wert auf „Atlassian Bitbucket“ fest. Anfangs auf „Atlassian Bitbucket“ festgelegt. Kann durch agentRealtimeInfo.accountName oder agentDetectionInfo.accountName überschrieben werden. |
timestamp |
metadata.event_timestamp , timestamp |
Direkt zugeordnet. |
Benötigen Sie weitere Hilfe? Antworten von Community-Mitgliedern und Google SecOps-Experten erhalten