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:
Automatisierte Aufnahme von Benachrichtigungen: Sicherheitslogs, Benachrichtigungen und Telemetriedaten, die in Pub/Sub-Themen veröffentlicht werden, werden kontinuierlich abgerufen und als Fälle in Google SecOps aufgenommen.
Zentrale Sicherheitsorchestrierung: Leiten Sie Sicherheitsereignisse über Pub/Sub von Cloud- und Drittanbietersystemen weiter, um automatisierte Reaktions-Playbooks auszulösen.
Hinweis
Bevor Sie die Pub/Sub-Integration in Google SecOps konfigurieren, führen Sie die folgenden vorbereitenden Schritte aus:
Weisen Sie Ihrem Dienstkonto die erforderlichen IAM-Rollen (Identity and Access Management) zu.
Wählen Sie eine der folgenden Authentifizierungsmethoden aus und konfigurieren Sie sie:
Option 1: Workload Identity (empfohlen): Bei dieser Methode werden kurzlebige Tokens mithilfe der Identitätsübernahme des Dienstkontos verwendet.
Option 2: JSON-Schlüssel des Dienstkontos: Bei dieser Methode wird eine statische, langlebige Secret-Schlüsseldatei verwendet.
Dienstkonto erstellen
Wechseln Sie in der Google Cloud Console zu IAM & Verwaltung > Dienstkonten.
Klicken Sie auf HinzufügenDienstkonto erstellen.
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
Wenn Sie Berechtigungen erteilen, kann die Integration Nachrichten aus Ihren Abonnements aufrufen und abrufen. So weisen Sie die Standardrolle zu:
Rufen Sie in der Google Cloud Console IAM auf.
Suchen Sie Ihr Dienstkonto und klicken Sie auf Hauptkonto bearbeiten (Bearbeiten).
Klicken Sie auf Weitere Rolle hinzufügen und wählen Sie Pub/Sub-Betrachter (
roles/pubsub.viewer) aus.Klicken Sie auf Speichern.
Workload Identity-Anmeldedaten konfigurieren
Workload Identity ist die empfohlene Methode, da dabei kurzlebige Zugriffstokens mithilfe der Identitätsübernahme des Dienstkontos verwendet werden.
Eindeutige Instanzidentität ermitteln
Zum Herstellen einer Verbindung müssen Sie Ihrer Google SecOps-Instanz die Berechtigung erteilen, die Identität Ihres Dienstkontos zu übernehmen.
Gehen Sie in Google SecOps zu Content Hub > Response Integrations.
Wählen Sie die Pub/Sub-Integration aus und geben Sie die E-Mail-Adresse Ihres Dienstkontos unter Workload Identity-E-Mail ein.
Klicken Sie auf Speichern > Test. Der Test wird voraussichtlich fehlschlagen.
Klicken Sie neben dem Button Testen auf close_small und suchen Sie nach der Identitäts-E-Mail-Adresse, die mit
gke-init-python@...odersoar-python@...beginnt.Kopieren Sie diese eindeutige E-Mail-Adresse.
Instanzidentität in Google Cloudautorisieren
Wechseln Sie in der Google Cloud Console zu IAM & Verwaltung > Dienstkonten.
Wählen Sie das Zieldienstkonto aus und gehen Sie zu Berechtigungen > Zugriff gewähren.
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 das 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 erfassen.
Rufen Sie in der Google Cloud Console IAM für das Projekt auf, das als Kontingentprojekt verwendet wird.
Suchen Sie Ihr Dienstkonto und klicken Sie auf Hauptkonto bearbeiten (Bearbeiten).
Klicken Sie auf Weitere Rolle hinzufügen und wählen Sie Service Usage Consumer (
roles/serviceusage.serviceUsageConsumer) aus.Klicken Sie auf Speichern.
JSON-Schlüssel konfigurieren
Statische, langlebige Dateien mit geheimen Schlüsseln müssen manuell rotiert werden. Verwenden Sie diese Methode nur, wenn die Workload Identity-Authentifizierung nicht verfügbar ist.
Rufen Sie in der Google Cloud Console die Seite IAM & Verwaltung > Dienstkonten auf und wählen Sie Ihr Dienstkonto aus.
Rufen Sie den Tab Schlüssel auf und klicken Sie auf Schlüssel hinzufügen > Neuen Schlüssel erstellen.
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 eine |
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 einem Dienstkontoschlüssel. |
Quota Project ID |
Optional. Die Projekt-ID, die für die API-Nutzung und Abrechnung verwendet wird. Dieser Parameter ist erforderlich, wenn Sie die Workload Identity-Authentifizierung verwenden. 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 |
Erforderlich. 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.
Bei Bedarf können Sie später Ä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 Ausstehende Aktionen über „Mein Arbeitsbereich“ bearbeiten und Manuelle Maßnahme 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 bietet die folgenden Ausgaben:
| Ausgabetyp der Aktion | Verfügbarkeit |
|---|---|
| Anhang im Fall-Repository | Nicht verfügbar |
| Link zum Fall‑Repository | Nicht verfügbar |
| Tabelle „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 | Nachrichtenbeschreibung |
|---|---|
Successfully connected to the Pub/Sub server with the
provided connection parameters! |
Die Aktion wurde erfolgreich ausgeführt. |
Failed to connect to the Pub/Sub server! Error is
ERROR_REASON |
Die Aktion ist fehlgeschlagen. Überprü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 Scriptergebnisses | Wert |
|---|---|
is_success |
True oder False |
Connectors
Eine ausführliche Anleitung zum Konfigurieren eines Connectors in Google SecOps finden Sie unter Daten aufnehmen (Connectors).
Pub/Sub – Messages Connector
In der Google SecOps-Plattform heißt der Pub/Sub – Messages Connector PubSub – Messages Connector.
Verwenden Sie den Pub/Sub – Messages Connector, um Nachrichten aus Pub/Sub abzurufen.
JSON-Schweregradzuordnung
Um den Schweregrad der Benachrichtigung zuzuordnen, 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 sehen Sie die Zuordnung der integer-Werte zum Schweregrad in Google SecOps:
| 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, muss der Pub/Sub – Messages Connector zusätzlich konfiguriert werden.
Anfangs wird der Standardwert so angezeigt:
{
"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"
Um die event_severity-JSON-Schlüsselwerte zu parsen und dafür zu sorgen, dass das JSON-Objekt das richtige Format hat, konfigurieren Sie den Parameter Severity Mapping JSON so:
{
"event_severity": {
"Malicious": 100,
"Unknown": 60,
"Benign": -1
},
"Default": 50
}
Der "Default"-Wert ist erforderlich.
Wenn es mehrere Übereinstimmungen für dasselbe JSON-Objekt gibt, wird im Pub/Sub – Messages Connector der erste JSON-Objektschlüssel priorisiert.
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 |
Event Field Name |
Erforderlich Der Feldname, der zur Bestimmung des Ereignisnamens (Untertyp) verwendet wird. Der Standardwert ist |
Environment Field Name |
Optional
Der Name des Felds, in dem der Name der Umgebung gespeichert ist. Wenn das Feld „environment“ nicht gefunden wird, wird die Umgebung auf die Standardumgebung festgelegt. Der Standardwert ist |
Environment Regex Pattern |
Optional
Ein reguläres Ausdrucksmuster, das auf den Wert angewendet wird, der im Feld Verwenden Sie den Standardwert 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, in dem das aktuelle Skript ausgeführt wird. Der Standardwert ist |
Service Account JSON File Content |
Optional Der Inhalt der JSON-Datei des Dienstkontoschlüssels. Sie können diesen Parameter oder den Parameter 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 Um die Identität von Dienstkonten mit der Workload Identity Federation zu übernehmen, weisen Sie Ihrem Dienstkonto die Rolle |
Project ID |
Optional Die im Connector zu verwendende Projekt-ID. |
Quota Project ID |
Optional Die Google Cloud -Projekt-ID, die Sie für Google Cloud APIs und Abrechnung verwenden. Für diesen Parameter müssen Sie Ihrem Dienstkonto die Rolle Der Parameterwert wird von der Integration an alle API-Anfragen angehängt. |
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 Sie können Platzhalter im folgenden Format angeben:
Beispiel: Bei Platzhaltern wird das erste Google SecOps-Ereignis verwendet. Der Connector verarbeitet nur Schlüssel, die den Stringwert enthalten. Wenn Sie diesen Parameter konfigurieren möchten, geben Sie Ereignisfelder ohne Präfixe an. |
Alert Name Template |
Erforderlich Ein benutzerdefinierter Name für die Benachrichtigung. Sie können Platzhalter im folgenden Format angeben:
Beispiel: Bei Platzhaltern wird das erste Google SecOps-Ereignis verwendet. 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: |
Rule Generator Template |
Erforderlich Ein Generator für benutzerdefinierte Regeln. Sie können Platzhalter im folgenden Format angeben:
Beispiel: Bei Platzhaltern wird das erste Google SecOps-Ereignis verwendet. 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: |
Timestamp Field |
Erforderlich Der Name des Felds, mit dem der Zeitstempel für Google SecOps-Benachrichtigungen definiert wird. Wenn der Zeitstempel nicht das Unix-Epochenzeitformat verwendet, definieren Sie das Zeitstempelformat im Parameter Der Standardwert ist |
Timestamp Format |
Optional Das Zeitstempelformat der Nachricht. Der Connector benötigt den Zeitstempel, um die Nachricht richtig zu verarbeiten. Wenn der Zeitstempel nicht das Unix-Epochenzeitformat verwendet und Sie kein Zeitstempelformat konfigurieren, schlägt die Verbindung fehl. Der Standardwert ist |
Severity Mapping JSON |
Erforderlich Das JSON-Objekt, das definiert, wie der Connector die Wichtigkeitsstufe aus der Nachricht extrahiert. Der Standardwert ist: { "Default": "60" } Weitere Informationen zur Schweregradzuordnung finden Sie unter JSON-Schweregradzuordnung. |
Unique ID Field |
Optional Der Name des Felds, mit dem bestätigt wird, dass die Nachricht eindeutig ist. Mit dem reservierten Keyword |
Max Messages To Fetch |
Erforderlich Die maximale Anzahl der Nachrichten, die für jede Connector-Iteration verarbeitet werden sollen. Der Standardwert ist |
Disable Overflow |
Optional Wenn diese Option ausgewählt ist, ignoriert der Connector den Google SecOps-Überlaufmechanismus beim Erstellen von Benachrichtigungen. Standardmäßig ausgewählt. |
Verify SSL |
Erforderlich Wenn diese Option ausgewählt ist, wird geprüft, ob das SSL-Zertifikat für die Verbindung zu 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-Connector für Nachrichten unterstützt Proxys.
Anschlussstecker-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