Fivetran-Logs erfassen
In diesem Dokument wird beschrieben, wie Sie Fivetran so konfigurieren, dass Logs mithilfe von Webhooks an Google Security Operations gesendet werden.
Fivetran ist eine Datenintegrationsplattform, mit der Datenpipelines aus verschiedenen Quellen in Data Warehouses automatisiert werden. Fivetran generiert Betriebsereignisse, darunter Connector-Synchronisierungsereignisse, Transformationsereignisse und Änderungen des Verbindungsstatus. Diese Ereignisse können über ausgehende Webhooks an externe Endpunkte gesendet werden, um sie zu überwachen, Warnungen zu generieren und Sicherheitsanalysen durchzuführen.
Hinweise
Folgende Voraussetzungen müssen erfüllt sein:
- Eine Google SecOps-Instanz
- Ein Fivetran-Konto mit Administrator- oder Kontoberechtigungen
- Zugriff auf die Google Cloud Console (zum Erstellen von API-Schlüsseln)
- Fivetran-Konto mit Business Critical- oder Enterprise-Abo (für Webhook-Funktion)
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.
Fivetran Events. - Wählen Sie Webhook als Quelltyp aus.
- Wählen Sie Fivetran als Logtyp aus.
- Klicken Sie auf Weiter.
- Geben Sie Werte für die folgenden Eingabeparameter an:
- Trennzeichen für Aufteilung (optional): Lassen Sie das Feld leer. Jede Webhook-Anfrage enthält ein einzelnes JSON-Ereignis.
- Asset-Namespace: Der Asset-Namespace
- Labels für Datenaufnahme: 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.
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 Geheimen Schlüssel 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 Google SecOps-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.
Google SecOps 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 in der Liste APIs auswählen nach Google SecOps API (oder Chronicle API) und wählen Sie die API 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.
Fivetran-Webhook konfigurieren
Webhook-URL erstellen
Kombinieren Sie die Google SecOps-Endpunkt-URL und den API-Schlüssel:
<ENDPOINT_URL>?key=<API_KEY>Beispiel:
https://malachiteingestion-pa.googleapis.com/v2/unstructuredlogentries:batchCreate?key=AIzaSyD...
Webhook mit der Fivetran REST API erstellen
Fivetran-Webhooks werden über die REST API konfiguriert. Sie können Webhooks auf Kontoebene (alle Gruppen) oder auf Gruppenebene (bestimmte Zielgruppe) erstellen.
Fivetran API-Anmeldedaten abrufen
- Melden Sie sich in Ihrem Fivetran-Konto an.
- Klicken Sie rechts oben auf Ihren Nutzernamen.
- Rufen Sie die Kontoeinstellungen > API-Konfiguration auf.
- Wenn Sie keinen API-Schlüssel haben, gehen Sie so vor:
- Klicken Sie auf API-Schlüssel generieren.
- Kopieren und speichern Sie den API-Schlüssel und das API-Secret sicher.
Webhook auf Kontoebene erstellen
Mit dieser Methode können Sie Ereignisse von allen Connectors in allen Gruppen in Ihrem Konto empfangen.
- Öffnen Sie ein Terminal oder einen API-Client.
Erstellen Sie den Webhook mit dem folgenden curl-Befehl:
curl -X POST https://api.fivetran.com/v1/webhooks/account \ -u "API_KEY:API_SECRET" \ -H "Content-Type: application/json" \ -H "Accept: application/json" \ -d '{ "url": "https://malachiteingestion-pa.googleapis.com/v2/unstructuredlogentries:batchCreate?key=YOUR_SECOPS_API_KEY", "events": [ "sync_start", "sync_end", "transformation_start", "transformation_succeeded", "transformation_failed", "connection_successful", "connection_failure", "create_connector", "pause_connector", "resume_connector", "edit_connector", "delete_connector", "force_update_connector", "resync_connector", "resync_table" ], "active": true, "secret": "YOUR_SECOPS_SECRET_KEY" }'Ersetzen Sie die folgenden Werte:
API_KEY: Ihr Fivetran-API-SchlüsselAPI_SECRET: Ihr Fivetran-API-SecretYOUR_SECOPS_API_KEY: Der zuvor erstellte Google Cloud API-SchlüsselYOUR_SECOPS_SECRET_KEY: Der geheime Google SecOps-Schlüssel aus der Feederstellung
Die Antwort enthält die Webhook-ID:
{ "code": "Success", "message": "Operation performed.", "data": { "id": "webhook_abc123", "type": "account", "url": "https://malachiteingestion-pa.googleapis.com/...", "events": ["sync_start", "sync_end", ...], "active": true, "secret": "******", "created_at": "2025-01-15T10:30:00Z", "created_by": "user_id" } }Speichern Sie die Webhook-ID zur späteren Verwendung.
Webhook auf Gruppenebene erstellen (optional)
Mit dieser Methode können Sie Ereignisse von Connectors in einer bestimmten Zielgruppe empfangen.
So rufen Sie Ihre Gruppen-ID ab:
- Melden Sie sich in Fivetran an.
- Rufen Sie die Zielgruppe auf, die Sie beobachten möchten.
- Die Gruppen-ID ist in der URL enthalten:
https://fivetran.com/dashboard/groups/GROUP_ID
Erstellen Sie den Webhook mit dem folgenden curl-Befehl:
curl -X POST https://api.fivetran.com/v1/webhooks/group/GROUP_ID \ -u "API_KEY:API_SECRET" \ -H "Content-Type: application/json" \ -H "Accept: application/json" \ -d '{ "url": "https://malachiteingestion-pa.googleapis.com/v2/unstructuredlogentries:batchCreate?key=YOUR_SECOPS_API_KEY", "events": [ "sync_start", "sync_end", "transformation_start", "transformation_succeeded", "transformation_failed", "connection_successful", "connection_failure" ], "active": true, "secret": "YOUR_SECOPS_SECRET_KEY" }'Ersetzen Sie
GROUP_IDdurch die ID Ihrer Zielgruppe.
Verfügbare Webhook-Ereignisse
Wählen Sie die Ereignisse aus, die Sie beobachten möchten:
| Ereignis | Beschreibung |
|---|---|
sync_start |
Connector-Synchronisierung gestartet |
sync_end |
Synchronisierung des Connectors abgeschlossen |
transformation_start |
Transformation gestartet |
transformation_succeeded |
Transformation abgeschlossen |
transformation_failed |
Transformation fehlgeschlagen |
connection_successful |
Verbindungstest erfolgreich |
connection_failure |
Verbindungstest fehlgeschlagen |
create_connector |
Neuer Connector erstellt |
pause_connector |
Connector pausiert |
resume_connector |
Connector wurde fortgesetzt |
edit_connector |
Connector-Konfiguration bearbeitet |
delete_connector |
Connector gelöscht |
force_update_connector |
Connector-Update erzwungen |
resync_connector |
Connector-Resynchronisierung ausgelöst |
resync_table |
Tabellensynchronisierung ausgelöst |
Webhook testen
Webhook mit der Fivetran API testen:
curl -X POST https://api.fivetran.com/v1/webhooks/WEBHOOK_ID/test \ -u "API_KEY:API_SECRET" \ -H "Accept: application/json"Ersetzen Sie
WEBHOOK_IDdurch die Webhook-ID aus der Antwort auf die Erstellung.Fivetran sendet ein Test-Event an Google SecOps.
Ereignis in Google SecOps überprüfen:
- Rufen Sie die SIEM-Einstellungen > Feeds auf.
- Klicken Sie auf Ihren Fivetran-Feed.
- Rufen Sie den Tab Logs auf.
- Prüfen Sie, ob ein Testlauf empfangen wurde.
Format der Webhook-Nutzlast
Fivetran sendet Webhook-Ereignisse im folgenden JSON-Format:
{ "event": "sync_end", "created": "2025-01-15T10:30:00.386Z", "connector_type": "salesforce", "connector_id": "mystified_presiding", "connector_name": "Salesforce Production", "sync_id": "abc123-def456-ghi789", "destination_group_id": "deck_enjoy", "data": { "status": "SUCCESSFUL" } }
Webhook-Authentifizierung
Fivetran signiert Webhook-Nutzlasten mit HMAC SHA-256 und dem von Ihnen angegebenen Secret. Die Signatur wird im X-Fivetran-Signature-256-Header gesendet.
Google SecOps validiert die Signatur automatisch mit dem Secret-Schlüssel, der bei der Feed-Erstellung konfiguriert wurde.
Wiederholungsverhalten bei Webhooks
Fivetran wiederholt fehlgeschlagene Webhooks automatisch:
| Wiederholen | Zeit nach dem ersten Versuch |
|---|---|
| Erster Versuch | 0 Minuten |
| 1. Wiederholungsversuch | 6 Minuten |
| 2. Wiederholungsversuch | 27 Minuten |
| 3. Wiederholungsversuch | 1 Stunde und 45 Minuten |
| 4. Wiederholungsversuch | 6 Stunden, 25 Minuten |
| 5. Wiederholungsversuch | 23 Stunden, 13 Minuten |
- Fivetran versucht es bis zu 24 Stunden lang noch einmal.
- Webhooks haben ein Zeitlimit von 10 Sekunden.
- Webhooks werden nach drei Tagen mit durchgehenden Fehlern automatisch deaktiviert.
Webhooks verwalten
Alle Webhooks auflisten
bash curl -X GET https://api.fivetran.com/v1/webhooks \ -u "API_KEY:API_SECRET" \ -H "Accept: application/json"
Webhook-Details abrufen
bash curl -X GET https://api.fivetran.com/v1/webhooks/WEBHOOK_ID \ -u "API_KEY:API_SECRET" \ -H "Accept: application/json"
Webhook aktualisieren
bash curl -X PATCH https://api.fivetran.com/v1/webhooks/WEBHOOK_ID \ -u "API_KEY:API_SECRET" \ -H "Content-Type: application/json" \ -H "Accept: application/json" \ -d '{ "active": true, "events": ["sync_start", "sync_end"] }'
Webhook löschen
bash curl -X DELETE https://api.fivetran.com/v1/webhooks/WEBHOOK_ID \ -u "API_KEY:API_SECRET" \ -H "Accept: application/json"
Referenz zu Authentifizierungsmethoden
Google SecOps-Webhook-Feeds unterstützen mehrere Authentifizierungsmethoden. Wählen Sie die Methode aus, die von Ihrem Anbieter unterstützt wird.
Methode 1: Suchparameter (für Fivetran empfohlen)
Fivetran unterstützt keine benutzerdefinierten HTTP-Headern für ausgehende Webhooks. Verwenden Sie Abfrageparameter, um Anmeldedaten zu übergeben.
URL-Format:
<ENDPOINT_URL>?key=<API_KEY>Beispiel:
https://malachiteingestion-pa.googleapis.com/v2/unstructuredlogentries:batchCreate?key=AIzaSyD...Authentifizierung:
- API-Schlüssel im URL-Suchparameter
- Geheimer Schlüssel, der über die HMAC-Signatur im
X-Fivetran-Signature-256-Header validiert wird
Methode 2: Benutzerdefinierte Header (wird von Fivetran nicht unterstützt)
Benutzerdefinierte HTTP-Header werden für ausgehende Fivetran-Webhooks nicht unterstützt. Verwenden Sie stattdessen Methode 1.
Webhook-Limits und Best Practices
Anfragelimits
| Limit | Wert |
|---|---|
| Maximale Anfragengröße | 4 MB |
| Maximale Anzahl von Abfragen pro Sekunde | 15.000 |
| Zeitlimit für Anfragen | 10 Sekunden (Fivetran) / 30 Sekunden (Google SecOps) |
| Wiederholungsverhalten | Automatisch mit exponentiellem Backoff |
Best Practices
- Abonnieren Sie nur die Ereignisse, die Sie benötigen, um HTTP-Anfragen zu minimieren.
- Überwachen Sie den Status der Webhook-Übermittlung im Fivetran-Dashboard.
- Benachrichtigungen für die Deaktivierung von Webhooks einrichten
- Webhooks auf Kontoebene für das zentralisierte Monitoring verwenden
- Verwenden Sie Webhooks auf Gruppenebene für das Monitoring bestimmter Ziele.
- Überprüfen und aktualisieren Sie Ereignisabos regelmäßig.
Fehlerbehebung
Webhook-Erstellung schlägt fehl
Fehler:HTTP 400 Bad Request beim Erstellen des Webhooks.
Ursache:Der Google SecOps-Endpunkt ist nicht erreichbar oder gibt einen Status zurück, der nicht mit „2xx“ beginnt.
Lösung:
- Prüfen Sie, ob die Google SecOps-Endpunkt-URL korrekt ist.
- Prüfen Sie, ob der API-Schlüssel gültig ist und Zugriff auf die Google SecOps API hat.
Testen Sie den Endpunkt manuell:
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 '{"test": "event"}'Erstellen Sie den Webhook mit
"active": false, um die erste Validierung zu überspringen, und aktivieren Sie ihn später.
Webhook ist deaktiviert
Ursache:Der Webhook ist seit mehr als drei Tagen immer wieder fehlgeschlagen.
Lösung:
- Prüfen Sie, ob der Google SecOps-Feed aktiv und fehlerfrei ist.
- Prüfen Sie die Google SecOps-Feedlogs auf Fehler.
- Prüfen Sie, ob API-Schlüssel und Secret-Schlüssel noch gültig sind.
Aktivieren Sie den Webhook wieder:
curl -X PATCH https://api.fivetran.com/v1/webhooks/WEBHOOK_ID \ -u "API_KEY:API_SECRET" \ -H "Content-Type: application/json" \ -d '{"active": true}'
Ereignisse werden nicht in Google SecOps angezeigt
Ursache:Ereignisse werden gesendet, aber nicht aufgenommen.
Lösung:
- Rufen Sie in Google SecOps die SIEM-Einstellungen > Feeds auf.
- Klicken Sie auf Ihren Fivetran-Feed.
- Rufen Sie den Tab Logs auf.
- Auf Aufnahmefehler prüfen
- Prüfen Sie, ob der Protokolltyp auf Fivetran festgelegt ist.
- Prüfen Sie, ob der geheime Schlüssel mit dem im Webhook konfigurierten Schlüssel übereinstimmt.
HMAC-Signaturprüfung fehlgeschlagen
Ursache: Der geheime Schlüssel stimmt nicht überein.
Lösung:
- Prüfen Sie, ob der geheime Schlüssel im Google SecOps-Feed mit dem beim Erstellen des Webhooks verwendeten Schlüssel übereinstimmt.
- Generieren Sie den Google SecOps-Secret-Schlüssel bei Bedarf neu.
Aktualisieren Sie den Fivetran-Webhook mit dem neuen Secret:
curl -X PATCH https://api.fivetran.com/v1/webhooks/WEBHOOK_ID \ -u "API_KEY:API_SECRET" \ -H "Content-Type: application/json" \ -d '{"secret": "NEW_SECOPS_SECRET_KEY"}'
UDM-Zuordnungstabelle
| Logfeld | UDM-Zuordnung | Logik |
|---|---|---|
| jsonPayload.connector_id | additional.connector_id | Wert direkt kopiert |
| jsonPayload.connector_type | additional.connector_type | Wert direkt kopiert |
| jsonPayload.data.executionTime | additional.executionTime | In String umgewandelt |
| insertId | additional.insertId | Wert kopiert, wenn er nicht leer ist |
| labels.levelName | additional.levelName | Wert kopiert, wenn er nicht leer ist |
| labels.levelValue | additional.levelValue | Wert kopiert, wenn er nicht leer ist |
| jsonPayload.data.number | additional.number | In String umgewandelt |
| jsonPayload.data.query | additional.query | Wert direkt kopiert |
| resource.type | additional.type | Wert kopiert, wenn er nicht leer ist |
| metadata.event_type | Auf „RESOURCE_READ“ festgelegt, wenn has_principal_user == „true“ und has_target == „true“. Andernfalls „USER_COMMUNICATION“, wenn has_principal_user == „true“. Andernfalls „STATUS_UPDATE“, wenn has_principal == „true“. Andernfalls „GENERIC_EVENT“. | |
| jsonPayload.event | metadata.product_event_type | Wert direkt kopiert |
| jsonPayload.sync_id | metadata.product_log_id | Wert direkt kopiert |
| jsonPayload.connector_name | principal.asset.hostname | Wert direkt kopiert |
| jsonPayload.connector_name | principal.hostname | Wert direkt kopiert |
| resource.labels.email_id | principal.user.email_addresses | Wird zusammengeführt, wenn „^.+@.+$“ übereinstimmt. |
| resource.labels.project_id | principal.user.product_object_id | Wert kopiert, wenn er nicht leer ist |
| resource.labels.unique_id | principal.user.userid | Der Wert wird kopiert, wenn er nicht in ["", "null", " "] enthalten ist. |
| die Ausprägung | security_result.severity | Auf „INFORMATIONAL“ festlegen, wenn „INFO“ zutrifft |
| logName | target.resource.name | Wert kopiert, wenn er nicht leer ist |
| target.resource.type | Auf „DATABASE“ festgelegt | |
| metadata.product_name | Auf „FIVETRAN“ festgelegt | |
| metadata.vendor_name | Auf „FIVETRAN“ festgelegt |
Benötigen Sie weitere Hilfe? Antworten von Community-Mitgliedern und Google SecOps-Experten erhalten