Atlassian Bitbucket-Logs erfassen

Unterstützt in:

Ü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:

  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 Bitbucket-Logs.
  5. Wählen Sie Webhook als Quelltyp aus.
  6. Wählen Sie Atlassian Bitbucket 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

  • 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

  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 Bitbucket erstellen

  1. Rufen Sie in Bitbucket die Repository-Einstellungen auf.
  2. Klicken Sie unter Workflow auf Webhooks.
  3. Klicken Sie auf Add webhook (Webhook hinzufügen).
  4. 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.
  5. 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