Pub/Sub in Google SecOps einbinden

In diesem Dokument wird beschrieben, wie Sie Pub/Sub in Google Security Operations einbinden.

Anwendungsfälle

Die Pub/Sub-Integration unterstützt die folgenden Anwendungsfälle:

  • Automatische Benachrichtigungsaufnahme: Sicherheitsprotokolle, Benachrichtigungen und Telemetriedaten, die in Pub/Sub-Themen veröffentlicht werden, werden kontinuierlich abgerufen und als Fälle in Google SecOps aufgenommen.

  • Zentralisierte Sicherheitsorchestrierung: Konsolidieren Sie das Routing von Sicherheitsereignissen über Pub/Sub aus Cloud- und Drittanbietersystemen, um automatisierte Antwort-Playbooks auszulösen.

Hinweis

Bevor Sie die Pub/Sub-Integration in Google SecOps konfigurieren, müssen Sie die folgenden Schritte ausführen:

  1. Erstellen Sie ein Dienstkonto.

  2. Weisen Sie Ihrem Dienstkonto die erforderlichen IAM-Rollen (Identity and Access Management) zu.

  3. Wählen Sie eine der folgenden Authentifizierungsmethoden aus und konfigurieren Sie sie:

    • Option 1: Workload Identity (empfohlen): Bei dieser Methode werden kurzlebige Tokens verwendet, die die Identitätsübernahme des Dienstkontos nutzen.

    • Option 2: JSON-Schlüssel für Dienstkonto: Diese Methode basiert auf einer statischen, langlebigen Secret-Schlüsseldatei.

Dienstkonto erstellen

  1. Rufen Sie in der Google Cloud Console IAM und Verwaltung > Dienstkonten auf.

    Zur Seite „Dienstkonten“

  2. Klicken Sie auf addDienstkonto erstellen.

  3. Geben Sie einen Namen und eine Beschreibung ein und klicken Sie auf Fertig. Notieren Sie sich die E-Mail-Adresse des Dienstkontos.

IAM-Rollen zuweisen

Durch das Erteilen von Berechtigungen kann die Integration Nachrichten aus Ihren Abos abrufen und ansehen. So weisen Sie die Standardrolle zu:

  1. Rufen Sie in der Google Cloud Console IAM auf.

    IAM aufrufen

  2. Suchen Sie Ihr Dienstkonto und klicken Sie auf Hauptkonto bearbeiten (Bearbeiten).

  3. Klicken Sie auf Weitere Rolle hinzufügen und wählen Sie Pub/Sub-Betrachter (roles/pubsub.viewer) aus.

  4. Klicken Sie auf Speichern.

Workload Identity-Anmeldedaten konfigurieren

Workload Identity ist der empfohlene Ansatz, da hier kurzlebige Zugriffstokens über die Identitätsübernahme des Dienstkontos verwendet werden.

Eindeutige Instanzidentität identifizieren

Zum Herstellen einer Verbindung müssen Sie Ihrer Google SecOps-Instanz die Berechtigung erteilen, die Identität Ihres Dienstkontos zu übernehmen.

  1. Rufen Sie in Google SecOps Content Hub > Antwortintegrationen auf.

  2. Wählen Sie die Pub/Sub-Integration aus und geben Sie die E-Mail-Adresse Ihres Dienstkontos unter Workload Identity-E-Mail-Adresse ein.

  3. Klicken Sie auf Speichern > Testen. Der Test schlägt erwartungsgemäß fehl.

  4. Klicken Sie neben dem Button Test auf close_small und suchen Sie nach der Identitäts-E-Mail-Adresse, die mit gke-init-python@... oder soar-python@... beginnt.

  5. Kopieren Sie diese eindeutige E‑Mail-Adresse.

Instanzidentität in Google Cloudautorisieren

  1. Rufen Sie in der Google Cloud Console IAM und Verwaltung > Dienstkonten auf.

    Zur Seite „Dienstkonten“

  2. Wählen Sie das Zieldienstkonto aus und rufen Sie Berechtigungen > Zugriff gewähren auf.

  3. Fügen Sie die eindeutige E-Mail-Adresse in Neue Hauptkonten ein und weisen Sie die Rolle Ersteller von Dienstkonto-Tokens (roles/iam.serviceAccountTokenCreator) zu.

Zugriff auf Kontingentprojekt gewähren

