Apache Kafka in Google SecOps einbinden
In diesem Dokument wird beschrieben, wie Sie Apache Kafka in Google Security Operations (Google SecOps) einbinden.
Anwendungsfälle
Die Apache Kafka-Integration kann für die folgenden Anwendungsfälle verwendet werden:
Echtzeit-Aufnahme von Sicherheitslogs: Sicherheitsereignisse aus Kafka-Themen werden automatisch in Google SecOps aufgenommen und verarbeitet. Dies ermöglicht eine zentrale Logverwaltung und Echtzeitanalyse, um Benachrichtigungen auf Grundlage von Streamingdaten zu generieren.
Ereignisgesteuerte Automatisierung: Automatisierte Playbooks in Google SecOps werden durch bestimmte Sicherheitsereignisse oder Nachrichten ausgelöst, die aus einem Kafka-Thema gestreamt werden. Dadurch wird die Reaktion auf kritische Ereignisse wie die Anmeldung eines Nutzers von einem ungewöhnlichen Standort beschleunigt.
Anreicherung mit Threat Intelligence: Benutzerdefinierte Threat Intelligence-Feeds aus Kafka-Themen abrufen, um vorhandene Benachrichtigungen und Fälle anzureichern. So erhalten Analysten aktuellen Kontext zu Indicators of Compromise (IOCs) und die Genauigkeit der Bedrohungsanalyse wird verbessert.
Hinweis
Bevor Sie die Apache Kafka-Integration in Google SecOps konfigurieren, müssen Sie die folgenden Voraussetzungen erfüllen:
- Apache Kafka-Server: Sie benötigen Zugriff auf einen laufenden Apache Kafka-Server mit den erforderlichen Kafka-Brokern und -Themen.
Docker-Image für Remote-Agent: Beim Erstellen von Remote-Agents müssen Sie ein Debian-basiertes Image verwenden. Verwenden Sie das folgende Bild, um die Kompatibilität zu prüfen:
us-docker.pkg.dev/siem-ar-public/images/agent-debian:latest
Integrationsparameter
Für die Apache Kafka-Integration sind die folgenden Parameter erforderlich:
| Parameter | Beschreibung |
|---|---|
Kafka brokers |
Erforderlich. Eine durch Kommas getrennte Liste von Kafka-Brokern, mit denen eine Verbindung hergestellt werden soll, im Format |
Use TLS for connection |
Optional. Wenn diese Option ausgewählt ist, verwendet die Integration die TLS-Verschlüsselung für die Authentifizierung. Für diesen Parameter ist ein Zertifizierungsstellenzertifikat erforderlich. Standardmäßig nicht aktiviert. |
Use SASL PLAIN with TLS for connection |
Optional. Wenn diese Option ausgewählt ist, verwendet die Integration den SASL PLAIN-Mechanismus für Nutzernamen und Passwörter zur Authentifizierung. Diese Option wird nur mit TLS-Verschlüsselung unterstützt und erfordert sowohl einen SASL-Nutzernamen und ein SASL-Passwort als auch ein Zertifizierungsstellenzertifikat. Standardmäßig nicht aktiviert. |
CA certificate of Kafka server |
Optional. Das Zertifizierungsstellenzertifikat, das zum Überprüfen der Identität des Kafka-Servers verwendet wird. Dieser Parameter ist erforderlich, wenn SASL aktiviert ist. |
Client certificate |
Optional. Das Clientzertifikat für die gegenseitige TLS-Authentifizierung mit dem Kafka-Server. Dieser Parameter ist erforderlich, wenn gegenseitiges TLS (mTLS) aktiviert ist. |
Client certificate key |
Optional. Der private Schlüssel, der dem Zertifikat des Clients entspricht und für die gegenseitige TLS-Authentifizierung verwendet wird. Dieser Parameter ist erforderlich, wenn gegenseitiges TLS (mTLS) aktiviert ist. |
Client certificate key password |
Optional. Das Passwort, das zum Entschlüsseln des privaten Schlüssels des Clientzertifikats verwendet wird. Dieser Parameter ist erforderlich, wenn gegenseitiges TLS (mTLS) aktiviert ist. |
SASL PLAIN Username |
Optional. Der Nutzername für die SASL PLAIN-Authentifizierung bei Kafka-Brokern. Dieser Parameter ist erforderlich, wenn SASL aktiviert ist. |
SASL PLAIN Password |
Optional. Das Passwort für die SASL PLAIN-Authentifizierung bei Kafka-Brokern. Dieser Parameter ist erforderlich, wenn SASL aktiviert ist. |
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 in „Mein Arbeitsbereich“ beantworten und Manuelle Aktion ausführen.
Ping
Verwenden Sie die Aktion Ping, um die Verbindung zu Apache Kafka zu testen.
Diese Aktion wird nicht für Google SecOps-Elemente 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 |
|---|---|
|
Die Aktion wurde ausgeführt. |
Failed to connect to the Apache Kafka 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
Weitere Informationen zum Konfigurieren von Connectors in Google SecOps finden Sie unter Daten aufnehmen (Connectors).
Apache Kafka – Messages Connector
Mit dem Apache Kafka – Messages Connector können Sie Nachrichten aus Apache Kafka abrufen.
Der Connector ruft Nachrichten aus einem angegebenen Kafka-Thema ab und kann sie je nach Nachrichtenformat unterschiedlich verarbeiten. Wenn eine Nachricht ein gültiges JSON-Objekt ist, extrahiert der Connector bestimmte Felder für die Erstellung und Zuordnung von Benachrichtigungen. Wenn die Nachricht ein einfacher String ist, werden die Daten als Rohereignisdaten erfasst.
Der Connector übernimmt die Zuordnung von Schweregraden, die Erstellung von Vorlagen für Warnungsnamen und die Generierung eindeutiger IDs basierend auf den von Ihnen angegebenen Parametern.
JSON-Schweregradzuordnung
Um den Schweregrad der Benachrichtigung zuzuordnen, müssen Sie angeben, welches Feld der Apache Kafka – 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 Apache Kafka – 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, priorisiert der Apache Kafka – 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 Apache Kafka – Messages Connector sind die folgenden Parameter erforderlich:
| Parameter | Beschreibung |
|---|---|
Product Field Name |
Erforderlich. Der Name des Felds, in dem der Produktname gespeichert ist. Der Produktname wirkt sich hauptsächlich auf die Zuordnung aus. Um den Zuordnungsprozess für den Connector zu optimieren und zu verbessern, wird der Standardwert in einen Fallback-Wert aufgelöst, auf den im Code verwiesen wird. Ungültige Eingaben für diesen Parameter werden standardmäßig in einen Fallback-Wert aufgelöst. Der Standardwert ist |
Event Field Name |
Erforderlich. Der Name des Felds, das den Ereignisnamen (Untertyp) bestimmt. Der Standardwert ist |
Environment Field Name |
Optional. Der Name des Felds, in dem der Name der Umgebung gespeichert ist. Wenn das Feld „environment“ fehlt, wird der Standardwert verwendet. Der Standardwert ist |
Environment Regex Pattern |
Optional. Ein Muster für einen regulären Ausdruck, der für den Wert 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. |
Script Timeout (Seconds) |
Erforderlich. Das Zeitlimit in Sekunden für den Python-Prozess, in dem das aktuelle Script ausgeführt wird. Der Standardwert ist |
Kafka brokers |
Erforderlich. Eine durch Kommas getrennte Liste von Kafka-Brokern, mit denen eine Verbindung hergestellt werden soll, im Format |
Use TLS for connection |
Optional. Wenn diese Option ausgewählt ist, verwendet die Integration die TLS-Verschlüsselung für die Authentifizierung. Für diesen Parameter ist ein CA-Zertifikat erforderlich. Standardmäßig nicht aktiviert. |
Use SASL PLAIN with TLS for connection |
Optional. Wenn diese Option ausgewählt ist, verwendet die Integration den SASL PLAIN-Mechanismus für Nutzernamen und Passwörter zur Authentifizierung. Für diese Option müssen ein SASL-Nutzername und ein SASL-Passwort angegeben werden. Sie wird nur mit TLS-Verschlüsselung unterstützt, für die ein CA-Zertifikat erforderlich ist. Standardmäßig nicht aktiviert. |
CA certificate of Kafka server |
Optional. Das Zertifizierungsstellenzertifikat, das zum Überprüfen der Identität des Kafka-Servers verwendet wird. |
Client certificate |
Optional. Das Clientzertifikat für die gegenseitige TLS-Authentifizierung mit dem Kafka-Server. |
Client certificate key |
Optional. Der private Schlüssel, der dem Zertifikat des Clients entspricht und für die gegenseitige TLS-Authentifizierung verwendet wird. |
Client certificate key password |
Optional. Das Passwort, das zum Entschlüsseln des privaten Schlüssels des Clientzertifikats verwendet wird. |
SASL PLAIN Username |
Optional. Der Nutzername für die SASL PLAIN-Authentifizierung bei Kafka-Brokern. |
SASL PLAIN Password |
Optional. Das Passwort für die SASL PLAIN-Authentifizierung bei Kafka-Brokern. |
Topic |
Erforderlich. Das Kafka-Thema, aus dem Vorfälle abgerufen werden. |
Consumer Group ID |
Optional. Die Kennung der Verbrauchergruppe, die beim Abrufen von Vorfällen verwendet wird. Wenn kein Wert angegeben ist, wird eine eindeutige ID generiert. |
Partitions |
Optional. Eine CSV-Liste der Partitionen, aus denen Nachrichten abgerufen werden sollen. |
Initial Offset |
Optional. Gibt an, ab wo der Connector Nachrichten aus einer Kafka-Partition abruft. Sie können eine positive Ganzzahl angeben, um an einem bestimmten Offset zu beginnen, oder die Werte |
Poll Timeout |
Optional. Ein Poll-Zeitlimit zum Empfangen einer Nachricht von Kafka in Sekunden. |
Case Name Template |
Optional. Eine Vorlage zum Definieren eines benutzerdefinierten Fallnamens. Der Connector fügt dem Ereignis einen Sie können Platzhalter im Format FIELD_NAME verwenden, die mit den String-Werten des ersten Ereignisses gefüllt werden. Beispiel: |
Alert Name Template |
Erforderlich. Eine Vorlage zum Definieren des Benachrichtigungsnamens. Sie können Platzhalter im Format FIELD_NAME verwenden, die mit den String-Werten des ersten Ereignisses gefüllt werden. Beispiel: Wenn kein Wert angegeben wird oder die Vorlage ungültig ist, verwendet der Connector einen Standardnamen für die Benachrichtigung. |
Rule Generator Template |
Erforderlich. Eine Vorlage zum Definieren des Regelgenerators. Sie können Platzhalter im Format FIELD_NAME verwenden, die mit den String-Werten des ersten Ereignisses gefüllt werden. Beispiel: Wenn kein Wert angegeben wird oder die Vorlage ungültig ist, verwendet der Connector einen Standardnamen für die Regelgenerierung. |
Timestamp Field |
Erforderlich. Der Feldname in der Kafka-Nachricht, der den Zeitstempel der Google SecOps-Benachrichtigung enthält. Wenn der Zeitstempel nicht im Unix-Epochenformat vorliegt, muss sein Format im Parameter |
Timestamp Format |
Optional. Das Format des Zeitstempels der Nachricht, das für Zeitstempel erforderlich ist, die nicht auf der Unix-Epoche basieren. Verwenden Sie die Standard-Python-Formatcodes Wenn der Zeitstempel nicht im Unix-Epochenformat vorliegt und dieser Parameter nicht konfiguriert ist, schlägt der Connector fehl. |
Severity Mapping JSON |
Erforderlich. Das JSON-Objekt, das vom Connector verwendet wird, um den Schweregrad aus der Nachricht zu extrahieren und der Google SecOps-Prioritätsskala zuzuordnen. Der Standardwert ist |
Unique ID Field |
Optional. Der Name des Felds, das als eindeutige Nachrichten-ID verwendet werden soll. Wenn kein Wert angegeben ist, generiert und verwendet der Connector einen SHA-256-Hash des Nachrichteninhalts als Nachrichten-ID. |
Max Messages To Fetch |
Erforderlich. Die maximale Anzahl von Nachrichten, die der Connector für jede Iteration verarbeitet. Der Standardwert ist |
Disable Overflow |
Optional. Wenn diese Option ausgewählt ist, ignoriert der Connector den Google SecOps-Überlaufmechanismus. Standardmäßig aktiviert. |
Verify SSL |
Erforderlich. Wenn diese Option ausgewählt ist, wird das SSL-Zertifikat bei der Verbindung zum Apache Kafka-Server validiert. Standardmäßig aktiviert. |
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 Connector unterstützt Proxys.
Connector-Benachrichtigungen
In der folgenden Tabelle wird die Zuordnung von Apache Kafka-Nachrichtenfeldern zu Google SecOps-Benachrichtigungsfeldern beschrieben:
| Siemplify-Benachrichtigungsfeld | Apache Kafka-Nachrichtenfeld |
|---|---|
SourceSystemName |
Wird vom Framework ausgefüllt. |
TicketId |
Der Wert des Felds „Eindeutige ID“ oder ein SHA-256-Hash der Nachricht. |
DisplayId |
ApacheKafka_{unique id or hash}_{connector identifier} |
Name |
Der von Alert Name Template generierte Wert. |
Reason |
– |
Description |
– |
DeviceVendor |
Fest codiert: Apache Kafka |
DeviceProduct |
Fallback-Wert: Message |
Priority |
Wird aus dem Parameter Severity Mapping JSON abgeleitet. |
RuleGenerator |
Der von Rule Generator Template generierte Wert. |
SourceGroupingIdentifier |
– |
StartTime |
Konvertiert aus dem Timestamp Field. |
EndTime |
Konvertiert aus dem Timestamp Field. |
Siemplify Alert - Extensions |
– |
Siemplify Alert - Attachments |
– |
Connector-Ereignisse
Hier ist ein Beispiel für ein Connector-Ereignis:
{
"notificationConfigName": "organizations/ORGANIZATION_ID/notificationConfigs/soar_connector_CONNECTOR_ID_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=PROJECT_ID",
"sourceProperties": {
"Recommendation": "Restrict the firewall rules at: https://console.cloud.google.com/networking/firewalls/details/default-allow-rdp?project=PROJECT_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_1/",
"folders/FOLDER_ID_2/",
"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": {
"USER_ID": "SECURITY_MARK"
}
},
"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