Benutzerdefinierte Security Data Analytics-Logs erfassen
In diesem Dokument wird beschrieben, wie Sie benutzerdefinierte Sicherheitsanalysedaten mit verschiedenen Aufnahmemethoden in Google Security Operations aufnehmen. Dieser Leitfaden ist für benutzerdefinierte Sicherheitsdatenquellen gedacht, für die kein vordefinierter Parser oder Logtyp vorhanden ist.
Die benutzerdefinierte Sicherheitsdatenanalyse umfasst proprietäre Sicherheitstelemetrie, benutzerdefinierte Anwendungsprotokolle, interne Sicherheitstools oder sicherheitsrelevante Daten aus Quellen ohne native Google SecOps-Integration. Sie können diese Daten als unstrukturierte Logs aufnehmen und optional mit benutzerdefinierten Parsern normalisieren.
Hinweise
Prüfen Sie, ob folgende Voraussetzungen erfüllt sind:
- Eine Google SecOps-Instanz
- Benutzerdefinierte Sicherheitsdatenquelle, die Protokolle in JSON, CSV, SYSLOG oder anderen strukturierten Formaten exportieren kann
- Zugriff auf eine der folgenden Optionen:
- Google Cloud Console (zum Erstellen von API-Schlüsseln und für GCS)
- AWS-Konsole (für S3 oder Firehose)
- Azure-Portal (für Azure Blob Storage)
- HTTP-Client oder Anwendung, die Webhook-Anfragen senden kann
- Berechtigungen zum Erstellen und Verwalten von Feeds in Google SecOps
Aufnahmemethode auswählen
Google SecOps unterstützt mehrere Methoden zur Aufnahme benutzerdefinierter Sicherheitsdaten. Wählen Sie die Methode aus, die am besten zu den Funktionen Ihrer Datenquelle passt:
| Aufnahmemethode | Anwendungsfall | Latenz | Einrichtungskomplexität |
|---|---|---|---|
| Webhook | Echtzeit-Push von Anwendungen | Sekunden | Niedrig |
| Amazon S3 V2 | Batch-Export in einen S3-Bucket | Minuten bis Stunden | Mittel |
| Google Cloud Storage V2 | Batch-Export in GCS-Bucket | Minuten bis Stunden | Mittel |
| Azure Blob Storage V2 | Batch-Export in Azure-Speicher | Minuten bis Stunden | Mittel |
| Amazon Data Firehose | Echtzeit-Streaming von AWS | Sekunden | Hoch |
Option 1: Webhook-Aufnahme (Echtzeit-Push)
Verwenden Sie diese Methode, wenn Ihre benutzerdefinierte Sicherheitsanwendung HTTP-POST-Anfragen an einen externen Endpunkt senden kann.
Webhook-Feed in Google SecOps erstellen
Feed erstellen
- 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.
custom-security-analytics-webhook. - Wählen Sie Webhook als Quelltyp aus.
- Wählen Sie Custom Security Data Analytics als Log type (Protokolltyp) aus.
- Klicken Sie auf Weiter.
- Geben Sie Werte für die folgenden Eingabeparameter an:
- Split delimiter (Trennzeichen für Aufteilung): Optional: Geben Sie ein Trennzeichen ein, um mehrzeilige Ereignisse aufzuteilen. Häufige Werte:
\n: Zeilenumbruch (am häufigsten für NDJSON)- Leer lassen, wenn jede Anfrage einen einzelnen Termin enthält
- Asset-Namespace: Der Asset-Namespace
- Labels für Datenaufnahme: Das Label, das auf die Ereignisse aus diesem Feed angewendet werden soll
- Split delimiter (Trennzeichen für Aufteilung): Optional: Geben Sie ein Trennzeichen ein, um mehrzeilige Ereignisse aufzuteilen. Häufige Werte:
- Klicken Sie auf Weiter.
- Prüfen Sie die neue Feedkonfiguration auf dem Bildschirm Abschließen und klicken Sie dann auf Senden.
Secret-Schlüssel generieren und speichern
Nachdem Sie den Feed erstellt haben, müssen Sie einen geheimen Schlüssel für die Authentifizierung generieren:
- Klicken Sie auf der Seite mit den Feeddetails auf Secret Key generieren.
- In einem Dialogfeld wird der geheime Schlüssel angezeigt.
Kopieren und speichern Sie den geheimen Schlüssel sicher.
Feed-Endpunkt-URL abrufen
- Rufen Sie den Tab Details des Feeds auf.
- Kopieren Sie im Abschnitt Endpunktinformationen die Feed-Endpunkt-URL.
Das URL-Format lautet:
https://malachiteingestion-pa.googleapis.com/v2/unstructuredlogentries:batchCreateoder
https://<REGION>-malachiteingestion-pa.googleapis.com/v2/unstructuredlogentries:batchCreateSpeichern Sie diese URL für die nächsten Schritte.
Klicken Sie auf Fertig.
Google Cloud API-Schlüssel erstellen
Für Google SecOps ist ein API-Schlüssel für die Authentifizierung erforderlich. Erstellen Sie in der Google Cloud Console einen eingeschränkten API-Schlüssel.
API-Schlüssel erstellen
- Rufen Sie die Seite „Anmeldedaten“ in der Google Cloud Console auf.
- Wählen Sie Ihr Projekt aus (das Projekt, das mit Ihrer Chronicle-Instanz verknüpft ist).
- Klicken Sie auf Anmeldedaten erstellen > API-Schlüssel.
- Ein API-Schlüssel wird erstellt und in einem Dialogfeld angezeigt.
- Klicken Sie auf API-Schlüssel bearbeiten, um den Schlüssel einzuschränken.
API-Schlüssel einschränken
- Auf der Seite mit den API-Schlüssel-Einstellungen:
- Name: Geben Sie einen aussagekräftigen Namen ein, z. B.
Chronicle Webhook API Key.
- Name: Geben Sie einen aussagekräftigen Namen ein, z. B.
- Gehen Sie unter API-Einschränkungen so vor:
- Wählen Sie Schlüssel einschränken aus.
- Suchen Sie im Drop-down-Menü APIs auswählen nach Google SecOps API (oder Chronicle API) und wählen Sie die Option aus.
- Klicken Sie auf Speichern.
- Kopieren Sie den API-Schlüsselwert aus dem Feld API-Schlüssel oben auf der Seite.
Speichern Sie den API-Schlüssel sicher.
Benutzerdefinierte Anwendung für das Senden von Daten konfigurieren
Konfigurieren Sie Ihre benutzerdefinierte Sicherheitsanwendung oder Ihr benutzerdefiniertes Sicherheitsscript so, dass HTTP-POST-Anfragen an den Chronicle-Webhook-Endpunkt gesendet werden.
Webhook-URL erstellen:
Kombinieren Sie die Chronicle-Endpunkt-URL und den API-Schlüssel:
<ENDPOINT_URL>?key=<API_KEY>Beispiel:
https://malachiteingestion-pa.googleapis.com/v2/unstructuredlogentries:batchCreate?key=AIzaSyD...
Format der HTTP-Anfrage:
Methode:POST
URL:
<ENDPOINT_URL>?key=<API_KEY>Überschriften:
Content-Type: application/json x-chronicle-auth: <SECRET_KEY>Text (einzelnes Ereignis):
{ "timestamp": "2025-01-15T10:30:00Z", "event_type": "authentication", "user": "john.doe@example.com", "action": "login", "result": "success", "source_ip": "203.0.113.45", "custom_field_1": "value1", "custom_field_2": "value2" }Body (mehrere Ereignisse mit Zeilenumbruch als Trennzeichen):
{"timestamp": "2025-01-15T10:30:00Z", "event_type": "authentication", "action": "login"} {"timestamp": "2025-01-15T10:30:05Z", "event_type": "file_access", "action": "read"} {"timestamp": "2025-01-15T10:30:10Z", "event_type": "authentication", "action": "logout"}
Beispiele:
Beispiel: Python-Script:
import requests import json from datetime import datetime # Configuration ENDPOINT_URL = "https://malachiteingestion-pa.googleapis.com/v2/unstructuredlogentries:batchCreate" API_KEY = "your-api-key-here" SECRET_KEY = "your-secret-key-here" # Construct full URL url = f"{ENDPOINT_URL}?key={API_KEY}" # Headers headers = { "Content-Type": "application/json", "x-chronicle-auth": SECRET_KEY } # Sample event event = { "timestamp": datetime.utcnow().isoformat() + "Z", "event_type": "custom_security_event", "severity": "high", "source": "custom_security_tool", "message": "Suspicious activity detected", "user": "admin@example.com", "ip_address": "192.168.1.100" } # Send request response = requests.post(url, headers=headers, data=json.dumps(event)) if response.status_code == 200: print("Event sent successfully") else: print(f"Error: {response.status_code} - {response.text}")Beispiel: cURL-Befehl:
curl -X POST \ "https://malachiteingestion-pa.googleapis.com/v2/unstructuredlogentries:batchCreate?key=YOUR_API_KEY" \ -H "Content-Type: application/json" \ -H "x-chronicle-auth: YOUR_SECRET_KEY" \ -d '{ "timestamp": "2025-01-15T10:30:00Z", "event_type": "security_alert", "severity": "critical", "source": "custom_tool", "message": "Threat detected" }'
Referenz zu Authentifizierungsmethoden
Google SecOps-Webhook-Feeds unterstützen mehrere Authentifizierungsmethoden. Wählen Sie die Methode aus, die von Ihrer Anwendung unterstützt wird.
Methode 1: Benutzerdefinierte Header (empfohlen)
Wenn Ihre Anwendung benutzerdefinierte HTTP-Header unterstützt, sollten Sie diese Methode verwenden, um die Sicherheit zu erhöhen.
Anfrageformat:
POST <ENDPOINT_URL> HTTP/1.1 Content-Type: application/json x-goog-chronicle-auth: <API_KEY> x-chronicle-auth: <SECRET_KEY> { "event": "data", "timestamp": "2025-01-15T10:30:00Z" }Vorteile:
- Der API-Schlüssel und das Secret sind in der URL nicht sichtbar.
- Sicherer, da Header nicht in den Zugriffsprotokollen des Webservers protokolliert werden.
- Bevorzugte Methode, wenn die Anwendung sie unterstützt.
Methode 2: Abfrageparameter
Wenn Ihre Anwendung keine benutzerdefinierten Header unterstützt, hängen Sie die Anmeldedaten an die URL an.
URL-Format:
<ENDPOINT_URL>?key=<API_KEY>&secret=<SECRET_KEY>Beispiel:
https://malachiteingestion-pa.googleapis.com/v2/unstructuredlogentries:batchCreate?key=AIzaSyD...&secret=abcd1234...Anfrageformat:
POST <ENDPOINT_URL>?key=<API_KEY>&secret=<SECRET_KEY> HTTP/1.1 Content-Type: application/json { "event": "data", "timestamp": "2025-01-15T10:30:00Z" }Nachteile:
- Anmeldedaten sind in der URL sichtbar.
- Anmeldedaten können in Webserver-Zugriffsprotokollen protokolliert werden.
- Weniger sicher als Header.
Methode 3: Hybrid (URL + Header)
Bei einigen Konfigurationen wird der API-Schlüssel in der URL und der geheime Schlüssel im Header verwendet.
Anfrageformat:
POST <ENDPOINT_URL>?key=<API_KEY> HTTP/1.1 Content-Type: application/json x-chronicle-auth: <SECRET_KEY> { "event": "data", "timestamp": "2025-01-15T10:30:00Z" }
Webhook-Limits und Best Practices
Anfragelimits
| Limit | Wert |
|---|---|
| Maximale Anfragengröße | 4 MB |
| Maximale Abfragen pro Sekunde | 15.000 |
| Zeitlimit für Anfragen | 30 Sekunden |
| Wiederholungsverhalten | Automatisch mit exponentiellem Backoff |
Best Practices
- Batch-Ereignisse: Senden Sie mehrere Ereignisse in einer einzelnen Anfrage im NDJSON-Format (Newline-Delimited JSON), um den Aufwand zu reduzieren.
- Zeitstempel einfügen: Fügen Sie immer ein Zeitstempelfeld im ISO 8601-Format ein, damit die Ereignisse korrekt sortiert werden.
- Strukturierte Daten verwenden: Senden Sie Daten im JSON-Format, um das Parsen und Extrahieren von Feldern zu erleichtern.
- Wiederholungslogik implementieren: Beheben Sie vorübergehende Fehler mit exponentiellem Backoff.
- Antwortcodes überwachen: Protokollieren Sie Antworten, die nicht 200 sind, und richten Sie Benachrichtigungen dafür ein.
Option 2: Amazon S3 V2-Aufnahme (Batch-Export)
Verwenden Sie diese Methode, wenn Ihre benutzerdefinierte Sicherheitsanwendung Protokolle in einen Amazon S3-Bucket exportieren kann.
Amazon S3-Bucket erstellen
- Öffnen Sie die Amazon S3-Konsole.
- Klicken Sie auf Bucket erstellen.
- Geben Sie die folgenden Konfigurationsdetails an:
- Bucket-Name: Geben Sie einen aussagekräftigen Namen für den Bucket ein, z. B.
custom-security-analytics-logs. - Region: Wählen Sie die gewünschte AWS-Region aus, z. B.
us-east-1.
- Bucket-Name: Geben Sie einen aussagekräftigen Namen für den Bucket ein, z. B.
- Klicken Sie auf Erstellen.
IAM-Nutzer mit S3-Zugriff erstellen
- Öffnen Sie die IAM-Konsole.
- Klicken Sie auf Nutzer > Nutzer hinzufügen.
- Geben Sie einen Nutzernamen ein, z. B.
chronicle-s3-reader. - Wählen Sie Programmatic access (Programmatischer Zugriff) aus.
- Klicken Sie auf Next: Permissions.
- Wählen Sie Vorhandene Richtlinien direkt anhängen aus.
- Suchen Sie nach AmazonS3FullAccess und wählen Sie das Element aus.
- Klicken Sie auf Weiter: Tags.
- Klicken Sie auf Weiter: Überprüfen.
- Klicken Sie auf Nutzer erstellen.
- Klicken Sie auf CSV-Datei herunterladen, um die Zugriffsschlüssel-ID und den geheimen Zugriffsschlüssel zu speichern.
- Klicken Sie auf Schließen.
Anwendung für den Export nach S3 konfigurieren
Konfigurieren Sie Ihre benutzerdefinierte Sicherheitsanwendung so, dass Protokolldateien in den S3-Bucket geschrieben werden. Die Anwendung sollte:
- Schreiben Sie Logs in einem strukturierten Format (JSON, CSV oder Nur-Text).
- Verwenden Sie eine konsistente Dateinamenskonvention.
- Optional: Dateien nach Datum organisieren (z. B.
logs/2025/01/15/events.json). Schreiben Sie vollständige Dateien (vermeiden Sie das teilweise Schreiben).
Beispiel für Dateistruktur:
s3://custom-security-analytics-logs/ ├── security-events/ │ ├── 2025/01/15/ │ │ ├── events-10-00.json │ │ ├── events-11-00.json │ │ └── events-12-00.jsonBeispiel für das Logdateiformat (NDJSON):
{"timestamp": "2025-01-15T10:00:00Z", "event_type": "login", "user": "alice@example.com", "result": "success"} {"timestamp": "2025-01-15T10:05:00Z", "event_type": "file_access", "user": "bob@example.com", "file": "/data/sensitive.txt"} {"timestamp": "2025-01-15T10:10:00Z", "event_type": "logout", "user": "alice@example.com"}
Google SecOps-Feed für S3 konfigurieren
- 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.
custom-security-analytics-s3. - Wählen Sie Amazon S3 V2 als Quelltyp aus.
- Wählen Sie Custom Security Data Analytics als Log type (Protokolltyp) aus.
- Klicken Sie auf Weiter.
Geben Sie Werte für die folgenden Eingabeparameter an:
S3-URI: Der Bucket-URI im Format
s3://custom-security-analytics-logs/security-events/Option zum Löschen der Quelle: Wählen Sie die gewünschte Option zum Löschen aus:
- Nie: Es werden niemals Dateien nach Übertragungen gelöscht (empfohlen für Tests).
- Übertragene Dateien löschen: Löscht Dateien nach der erfolgreichen Übertragung.
- Übertragene Dateien und leere Verzeichnisse löschen: Dateien und leere Verzeichnisse werden nach der erfolgreichen Übertragung gelöscht.
Höchstalter von Dateien: Dateien einschließen, die in den letzten Tagen geändert wurden (Standardwert: 180 Tage).
Zugriffsschlüssel-ID: Geben Sie den Zugriffsschlüssel des IAM-Nutzers ein.
Geheimer Zugriffsschlüssel: Geben Sie den geheimen Schlüssel des IAM-Nutzers ein.
Asset-Namespace: Der Asset-Namespace.
Aufnahmelabels: Das Label, das auf die Ereignisse aus diesem Feed angewendet werden soll.
Klicken Sie auf Weiter.
Prüfen Sie die neue Feedkonfiguration auf dem Bildschirm Abschließen und klicken Sie dann auf Senden.
Option 3: Google Cloud Storage V2-Aufnahme (Batch-Export)
Verwenden Sie diese Methode, wenn Ihre benutzerdefinierte Sicherheitsanwendung Logs in einen Google Cloud Storage-Bucket exportieren kann.
GCS-Bucket erstellen
- Gehen Sie zur Google Cloud Console.
- Wählen Sie Ihr Projekt aus oder erstellen Sie ein neues.
- Rufen Sie im Navigationsmenü Cloud Storage > Buckets auf.
- Klicken Sie auf Bucket erstellen.
Geben Sie die folgenden Konfigurationsdetails an:
Einstellung Wert Bucket benennen Geben Sie einen global eindeutigen Namen ein, z. B. custom-security-analytics-logs.Standorttyp Wählen Sie je nach Bedarf aus (Region, Dual-Region, Multi-Region). Standort Wählen Sie den Speicherort aus, z. B. us-central1.Speicherklasse Standard (empfohlen für Logs, auf die häufig zugegriffen wird) Zugriffskontrolle Einheitlich (empfohlen) Schutzmaßnahmen Optional: Objektversionsverwaltung oder Aufbewahrungsrichtlinie aktivieren Klicken Sie auf Erstellen.
Anwendung für den Export nach GCS konfigurieren
Konfigurieren Sie Ihre benutzerdefinierte Sicherheitsanwendung so, dass Logdateien mit einer der folgenden Methoden in den GCS-Bucket geschrieben werden:
- Google Cloud SDK: Verwenden Sie
gsutiloder Clientbibliotheken. - Dienstkonto: Erstellen Sie ein Dienstkonto mit der Rolle „Storage-Objekt-Ersteller“.
Signierte URLs: Signierte URLs für temporären Schreibzugriff generieren
Beispiel mit gsutil:
gsutil cp /path/to/logs/events.json gs://custom-security-analytics-logs/security-events/Beispiel für die Verwendung der Python-Clientbibliothek:
from google.cloud import storage import json # Initialize client client = storage.Client() bucket = client.bucket('custom-security-analytics-logs') # Upload log file blob = bucket.blob('security-events/2025/01/15/events.json') # Write NDJSON data events = [ {"timestamp": "2025-01-15T10:00:00Z", "event_type": "login"}, {"timestamp": "2025-01-15T10:05:00Z", "event_type": "logout"} ] ndjson_data = '\n'.join([json.dumps(event) for event in events]) + '\n' blob.upload_from_string(ndjson_data, content_type='application/x-ndjson')
Google SecOps-Dienstkonto abrufen
- Rufen Sie die SIEM-Einstellungen > Feeds auf.
- Klicken Sie auf Neuen Feed hinzufügen.
- Klicken Sie auf Einzelnen Feed konfigurieren.
- Geben Sie im Feld Feedname einen Namen für den Feed ein, z. B.
custom-security-analytics-gcs. - Wählen Sie Google Cloud Storage V2 als Quelltyp aus.
- Wählen Sie Custom Security Data Analytics als Log type (Protokolltyp) aus.
- Klicken Sie auf Dienstkonto abrufen.
Es wird eine eindeutige E-Mail-Adresse für das Dienstkonto angezeigt, z. B.:
chronicle-12345678@chronicle-gcp-prod.iam.gserviceaccount.comKopieren Sie diese E-Mail-Adresse für den nächsten Schritt.
IAM-Berechtigungen gewähren
- Rufen Sie Cloud Storage > Buckets auf.
- Klicken Sie auf den Namen Ihres Buckets.
- Wechseln Sie zum Tab Berechtigungen.
- Klicken Sie auf Zugriff erlauben.
- Geben Sie die folgenden Konfigurationsdetails an:
- Hauptkonten hinzufügen: Fügen Sie die E‑Mail-Adresse des Google SecOps-Dienstkontos ein.
- Rollen zuweisen: Wählen Sie Storage-Objekt-Betrachter aus.
Klicken Sie auf Speichern.
Google SecOps-Feed für GCS konfigurieren
- Fahren Sie auf der Seite zum Erstellen von Feeds fort oder rufen Sie die SIEM-Einstellungen > Feeds > Neuen Feed hinzufügen auf.
- Klicken Sie auf Weiter.
Geben Sie Werte für die folgenden Eingabeparameter an:
Storage-Bucket-URL: Geben Sie den GCS-Bucket-URI mit dem Präfixpfad ein:
gs://custom-security-analytics-logs/security-events/Option zum Löschen der Quelle: Wählen Sie die gewünschte Option zum Löschen aus:
- Nie: Es werden niemals Dateien nach Übertragungen gelöscht (empfohlen für Tests).
- Übertragene Dateien löschen: Löscht Dateien nach der erfolgreichen Übertragung.
- Übertragene Dateien und leere Verzeichnisse löschen: Dateien und leere Verzeichnisse werden nach der erfolgreichen Übertragung gelöscht.
Höchstalter von Dateien: Dateien einschließen, die in den letzten Tagen geändert wurden (Standardwert: 180 Tage).
Asset-Namespace: Der Asset-Namespace.
Aufnahmelabels: Das Label, das auf die Ereignisse aus diesem Feed angewendet werden soll.
Klicken Sie auf Weiter.
Prüfen Sie die neue Feedkonfiguration auf dem Bildschirm Abschließen und klicken Sie dann auf Senden.
Option 4: Azure Blob Storage V2-Aufnahme (Batch-Export)
Verwenden Sie diese Methode, wenn Ihre benutzerdefinierte Sicherheitsanwendung Protokolle in Azure Blob Storage exportieren kann.
Azure Storage-Konto erstellen
- Suchen Sie im Azure-Portal nach Speicherkonten.
- Klicken Sie auf + Erstellen.
Geben Sie die folgenden Konfigurationsdetails an:
Einstellung Wert Abo Azure-Abo auswählen Ressourcengruppe Vorhandene auswählen oder neue erstellen Name des Speicherkontos Geben Sie einen eindeutigen Namen ein, z. B. customsecuritylogs.Region Wählen Sie die Region aus (z. B. East US).Leistung Standard (empfohlen) Redundanz GRS (georedundanter Speicher) oder LRS (lokal redundanter Speicher) Klicken Sie auf Überprüfen + Erstellen.
Sehen Sie sich die Übersicht des Kontos an und klicken Sie auf Erstellen.
Warten Sie, bis die Bereitstellung abgeschlossen ist.
Anmeldedaten für das Speicherkonto abrufen
- Rufen Sie das soeben erstellte Storage-Konto auf.
- Wählen Sie im linken Navigationsbereich unter Sicherheit + Netzwerk die Option Zugriffsschlüssel aus.
- Klicken Sie auf Schlüssel anzeigen.
- Kopieren und speichern Sie die folgenden Informationen für die spätere Verwendung:
- Name des Speicherkontos:
customsecuritylogs - Schlüssel 1 oder Schlüssel 2: Der gemeinsame Zugriffsschlüssel
- Name des Speicherkontos:
Blob-Container erstellen
- Wählen Sie im selben Speicherkonto in der linken Navigationsleiste Container aus.
- Klicken Sie auf + Container.
- Geben Sie die folgenden Konfigurationsdetails an:
- Name: Geben Sie einen Containernamen ein, z. B.
security-events. - Öffentliche Zugriffsebene: Wählen Sie Privat (kein anonymer Zugriff) aus.
- Name: Geben Sie einen Containernamen ein, z. B.
- Klicken Sie auf Erstellen.
Anwendung für den Export nach Azure Blob konfigurieren
Konfigurieren Sie Ihre benutzerdefinierte Sicherheitsanwendung so, dass Logdateien mit einer der folgenden Methoden in den Azure Blob-Container geschrieben werden:
- Azure-Befehlszeile: Verwenden Sie
az storage blob upload. - Azure SDK: Clientbibliotheken für Ihre Programmiersprache verwenden
- AzCopy: Verwenden Sie das Befehlszeilentool AzCopy.
Beispiele:
Beispiel mit der Azure-Befehlszeile:
az storage blob upload \ --account-name customsecuritylogs \ --container-name security-events \ --name logs/2025/01/15/events.json \ --file /path/to/events.json \ --account-key <YOUR_ACCESS_KEY>Beispiel mit dem Python SDK:
from azure.storage.blob import BlobServiceClient import json # Initialize client connection_string = "DefaultEndpointsProtocol=https;AccountName=customsecuritylogs;AccountKey=<YOUR_KEY>;EndpointSuffix=core.windows.net" blob_service_client = BlobServiceClient.from_connection_string(connection_string) # Get container client container_client = blob_service_client.get_container_client("security-events") # Upload log file blob_client = container_client.get_blob_client("logs/2025/01/15/events.json") # Write NDJSON data events = [ {"timestamp": "2025-01-15T10:00:00Z", "event_type": "login"}, {"timestamp": "2025-01-15T10:05:00Z", "event_type": "logout"} ] ndjson_data = '\n'.join([json.dumps(event) for event in events]) + '\n' blob_client.upload_blob(ndjson_data, overwrite=True)
Google SecOps-Feed für Azure Blob konfigurieren
- 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.
custom-security-analytics-azure. - Wählen Sie Microsoft Azure Blob Storage V2 als Quelltyp aus.
- Wählen Sie Custom Security Data Analytics als Log type (Protokolltyp) aus.
- Klicken Sie auf Weiter.
Geben Sie Werte für die folgenden Eingabeparameter an:
Azure-URI: Geben Sie die Blob Service-Endpunkt-URL mit dem Containerpfad ein:
https://customsecuritylogs.blob.core.windows.net/security-events/Option zum Löschen der Quelle: Wählen Sie die gewünschte Option zum Löschen aus:
- Nie: Löscht nach Übertragungen niemals Dateien.
- Übertragene Dateien löschen: Löscht Dateien nach der erfolgreichen Übertragung.
- Übertragene Dateien und leere Verzeichnisse löschen: Dateien und leere Verzeichnisse werden nach der erfolgreichen Übertragung gelöscht.
Höchstalter von Dateien: Dateien einschließen, die in den letzten Tagen geändert wurden (Standardwert: 180 Tage).
Shared key (Gemeinsamer Schlüssel): Geben Sie den Wert des gemeinsamen Schlüssels (Zugriffsschlüssel) aus dem Speicherkonto ein.
Asset-Namespace: Der Asset-Namespace.
Aufnahmelabels: Das Label, das auf die Ereignisse aus diesem Feed angewendet werden soll.
Klicken Sie auf Weiter.
Prüfen Sie die neue Feedkonfiguration auf dem Bildschirm Abschließen und klicken Sie dann auf Senden.
Option 5: Amazon Data Firehose-Aufnahme (Echtzeit-Streaming)
Verwenden Sie diese Methode, wenn Ihre benutzerdefinierte Sicherheitsanwendung Logs in Amazon CloudWatch Logs schreibt und Sie Echtzeit-Streaming zu Google SecOps benötigen.
Google SecOps Firehose-Feed erstellen
- Rufen Sie die SIEM-Einstellungen > Feeds auf.
- Klicken Sie auf Neuen Feed hinzufügen.
- Geben Sie im Feld Feedname einen Namen für den Feed ein, z. B.
custom-security-analytics-firehose. - Wählen Sie Amazon Data Firehose als Quelltyp aus.
- Wählen Sie Custom Security Data Analytics als Log type (Protokolltyp) aus.
- Klicken Sie auf Weiter.
- Geben Sie Werte für die folgenden Eingabeparameter an:
- Trennzeichen für Aufteilung: Optional: Geben Sie
\nein, um durch Zeilenumbrüche getrennte Protokolle aufzuteilen. - Asset-Namespace: Der Asset-Namespace.
- Aufnahmelabels: Das Label, das auf die Ereignisse aus diesem Feed angewendet werden soll.
- Trennzeichen für Aufteilung: Optional: Geben Sie
- Klicken Sie auf Weiter.
- Prüfen Sie die Feedkonfiguration und klicken Sie auf 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, da Sie ihn nicht noch einmal aufrufen können.
- Wechseln Sie zum Tab Details.
- Kopieren Sie die Feed-Endpunkt-URL aus dem Feld Endpoint Information (Endpunktinformationen).
- Klicken Sie auf Fertig.
Google Cloud API-Schlüssel erstellen
- Rufen Sie in der Google Cloud Console die Seite Anmeldedaten unter https://console.cloud.google.com/apis/credentials auf.
- Klicken Sie auf Anmeldedaten erstellen und wählen Sie anschließend API-Schlüssel aus.
- Klicken Sie auf API-Schlüssel bearbeiten, um den Schlüssel einzuschränken.
- Wählen Sie unter API-Einschränkungen die Option Schlüssel einschränken aus.
- Suchen Sie nach Google SecOps API und wählen Sie die Option aus.
- Klicken Sie auf Speichern.
- Kopieren und speichern Sie den API-Schlüssel.
Endpunkt-URL erstellen
Hängen Sie den API-Schlüssel an die URL des Feed-Endpunkts an. Verwenden Sie dazu das folgende Format:
<FEED_ENDPOINT_URL>?key=<API_KEY>Beispiel:
https://malachiteingestion-pa.googleapis.com/v2/unstructuredlogentries:batchCreate?key=AIzaSyD...Speichern Sie diese vollständige URL für den nächsten Schritt.
IAM-Richtlinie für Firehose erstellen
- Rufen Sie in der AWS Console IAM > Richtlinien > Richtlinie erstellen > Tab „JSON“ auf.
Fügen Sie den folgenden JSON-Code für die Richtlinie ein:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "firehose:PutRecord", "firehose:PutRecordBatch" ], "Resource": "arn:aws:firehose:<REGION>:<ACCOUNT_ID>:deliverystream/CustomSecurityToChronicle" } ] }Ersetzen Sie Folgendes:
<REGION>: Ihre AWS-Region, z. B.us-east-1.<ACCOUNT_ID>: Ihre AWS-Konto-ID (12-stellige Nummer).
Nennen Sie die Richtlinie
CloudWatchLogsToFirehosePolicy.Klicken Sie auf Richtlinie erstellen.
IAM-Rolle für CloudWatch Logs erstellen
- Klicken Sie auf IAM > Rollen > Rolle erstellen.
Wählen Sie Benutzerdefinierte Vertrauensrichtlinie aus und fügen Sie Folgendes ein:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "logs.<REGION>.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }Ersetzen Sie
<REGION>durch Ihre AWS-Region.Klicken Sie auf Weiter.
Suchen Sie nach der Richtlinie
CloudWatchLogsToFirehosePolicy, die Sie im vorherigen Schritt erstellt haben, und wählen Sie sie aus.Klicken Sie auf Weiter.
Geben Sie der Rolle den Namen
CloudWatchLogsToFirehoseRole.Klicken Sie auf Rolle erstellen.
Kinesis Data Firehose-Bereitstellungsstream erstellen
- Rufen Sie in der AWS Console Kinesis > Data Firehose > Create delivery stream auf.
Geben Sie die folgenden Konfigurationsdetails an:
Quelle und Ziel:
- Quelle: Wählen Sie Direkter PUT oder andere Quellen aus.
- Ziel: Wählen Sie HTTP-Endpunkt aus.
Name des Bereitstellungsstreams:
- Name des Bereitstellungsstreams: Geben Sie
CustomSecurityToChronicleein.
- Name des Bereitstellungsstreams: Geben Sie
HTTP-Endpunktziel:
- HTTP-Endpunkt-URL: Geben Sie die vollständige Endpunkt-URL ein, die Sie zuvor erstellt haben (Feed-Endpunkt + API-Schlüssel).
- Contentcodierung: Wählen Sie GZIP aus (empfohlen, um Bandbreite zu sparen).
Benutzerdefinierte HTTP-Header:
- Klicken Sie auf Benutzerdefinierten HTTP-Header hinzufügen.
- Headername: Geben Sie
X-Goog-Chronicle-Authein. - Header value: Geben Sie den geheimen Schlüssel ein, den Sie in einem vorherigen Schritt gespeichert haben.
Sicherungseinstellungen:
- Sicherung von Quelldatensätzen in Amazon S3: Wählen Sie Nur fehlgeschlagene Daten aus (empfohlen).
- S3-Bucket: Wählen Sie einen vorhandenen Bucket aus oder erstellen Sie einen neuen für fehlgeschlagene Datensätze.
Pufferhinweise:
- Puffergröße: Geben Sie
1MiB ein (Mindestwert für HTTP-Endpunkte). - Pufferintervall: Geben Sie
60Sekunden ein.
- Puffergröße: Geben Sie
Wiederholungszeitraum:
- Wiederholungsdauer: Geben Sie
300Sekunden (5 Minuten) ein.
- Wiederholungsdauer: Geben Sie
Klicken Sie auf Lieferstream erstellen.
Warten Sie, bis sich der Status des Bereitstellungsstreams in Aktiv ändert (1–2 Minuten).
CloudWatch-Loggruppe für Firehose abonnieren
- Rufen Sie in der AWS Console CloudWatch > Logs > Log groups auf.
- Wählen Sie die Zielloggruppe aus, die Ihre benutzerdefinierten Security Analytics-Logs enthält.
- Klicken Sie auf den Tab Abo-Filter.
- Klicken Sie auf Erstellen > Amazon Kinesis Data Firehose-Abo-Filter erstellen.
- Geben Sie die folgenden Konfigurationsdetails an:
- Ziel: Wählen Sie den Auslieferungsstream
CustomSecurityToChronicleaus. - Berechtigung erteilen: Wählen Sie die Rolle
CloudWatchLogsToFirehoseRoleaus. - Name des Abo-Filters: Geben Sie
CustomSecurityToChronicleein. - Log format (Logformat): Wählen Sie Other (Sonstige) aus. Das Parsing wird von Google SecOps übernommen.
- Abonnementfiltermuster: Lassen Sie das Feld leer, um alle Ereignisse zu senden, oder geben Sie ein Filtermuster ein, um nur bestimmte Ereignisse zu senden.
- Ziel: Wählen Sie den Auslieferungsstream
- Klicken Sie auf Streaming starten.
- Logs werden jetzt in Echtzeit über Firehose an Google SecOps gestreamt.
Benutzerdefinierten Parser erstellen (optional)
Nachdem Sie benutzerdefinierte Sicherheitsdaten als unstrukturierte Logs aufgenommen haben, können Sie einen benutzerdefinierten Parser erstellen, um die Daten für eine bessere Suche und Erkennung in das UDM-Format zu normalisieren.
Wann sollte ein benutzerdefinierter Parser erstellt werden?
Erstellen Sie einen benutzerdefinierten Parser, wenn:
- Sie müssen bestimmte Felder aus Ihrem benutzerdefinierten Logformat extrahieren.
- Sie möchten die UDM-Suche für Ihre benutzerdefinierten Daten aktivieren.
- Benutzerdefinierte Felder müssen Standard-UDM-Feldern für Erkennungsregeln zugeordnet werden
- Sie möchten die Suchleistung verbessern, indem Sie bestimmte Felder indexieren.
Benutzerdefinierten Logtyp erstellen
- Rufen Sie die SIEM-Einstellungen > Verfügbare Log-Typen auf.
- Klicken Sie auf Log-Typ anfordern.
- Wählen Sie im Bereich Benutzerdefinierten Logtyp erstellen oder vordefinierten Logtyp anfordern die Option Benutzerdefinierten Logtyp erstellen aus.
- Geben Sie die folgenden Informationen an:
- Name des Logtyps: Geben Sie einen aussagekräftigen Namen ein, z. B.
CUSTOM_SECURITY_ANALYTICS. - Beschreibung: Geben Sie eine Beschreibung des Log-Typs ein.
- Beispiellogs: Fügen Sie 5–10 Beispiellogeinträge im Rohformat ein.
- Name des Logtyps: Geben Sie einen aussagekräftigen Namen ein, z. B.
- Klicken Sie auf Senden.
- Der benutzerdefinierte Logtyp ist in etwa 10 Minuten verfügbar.
Benutzerdefinierten Parser erstellen
- Rufen Sie die SIEM-Einstellungen > Parser auf.
- Klicken Sie auf Parser erstellen.
- Wählen Sie Benutzerdefinierter Parser aus.
- Geben Sie die folgenden Informationen an:
- Parsername: Geben Sie einen aussagekräftigen Namen ein.
- Logtyp: Wählen Sie Ihren benutzerdefinierten Logtyp aus, z. B.
CUSTOM_SECURITY_ANALYTICS. - Parsercode: Geben Sie Ihre Parserkonfiguration in der Parserkonfigurationssprache von Google SecOps ein.
- Parser mit Beispiellogs testen
- Klicken Sie auf Senden, um den Parser zu aktivieren.
Beispiel für die Parserkonfiguration
Für ein benutzerdefiniertes JSON-Logformat:
{ "timestamp": "2025-01-15T10:30:00Z", "event_type": "authentication", "user": "john.doe@example.com", "action": "login", "result": "success", "source_ip": "203.0.113.45" }Beispiel für die Parserkonfiguration:
filter { json { fields { timestamp: timestamp event_type: event_type user: user action: action result: result source_ip: source_ip } } } event { $e.metadata.event_timestamp.seconds = parseTimestamp(timestamp, "yyyy-MM-dd'T'HH:mm:ss'Z'") $e.metadata.event_type = "USER_LOGIN" $e.principal.user.email_addresses = user $e.target.ip = source_ip $e.security_result.action = if(result == "success", "ALLOW", "BLOCK") }Weitere Informationen zum Erstellen benutzerdefinierter Parser finden Sie unter Vorgefertigte und benutzerdefinierte Parser verwalten.
Datenaufnahme prüfen
Nachdem Sie Ihren Feed konfiguriert haben, müssen Sie prüfen, ob die Daten richtig aufgenommen werden.
Feedstatus prüfen
- Rufen Sie die SIEM-Einstellungen > Feeds auf.
- Suchen Sie den Feed in der Liste.
- Prüfen Sie die Spalte Status:
- Aktiv: Der Feed wird ausgeführt und Daten werden aufgenommen.
- Fehler: Im Feed ist ein Fehler aufgetreten (klicken Sie hier, um Details aufzurufen)
- Pausiert: Der Feed ist pausiert.
Nach aufgenommenen Logs suchen
- Klicken Sie auf Suche > Rohprotokollscan.
Geben Sie eine Suchanfrage ein, um Ihre benutzerdefinierten Logs zu finden:
metadata.log_type = "CUSTOM_SECURITY_DATA_ANALYTICS"Passen Sie den Zeitraum bei Bedarf an.
Klicken Sie auf Suchen.
Prüfen Sie, ob Ihre Logs in den Ergebnissen angezeigt werden.
Feedmesswerte im Blick behalten
- Rufen Sie die SIEM-Einstellungen > Feeds auf.
- Klicken Sie auf den Namen Ihres Feeds.
- Rufen Sie den Tab Messwerte auf.
- Sehen Sie sich die folgenden Messwerte an:
- Aufgenommene Ereignisse: Gesamtzahl der aufgenommenen Ereignisse
- Aufgenommene Byte: Das insgesamt aufgenommene Datenvolumen.
- Aufnahmerate: Ereignisse pro Sekunde
- Fehler: Anzahl der Aufnahmefehler
Fehlerbehebung
Probleme beim Erfassen von Webhooks
Problem: HTTP 401 Unauthorized
- Ursache: Ungültiger API-Schlüssel oder Secret-Schlüssel
- Lösung: Prüfen Sie, ob der API-Schlüssel und der geheime Schlüssel korrekt sind und nicht abgelaufen sind.
Problem: HTTP 403 Forbidden
- Ursache: Der API-Schlüssel hat keine Chronicle API-Berechtigungen.
- Lösung: Bearbeiten Sie den API-Schlüssel und achten Sie darauf, dass unter „API-Einschränkungen“ die Option Chronicle API ausgewählt ist.
Problem: HTTP 400 Bad Request
- Ursache: Ungültiges Anfrageformat oder ungültige Nutzlast
- Lösung: Prüfen Sie, ob der Content-Type-Header auf
application/jsongesetzt ist und die Nutzlast gültiges JSON enthält.
Probleme bei der Aufnahme von Daten aus S3/GCS/Azure Blob
Problem: Keine Daten aufgenommen
- Ursache: Falscher Bucket-URI oder fehlende Berechtigungen
- Lösung: Prüfen Sie, ob die Bucket-URI den abschließenden Schrägstrich enthält und das Dienstkonto die Rolle „Storage-Objekt-Betrachter“ hat.
Problem: Dateien werden nach der Aufnahme nicht gelöscht
- Ursache: Das Dienstkonto hat keine Löschberechtigungen.
- Lösung: Weisen Sie die Rolle „Storage-Objekt-Administrator“ anstelle von „Storage-Objekt-Betrachter“ zu.
Problem: Alte Dateien werden nicht aufgenommen
- Ursache: Alte Dateien werden durch die Einstellung „Maximales Dateialter“ ausgeschlossen.
- Lösung: Erhöhen Sie den Wert für „Maximales Dateialter“ in der Feedkonfiguration.
Probleme bei der Firehose-Aufnahme
Problem: Im Zustellungsstream werden Fehler angezeigt
- Ursache: Ungültige Endpunkt-URL oder Authentifizierung
- Lösung: Prüfen Sie, ob die Endpunkt-URL den API-Schlüsselparameter enthält und der X-Goog-Chronicle-Auth-Header den richtigen geheimen Schlüssel enthält.
Problem: Hoher Messwert für Datenaktualität
- Ursache: Firehose wird gedrosselt oder es treten Zustellungsfehler auf.
- Lösung: CloudWatch-Messwerte für die
ThrottledRecords- undDeliveryToHTTP.Success-Rate prüfen
Problem: Keine Logs werden von CloudWatch gestreamt
- Ursache: Abonnementfilter nicht konfiguriert oder IAM-Rolle mit fehlenden Berechtigungen
- Lösung: Prüfen Sie, ob der Abo-Filter aktiv ist und die IAM-Rolle über
firehose:PutRecord-Berechtigungen verfügt.
UDM-Zuordnungstabelle
Benutzerdefinierte Protokolle für die Analyse von Sicherheitsdaten werden als unstrukturierte Daten aufgenommen. Wenn Sie die UDM-Feldzuordnung aktivieren möchten, erstellen Sie einen benutzerdefinierten Parser, wie oben im Abschnitt „Benutzerdefinierten Parser erstellen“ beschrieben.
Nachdem Sie einen benutzerdefinierten Parser erstellt haben, werden UDM-Felder basierend auf Ihrer Parserkonfiguration ausgefüllt. Häufig verwendete UDM-Felder für Sicherheitsanalysedaten:
| UDM-Feld | Beschreibung |
|---|---|
metadata.event_timestamp |
Zeitstempel des Ereignisses |
metadata.event_type |
Ereignistyp (z. B. USER_LOGIN, FILE_ACCESS) |
principal.user.email_addresses |
E-Mail-Adresse des Nutzers |
principal.ip |
Quell-IP-Adresse |
target.resource.name |
Name der Zielressource |
security_result.action |
Sicherheitsaktion (ALLOW, BLOCK usw.) |
security_result.severity |
Schweregrad des Ereignisses |
Eine vollständige Liste der UDM-Felder finden Sie in der UDM-Feldreferenz.
Benötigen Sie weitere Hilfe? Antworten von Community-Mitgliedern und Google SecOps-Experten erhalten