Für die Authentifizierung mit einer Workload Identity ist ein Quota Project ID erforderlich, um die API-Nutzung und die Abrechnung zu verfolgen.

  1. Rufen Sie in der Google Cloud Console IAM für das Projekt auf, das als Kontingentprojekt verwendet wird.

    IAM aufrufen

  2. Suchen Sie Ihr Dienstkonto und klicken Sie auf Hauptkonto bearbeiten (Bearbeiten).

  3. Klicken Sie auf Weitere Rolle hinzufügen und wählen Sie Service Usage Consumer (roles/serviceusage.serviceUsageConsumer) aus.

  4. Klicken Sie auf Speichern.

JSON-Schlüssel konfigurieren

Statische, langlebige Secret-Schlüsseldateien müssen manuell rotiert werden. Verwenden Sie diese Methode nur, wenn die Workload Identity-Authentifizierung nicht verfügbar ist.

  1. Rufen Sie in der Google Cloud Console IAM und Verwaltung > Dienstkonten auf und wählen Sie Ihr Dienstkonto aus.

    Zur Seite „Dienstkonten“

  2. Rufen Sie den Tab Schlüssel auf und klicken Sie auf Schlüssel hinzufügen > Neuen Schlüssel erstellen.

  3. Wählen Sie JSON aus und klicken Sie auf Erstellen. Der Browser lädt die JSON-Datei auf Ihren Computer herunter.

Integrationsparameter

Für die Pub/Sub-Integration sind die folgenden Parameter erforderlich:

Parameter Beschreibung
Workload Identity Email

Optional.

Die Client-E-Mail-Adresse Ihres Dienstkontos.

Konfigurieren Sie diesen Parameter nur, wenn Sie sich mit einer Workload Identity authentifizieren. Wenn konfiguriert, müssen Sie auch einen Quota Project ID angeben. Service Account JSON File Content wird ignoriert.

Service Account JSON File Content

Optional.

Der vollständige Inhalt der JSON-Datei des Dienstkontoschlüssels.

Konfigurieren Sie diesen Parameter für die Authentifizierung mit Dienstkontoschlüsseln.

Quota Project ID

Optional.

Die Projekt-ID, die für die API-Nutzung und Abrechnung verwendet wird.

Dieser Parameter ist erforderlich, wenn die Workload Identity-Authentifizierung verwendet wird.

Wenn kein Wert angegeben ist, ruft die Integration die ID aus den Anmeldedaten des Dienstkontos ab.

Project ID

Optional.

Die Projekt-ID, die in Pub/Sub als Ziel verwendet werden soll.

Wenn kein Wert angegeben ist, ruft die Integration die ID aus den Anmeldedaten des Dienstkontos ab.

Verify SSL

Pflichtangabe.

Validiert das SSL-Zertifikat für die Verbindung zum Server. Standardmäßig aktiviert.

Eine Anleitung zum Konfigurieren einer Integration in Google SecOps finden Sie unter Integrationen konfigurieren.

Sie können später bei Bedarf Änderungen vornehmen. Nachdem Sie eine Integrationsinstanz konfiguriert haben, können Sie sie in Playbooks verwenden. Weitere Informationen zum Konfigurieren und Unterstützen mehrerer Instanzen finden Sie unter Mehrere Instanzen unterstützen.

Aktionen

Weitere Informationen zu Aktionen finden Sie unter Auf ausstehende Aktionen im Workdesk reagieren und Manuelle Aktion in einem Fall ausführen.

Ping

Verwenden Sie die Ping-Aktion, um die Verbindung zu Pub/Sub zu testen.

Diese Aktion wird nicht für Google SecOps-Entitäten ausgeführt.

Aktionseingaben

Keine.

Aktionsausgaben

Die Aktion Ping liefert die folgenden Ausgaben:

Aktionsausgabetyp Verfügbarkeit
Anhang im Fall-Repository Nicht verfügbar
Link zum Fall-Repository Nicht verfügbar
Tabelle mit Fall-Repository Nicht verfügbar
Anreicherungstabelle Nicht verfügbar
JSON-Ergebnis Nicht verfügbar
Ausgabenachrichten Verfügbar
Scriptergebnis Verfügbar
Ausgabenachrichten

Die Aktion Ping kann die folgenden Ausgabenachrichten zurückgeben:

Ausgabemeldung Beschreibung der Nachricht
Successfully connected to the Pub/Sub server with the provided connection parameters! Die Aktion war erfolgreich.
Failed to connect to the Pub/Sub server! Error is ERROR_REASON

Die Aktion ist fehlgeschlagen.

Prüfen Sie die Verbindung zum Server, die Eingabeparameter oder die Anmeldedaten.

Scriptergebnis

In der folgenden Tabelle ist der Wert für die Ausgabe des Skriptergebnisses bei Verwendung der Aktion Ping aufgeführt:

Name des Skriptergebnisses Wert
is_success True oder False

Connectors

Eine detaillierte Anleitung zum Konfigurieren eines Connectors in Google SecOps finden Sie unter Daten aufnehmen (Connectors).

Pub/Sub – Messages-Connector

In der Google SecOps-Plattform wird der Pub/Sub – Messages Connector als PubSub – Messages Connector bezeichnet.

Verwenden Sie den Pub/Sub – Messages Connector, um Nachrichten aus Pub/Sub abzurufen.

JSON-Schweregradzuordnung

Wenn Sie den Schweregrad der Benachrichtigung zuordnen möchten, müssen Sie angeben, welches Feld der Pub/Sub – Messages Connector verwendet, um den Wert für den Schweregrad im Parameter Severity Mapping JSON abzurufen. Die Connector-Antwort kann Werttypen wie integer, float und string enthalten.

Der Pub/Sub – Messages Connector liest die Werte integer und float und ordnet sie gemäß den Google SecOps-Einstellungen zu. In der folgenden Tabelle ist die Zuordnung der integer-Werte zum Schweregrad in Google SecOps aufgeführt:

Ganzzahlwert Zugeordneter Schweregrad
100 Critical
Von 80 bis 100 High
Von 60 bis 80 Medium
Von 40 bis 60 Low
Weniger als 40 Informational

Wenn die Antwort den Wert string enthält, ist für den Pub/Sub – Messages Connector eine zusätzliche Konfiguration erforderlich.

Der Standardwert sieht anfangs so aus:

{
    "Default": 60
}

Wenn sich die für die Zuordnung erforderlichen Werte im JSON-Schlüssel event_severity befinden, können die Werte so aussehen:

  • "Malicious"
  • "Benign"
  • "Unknown"

Konfigurieren Sie den Parameter Severity Mapping JSON so, dass die JSON-Schlüsselwerte event_severity geparst werden und das JSON-Objekt ein korrektes Format hat:

{
    "event_severity": {
        "Malicious": 100,
        "Unknown": 60,
        "Benign": -1
    },
    "Default": 50
}

Der Wert "Default" ist erforderlich.

Wenn es mehrere Übereinstimmungen für dasselbe JSON-Objekt gibt, priorisiert der Pub/Sub – Messages Connector den ersten JSON-Objektschlüssel.

Wenn Sie mit Feldern arbeiten möchten, die integer- oder float-Werte enthalten, konfigurieren Sie den Schlüssel und einen leeren String im Parameter Severity Mapping JSON:

{
  "Default":"60",
  "integer_field": "",
  "float_field": ""
}

Connector-Eingaben

Für den Pub/Sub – Messages Connector sind die folgenden Parameter erforderlich:

Parameter Beschreibung
Product Field Name Erforderlich

Der Name des Felds, in dem der Produktname gespeichert ist.

Der Standardwert ist Product Name.

Event Field Name Erforderlich

Der Feldname, der zur Bestimmung des Ereignisnamens (Untertyp) verwendet wird.

Der Standardwert ist event_type.

Environment Field Name Optional

Der Name des Felds, in dem der Umgebungsname gespeichert ist.

Wenn das Feld „environment“ nicht gefunden wird, wird die Umgebung auf die Standardumgebung gesetzt.

Der Standardwert ist "".

Environment Regex Pattern Optional

Ein reguläres Ausdrucksmuster, das für den im Feld Environment Field Name gefundenen Wert ausgeführt werden soll. Mit diesem Parameter können Sie das Umgebungsfeld mithilfe der Logik regulärer Ausdrücke bearbeiten.

Verwenden Sie den Standardwert .*, um den erforderlichen Rohwert Environment Field Name abzurufen.

Wenn das Muster des regulären Ausdrucks null oder leer ist oder der Umgebungswert null ist, ist das endgültige Umgebungsergebnis die Standardumgebung.

PythonProcessTimeout Erforderlich

Das Zeitlimit in Sekunden für den Python-Prozess, der das aktuelle Script ausführt.

Der Standardwert ist 60.

Service Account JSON File Content Optional

Der Inhalt der JSON-Datei des Dienstkontoschlüssels.

Sie können diesen Parameter oder den Parameter Workload Identity Email konfigurieren.

Geben Sie zum Konfigurieren dieses Parameters den vollständigen Inhalt der JSON-Datei des Dienstkontoschlüssels an, die Sie beim Erstellen eines Dienstkontos heruntergeladen haben.

Beim Pub/Sub – Messages Connector hat die Authentifizierung mit der JSON-Datei des Dienstkontoschlüssels Vorrang vor der Workload Identity-Föderation.

Workload Identity Email Optional

Die Client-E-Mail-Adresse Ihres Dienstkontos.

Sie können diesen Parameter oder den Parameter Service Account JSON File Content konfigurieren.

Wenn Sie die Identität von Dienstkonten mit der Workload Identity-Föderation übernehmen möchten, weisen Sie Ihrem Dienstkonto die Rolle Service Account Token Creator zu.

Project ID Optional

Die Projekt-ID, die im Connector verwendet werden soll.

Quota Project ID Optional

Die Google Cloud -Projekt-ID, die Sie für Google Cloud -APIs und die Abrechnung verwenden. Für diesen Parameter müssen Sie Ihrem Dienstkonto die Rolle Service Usage Consumer zuweisen. Weitere Informationen zu den IAM-Rollen finden Sie unter Zugriffssteuerung mit IAM.

Die Integration hängt diesen Parameterwert an alle API-Anfragen an.

Subscription ID Erforderlich

Die Pub/Sub-Abo-ID.

Case Name Template Optional

Ein benutzerdefinierter Fallname.

Wenn Sie diesen Parameter konfigurieren, fügt der Connector dem Google SecOps-Ereignis einen neuen Schlüssel namens custom_case_name hinzu.

Sie können Platzhalter im folgenden Format angeben: [name of the field].

Beispiel: Phishing - [event_mailbox]

Für Platzhalter verwendet der Connector das erste Google SecOps-Ereignis. Der Connector verarbeitet nur Schlüssel, die den Stringwert enthalten. Geben Sie zum Konfigurieren dieses Parameters Ereignisfelder ohne Präfixe an.

Alert Name Template Erforderlich

Ein benutzerdefinierter Name für die Benachrichtigung.

Sie können Platzhalter im folgenden Format angeben: [name of the field].

Beispiel: Phishing - [event_mailbox].

Für Platzhalter verwendet der Connector das erste Google SecOps-Ereignis. Der Connector verarbeitet nur Schlüssel, die den Stringwert enthalten. Wenn Sie keinen Wert angeben oder eine ungültige Vorlage verwenden, verwendet der Connector einen Fallback-Wert im folgenden Format: CONNECTOR_NAME - Alert. Geben Sie zum Konfigurieren dieses Parameters Ereignisfelder ohne Präfixe an.

Rule Generator Template Erforderlich

Ein Generator für benutzerdefinierte Regeln.

Sie können Platzhalter im folgenden Format angeben: [name of the field].

Beispiel: Phishing - [event_mailbox].

Für Platzhalter verwendet der Connector das erste Google SecOps-Ereignis. Der Connector verarbeitet nur Schlüssel, die den Stringwert enthalten. Wenn Sie keinen Wert angeben oder eine ungültige Vorlage verwenden, verwendet der Connector einen Fallback-Wert im folgenden Format: CONNECTOR_NAME - Rule Generator. Geben Sie zum Konfigurieren dieses Parameters Ereignisfelder ohne Präfixe an.

Timestamp Field Erforderlich

Der Name des Felds, mit dem der Zeitstempel der Google SecOps-Benachrichtigung definiert wird.

Wenn der Zeitstempel nicht das Unix-Epochenzeitformat verwendet, definieren Sie das Zeitstempelformat im Parameter Timestamp Format.

Der Standardwert ist message_publishTime.

Timestamp Format Optional

Das Format des Zeitstempels der Nachricht.

Der Connector benötigt den Zeitstempel, um die Nachricht korrekt zu verarbeiten. Wenn der Zeitstempel nicht das Unix-Epochenzeitformat verwendet und Sie kein Zeitstempelformat konfigurieren, schlägt der Connector fehl.

Der Standardwert ist %Y-%m-%dT%H:%M:%S.%fZ.

Severity Mapping JSON Erforderlich

Das JSON-Objekt, das definiert, wie der Connector den Schweregrad aus der Nachricht extrahiert.

Der Standardwert ist:

    {
      "Default": "60"
    }
    

Weitere Informationen zur Zuordnung von Schweregraden finden Sie unter JSON-Schweregradzuordnung.

Unique ID Field Optional

Der Name des Felds, mit dem bestätigt wird, dass die Nachricht eindeutig ist. Sie können das reservierte Keyword pubsub_message_id verwenden, um die native Pub/Sub-Nachrichten-ID zu extrahieren. Wenn Sie keinen Wert festlegen oder das Feld nicht gefunden wird, generiert der Connector einen SHA-256-Hash und verwendet ihn als Kennung für die Nachricht.

Max Messages To Fetch Erforderlich

Die maximale Anzahl von Nachrichten, die für jede Connector-Iteration verarbeitet werden sollen.

Der Standardwert ist 100.

Disable Overflow Optional

Wenn diese Option ausgewählt ist, ignoriert der Connector beim Erstellen von Benachrichtigungen den Überlaufmechanismus von Google SecOps.

Standardmäßig ausgewählt.

Verify SSL Erforderlich

Wenn diese Option ausgewählt ist, wird bei der Integration geprüft, ob das SSL-Zertifikat für die Verbindung mit Pub/Sub gültig ist.

Standardmäßig ausgewählt.

Proxy Server Address Optional

Die Adresse des zu verwendenden Proxyservers.

Proxy Username Optional

Der Proxy-Nutzername für die Authentifizierung.

Proxy Password Optional

Das Proxy-Passwort für die Authentifizierung.

Connector-Regeln

Der Pub/Sub – Messages-Connector unterstützt Proxys.

Connector-Ereignisse

Das folgende Beispiel zeigt die JSON-Ausgabe eines Google SecOps-Ereignisses, das vom Pub/Sub – Messages Connector generiert wird:

{
   "notificationConfigName": "organizations/ORGANIZATION_ID/notificationConfigs/soar_connector_toxic_notifications_config",
   "finding": {
       "name": "organizations/ORGANIZATION_ID/sources/SOURCE_ID/findings/FINDING_ID",
       "parent": "organizations/ORGANIZATION_ID/sources/SOURCE_ID",
       "resourceName": "//compute.googleapis.com/projects/PROJECT_ID/global/firewalls/FIREWALL_ID",
       "state": "ACTIVE",
       "category": "OPEN_NETBIOS_PORT",
       "externalUri": "https://console.cloud.google.com/networking/firewalls/details/default-allow-rdp?project\u003dPROJECT_ID",
       "sourceProperties": {
           "Recommendation": "Restrict the firewall rules at: https://console.cloud.google.com/networking/firewalls/details/default-allow-rdp?project\u003dPROJECT_ID",
           "ExceptionInstructions": "Add the security mark \"allow_open_netbios_port\" to the asset with a value of \"true\" to prevent this finding from being activated again.",
           "Explanation": "Firewall rules that allow connections from all IP addresses on TCP ports 137-139 or UDP ports 137-139 may expose NetBIOS services to attackers.",
           "ScannerName": "FIREWALL_SCANNER",
           "ResourcePath": [
               "projects/PROJECT_ID/",
               "folders/FOLDER_ID/",
               "folders/FOLDER_ID/",
               "organizations/ORGANIZATION_ID/"
           ],
           "ExposedService": "NetBIOS",
           "OpenPorts": {
               "TCP": [
                   137.0,
                   138.0,
                   139.0
               ],
               "UDP": [
                   137.0,
                   138.0,
                   139.0
               ]
           },
           "compliance_standards": {
               "iso": [
                   {
                       "ids": [
                           "A.13.1.1"
                       ]
                   }
               ],
               "pci": [
                   {
                       "ids": [
                           "1.2.1"
                       ]
                   }
               ],
               "nist": [
                   {
                       "ids": [
                           "SC-7"
                       ]
                   }
               ]
           },
           "ReactivationCount": 4.0
       },
       "securityMarks": {
           "name": "organizations/ORGANIZATION_ID/sources/SOURCE_ID/findings/FINDING_ID/securityMarks",
           "marks": {
               "peter": "e2e1"
           }
       },
       "eventTime": "2024-08-30T14:44:37.973090Z",
       "createTime": "2024-06-24T07:08:54.777Z",
       "propertyDataTypes": {
           "ResourcePath": {
               "listValues": {
                   "propertyDataTypes": [
                       {
                           "primitiveDataType": "STRING"
                       }
                   ]
               }
           },
           "ReactivationCount": {
               "primitiveDataType": "NUMBER"
           },
           "Explanation": {
               "primitiveDataType": "STRING"
           },
           "ExposedService": {
               "primitiveDataType": "STRING"
           },
           "ScannerName": {
               "primitiveDataType": "STRING"
           }
       }
   }
}

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