F5 Distributed Cloud Services-Logs erfassen

Unterstützt in:

In diesem Dokument wird beschrieben, wie Sie F5 Distributed Cloud Services-Logs mit Google Cloud Storage V2 in Google Security Operations aufnehmen.

F5 Distributed Cloud Services ist eine SaaS-basierte Plattform für Sicherheit, Netzwerk und Anwendungsverwaltung, die verteilte Cloud-Infrastruktur, Anwendungsbereitstellung, API-Sicherheit und Web Application Firewall-Funktionen in Multi-Cloud- und Edge-Standorten bietet.

Hinweise

Prüfen Sie, ob folgende Voraussetzungen erfüllt sind:

  • Eine Google SecOps-Instanz
  • Ein Google Cloud-Projekt mit aktivierter Cloud Storage API
  • Berechtigungen zum Erstellen und Verwalten von GCS-Buckets
  • Berechtigungen zum Verwalten von IAM-Richtlinien für GCS-Buckets
  • Berechtigter Zugriff auf die F5 Distributed Cloud Console
  • Berechtigungen zum Erstellen von globalen Log-Empfängerobjekten in F5 Distributed Cloud

Google Cloud Storage-Bucket erstellen

  1. Öffnen Sie die Google Cloud Console.
  2. Wählen Sie Ihr Projekt aus oder erstellen Sie ein neues.
  3. Rufen Sie im Navigationsmenü Cloud Storage > Buckets auf.
  4. Klicken Sie auf Bucket erstellen.
  5. Geben Sie die folgenden Konfigurationsdetails an:

    Einstellung Wert
    Bucket benennen Geben Sie einen global eindeutigen Namen ein, z. B. f5-dcs-logs.
    Standorttyp Wählen Sie je nach Bedarf aus (Region, Dual-Region, Multi-Region).
    Standort Wählen Sie den Ort 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
  6. Klicken Sie auf Erstellen.

F5 Distributed Cloud für den Export nach GCS konfigurieren

GCS-Bucket zur Firewall-Zulassungsliste hinzufügen

  1. Für den globalen Log-Empfänger von F5 Distributed Cloud müssen die folgenden IP-Adressbereiche zur Liste der zulässigen IP-Adressen Ihrer Firewall hinzugefügt werden:

    • 193.16.236.64/29
    • 185.160.8.152/29
  2. Wenn für Ihren GCS-Bucket VPC Service Controls oder Firewallregeln verwendet werden, fügen Sie diese IP-Bereiche der Zulassungsliste hinzu.

Google Cloud-Dienstkonto für F5 Distributed Cloud erstellen

  1. Wechseln Sie in der Google Cloud Console zu IAM & Verwaltung > Dienstkonten.
  2. Klicken Sie auf Dienstkonto erstellen.
  3. Geben Sie die folgenden Konfigurationsdetails an:

    • Name des Dienstkontos: Geben Sie f5-dcs-log-writer (oder einen beschreibenden Namen) ein.
    • Beschreibung des Dienstkontos: Geben Sie Service account for F5 Distributed Cloud to write logs to GCS ein.
  4. Klicken Sie auf Erstellen und fortfahren.

  5. Im Abschnitt Diesem Dienstkonto Zugriff auf das Projekt erteilen:

    1. Klicken Sie auf Rolle auswählen.
    2. Suchen Sie nach Storage-Objekt-Administrator und wählen Sie die Rolle aus.
  6. Klicken Sie auf Weiter.

  7. Klicken Sie auf Fertig.

Dienstkontoschlüssel erstellen

  1. Klicken Sie in der Liste Dienstkonten auf das von Ihnen erstellte Dienstkonto (z. B. f5-dcs-log-writer).
  2. Rufen Sie den Tab Schlüssel auf.
  3. Klicken Sie auf Schlüssel hinzufügen > Neuen Schlüssel erstellen.
  4. Wählen Sie JSON als Schlüsseltyp aus.
  5. Klicken Sie auf Erstellen.
  6. Die JSON-Schlüsseldatei wird auf Ihren Computer heruntergeladen.
  7. Speichern Sie diese Datei sicher. Sie benötigen sie in den nächsten Schritten.

IAM-Berechtigungen für den GCS-Bucket erteilen

  1. Rufen Sie Cloud Storage > Buckets auf.
  2. Klicken Sie auf den Namen Ihres Buckets, z. B. f5-dcs-logs.
  3. Wechseln Sie zum Tab Berechtigungen.
  4. Klicken Sie auf Zugriff erlauben.
  5. Geben Sie die folgenden Konfigurationsdetails an:
    • Hauptkonten hinzufügen: Geben Sie die E-Mail-Adresse des Dienstkontos ein (z. B. f5-dcs-log-writer@PROJECT_ID.iam.gserviceaccount.com).
    • Rollen zuweisen: Wählen Sie Storage-Objekt-Administrator aus.
  6. Klicken Sie auf Speichern.

Google Cloud-Anmeldedaten in der F5 Distributed Cloud Console erstellen

  1. Melden Sie sich in der F5 Distributed Cloud Console unter https://<tenant>.console.ves.volterra.io an.
  2. Wählen Sie auf der Startseite den Dienst Multi-Cloud Network Connect aus.
  3. Gehen Sie zu Verwalten> Websiteverwaltung> Cloud-Anmeldedaten.
  4. Klicken Sie auf Cloud-Anmeldedaten hinzufügen.
  5. Im Abschnitt Metadaten:
    • Name: Geben Sie einen aussagekräftigen Namen ein, z. B. gcp-chronicle-logs.
    • Beschreibung (optional): Geben Sie Cloud Storage credentials for Google SecOps log export ein.
  6. Wählen Sie im Abschnitt Cloud Credentials Type (Typ der Cloud-Anmeldedaten) die Option GCP Credentials (GCP-Anmeldedaten) aus.
  7. Klicken Sie im Feld GCP-Anmeldedaten auf Konfigurieren.
  8. Wählen Sie im Drop-down-Menü Credential Type (Anmeldedatentyp) die Option Service Account Credentials File (Datei mit Dienstkonto-Anmeldedaten) aus.
  9. Klicken Sie auf Datei hochladen und wählen Sie die JSON-Schlüsseldatei aus, die Sie in den vorherigen Schritten heruntergeladen haben.
  10. Klicken Sie auf Übernehmen.
  11. Klicken Sie auf Speichern und beenden.

Globalen Log-Empfänger erstellen

  1. Achten Sie in der F5 Distributed Cloud Console darauf, dass Sie sich im Dienst Multi-Cloud Network Connect befinden.
  2. Klicken Sie auf Verwalten > Log-Verwaltung > Globaler Log-Empfänger.
  3. Klicken Sie auf Globalen Log-Empfänger hinzufügen.
  4. Im Abschnitt Metadaten:

    • Name: Geben Sie einen aussagekräftigen Namen ein, z. B. chronicle-gcs-receiver.
    • Beschreibung (optional): Geben Sie Global log receiver for Google SecOps SIEM ein.
  5. Wählen Sie im Drop-down-Menü Log-Typ die Log-Typen aus, die Sie exportieren möchten:

    • Anfragelogs: HTTP-Anfrage-/Antwortlogs mit Nutzer, Pfad, Methode und Antwortcodes
    • Sicherheitsereignisse: WAF-Ereignisse, DDoS-, API-Schutz- und Bot-Defense-Ereignisse
    • Audit-Logs: Konfigurationsänderungen über öffentliche APIs
    • DNS-Anfragelogs: Logs von DNS-Abfragen
  6. Wählen Sie im Drop-down-Menü Log Message Selection (Auswahl von Logmeldungen) eine der folgenden Optionen aus:

    • Logs aus dem aktuellen Namespace auswählen: Es werden nur Logs aus dem aktuellen Namespace gesendet.
    • Logs aus allen Namespaces auswählen: Sendet Logs aus allen Namespaces (empfohlen für umfassende Sichtbarkeit)
    • Logs in bestimmten Namespaces auswählen: Sendet Logs aus angegebenen Namespaces. Klicken Sie auf Element hinzufügen, um Namespace-Namen hinzuzufügen.
  7. Wählen Sie im Drop-down-Menü Receiver Configuration (Empfängerkonfiguration) die Option GCP Bucket Receiver (GCP-Bucket-Empfänger) aus.

  8. Geben Sie im Feld GCP Bucket Name (GCP-Bucket-Name) den Namen Ihres GCS-Buckets ein, z. B. f5-dcs-logs.

  9. Wählen Sie im Drop-down-Menü GCP Cloud Credentials (GCP-Cloud-Anmeldedaten) die zuvor erstellten Cloud-Anmeldedaten aus (z. B. gcp-chronicle-logs).

  10. Optional: Maximieren Sie Erweiterte Felder einblenden, um Batch-Optionen zu konfigurieren:

    • Batch Timeout Options (Optionen für Zeitüberschreitung bei Batch): Wählen Sie Timeout Seconds (Zeitüberschreitung in Sekunden) aus und geben Sie einen Wert ein (Standard: 300 Sekunden).
    • Batch Max Events (Maximale Anzahl von Ereignissen pro Batch): Wählen Sie Max Events (Maximale Anzahl von Ereignissen) aus und geben Sie einen Wert zwischen 32 und 2.000 ein. Wenn Sie kein Limit festlegen möchten, lassen Sie das Feld leer.
    • Batch Bytes (Batch-Byte): Wählen Sie Max Bytes (Maximale Byte) aus und geben Sie einen Wert zwischen 4.096 und 1.048.576 ein (Standard: 10485760 Byte / 10 MB).
  11. Klicken Sie auf Speichern und beenden.

Verbindung testen

  1. Suchen Sie in der Liste Global Log Receiver (Globaler Log-Empfänger) nach dem von Ihnen erstellten Empfänger, z. B. chronicle-gcs-receiver.
  2. Klicken Sie in der Spalte Aktionen auf das Dreipunkt-Menü (...).
  3. Wählen Sie Verbindung testen aus.
  4. Warten Sie, bis der Test abgeschlossen ist.
  5. Es sollte eine Meldung angezeigt werden, die auf eine erfolgreiche Verbindung hinweist.

Logs im GCS-Bucket prüfen

  1. Rufen Sie in der GCP Console Cloud Storage > Buckets auf.
  2. Klicken Sie auf den Namen Ihres Buckets, z. B. f5-dcs-logs.
  3. Prüfen Sie, ob Logdateien im Bucket erstellt werden.
  4. F5 Distributed Cloud organisiert Logs in der folgenden Ordnerstruktur:

    YYYY/MM/DD/HH/
    
    • Für jeden Tag wird ein Ordner erstellt (JJJJ/MM/TT).
    • In jedem Tagesordner wird für jede Stunde (HH) ein Unterordner erstellt.
    • Alle 5 Minuten werden neue komprimierte GZIP-Dateien in den stündlichen Unterordner geschrieben.
    • Dateien haben das NDJSON-Format (durch Zeilenumbruch getrenntes JSON)
  5. Klicken Sie auf eine GZIP-Datei, um das Logformat herunterzuladen und zu prüfen.

Google SecOps-Dienstkonto abrufen

Google SecOps verwendet ein eindeutiges Dienstkonto, um Daten aus Ihrem GCS-Bucket zu lesen. Sie müssen diesem Dienstkonto Zugriff auf Ihren Bucket gewähren.

E-Mail-Adresse des Dienstkontos abrufen

  1. Rufen Sie die SIEM-Einstellungen > Feeds auf.
  2. Klicken Sie auf Neuen Feed hinzufügen.
  3. Klicken Sie auf Einzelnen Feed konfigurieren.
  4. Geben Sie im Feld Feedname einen Namen für den Feed ein, z. B. F5 DCS Logs.
  5. Wählen Sie Google Cloud Storage V2 als Quelltyp aus.
  6. Wählen Sie F5 Distributed Cloud Services als Logtyp aus.
  7. 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.com
    
  8. Kopieren Sie diese E‑Mail-Adresse für den nächsten Schritt.

  9. Klicken Sie auf Weiter.

  10. Geben Sie Werte für die folgenden Eingabeparameter an:

    • Storage-Bucket-URL: Geben Sie den GCS-Bucket-URI ein:

      gs://f5-dcs-logs/
      

      Ersetzen Sie f5-dcs-logs durch den Namen Ihres GCS-Buckets.

    • Option zum Löschen der Quelle: Wählen Sie die gewünschte Löschoption aus:

      • Nie: Es werden niemals Dateien nach Übertragungen gelöscht (empfohlen für Tests).
      • Übertragene Dateien löschen: Dateien werden nach der erfolgreichen Übertragung gelöscht.
      • Übertragene Dateien und leere Verzeichnisse löschen: Löscht Dateien und leere Verzeichnisse nach der erfolgreichen Übertragung.

    • Maximales Dateialter: Dateien einschließen, die in den letzten Tagen geändert wurden (Standard ist 180 Tage)

    • Asset-Namespace: Der Asset-Namespace

    • Labels für Datenaufnahme: Das Label, das auf die Ereignisse aus diesem Feed angewendet werden soll

  11. Klicken Sie auf Weiter.

  12. Prüfen Sie die neue Feedkonfiguration auf dem Bildschirm Abschließen und klicken Sie dann auf Senden.

Dem Google SecOps-Dienstkonto IAM-Berechtigungen gewähren

Das Google SecOps-Dienstkonto benötigt die Rolle Storage-Objekt-Betrachter für Ihren GCS-Bucket.

  1. Rufen Sie Cloud Storage > Buckets auf.
  2. Klicken Sie auf den Namen Ihres Buckets, z. B. f5-dcs-logs.
  3. Wechseln Sie zum Tab Berechtigungen.
  4. Klicken Sie auf Zugriff erlauben.
  5. 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.
  6. Klicken Sie auf Speichern.

UDM-Zuordnungstabelle

Logfeld UDM-Zuordnung Logik
_id metadata.product_log_id Wert direkt kopiert
src principal.namespace Wert direkt kopiert
kubernetes_labels_app target.resource.attribute.labels Zusammengeführt aus app_label (abgeleitet von kubernetes_labels_app)
kubernetes_host target.hostname Wert direkt kopiert
kubernetes_container_name target.resource.product_object_id Wert direkt kopiert
bot_info.classification security_result.detection_fields Zusammengeführt aus „bot_info_classification_label“ (abgeleitet von „bot_info.classification“)
bot_info.name security_result.detection_fields Zusammengeführt aus „bot_info_name_label“ (abgeleitet von „bot_info.name“)
bot_info.type security_result.detection_fields Zusammengeführt aus „bot_info_type_label“ (abgeleitet von „bot_info.type“)
timestamp @timestamp Geprüft mit Datumsfilter mit RFC3339, UNIX, ISO8601
visitor_id security_result.detection_fields Zusammengeführt aus „visitor_id_label“ (abgeleitet von „visitor_id“)
Tag security_result.detection_fields Zusammengeführt aus tag_label (abgeleitet von tag)
Aktion security_result.action Auf ALLOW setzen, wenn Übereinstimmungen zulässig sind, auf BLOCK, wenn Übereinstimmungen abgelehnt werden
die Ausprägung security_result.severity Auf „HIGH“ setzen, wenn ein Fehler oder eine Warnung vorliegt; auf „CRITICAL“, wenn ein kritischer Fehler vorliegt; auf „MEDIUM“, wenn eine Mitteilung vorliegt; auf „LOW“, wenn Informationen vorliegen.
die Ausprägung security_result.severity_details Wert direkt kopiert
api_endpoint target.labels Zusammengeführt aus „api_endpoint_label“ (abgeleitet von „api_endpoint“)
app_firewall_name principal.process.command_line Wert direkt kopiert
app_type security_result.detection_fields Zusammengeführt aus „about_app_type“ (abgeleitet von „app_type“)
as_org security_result.detection_fields Zusammengeführt aus about_as_org (abgeleitet von as_org)
asn security_result.detection_fields Zusammengeführt aus about_asn (abgeleitet von asn)
kubernetes.pod_id security_result.detection_fields Zusammengeführt aus „about_pod_id“ (abgeleitet von „kubernetes.pod_id“)
kubernetes.pod_name security_result.detection_fields Zusammengeführt aus about_pod_name (abgeleitet von kubernetes.pod_name)
latitude principal.location.region_latitude In Gleitkommazahl konvertiert
longitude principal.location.region_longitude In Gleitkommazahl konvertiert
req_params additional.fields Zusammengeführt aus about_req_params (abgeleitet von req_params)
as_number additional.fields Zusammengeführt aus „about_as_number“ (in String konvertiert aus „as_number“)
x_forwarded_for intermediary.ip Zusammengeführt, wenn gültige IP-Adresse
x_forwarded_for security_result.about.resource.attribute.labels Zusammengeführt aus x_forwarded_for_label, wenn nicht IP
policy_hit.malicious_user_mitigate_action security_result.detection_fields Zusammengeführt aus „malicious_user_label“ (abgeleitet von „policy_hit.malicious_user_mitigate_action“)
policy_hit.policy security_result.about.resource.attribute.labels Zusammengeführt aus policy_label (abgeleitet von policy_hit.policy)
policy_hit.policy_namespace additional.fields Zusammengeführt aus policy_namespace_label (abgeleitet von policy_hit.policy_namespace)
policy_hit.policy_rule security_result.rule_name Wert direkt kopiert
policy_hit.policy_rule_description security_result.description Wert direkt kopiert
policy_hit.policy_set target.resource.name Wert direkt kopiert
policy_hit.result additional.fields Zusammengeführt aus „result_label“ (abgeleitet von „policy_hit.result“)
vhost_id security_result.detection_fields Zusammengeführt aus vhostlabel (abgeleitet von vhost_id)
messageid security_result.detection_fields Zusammengeführt aus „messageid_label“ (abgeleitet von „messageid“)
sec_event_name security_result.detection_fields Zusammengeführt aus „sec_event_name_label“ (abgeleitet von „sec_event_name“)
sec_event_type security_result.detection_fields Zusammengeführt aus „sec_event_type_label“ (abgeleitet von „sec_event_type“)
vh_name security_result.detection_fields Zusammengeführt aus vhost_name_label (abgeleitet von vh_name)
tls_fingerprint security_result.detection_fields Zusammengeführt aus „tls_fingerprint_label“ (abgeleitet von „tls_fingerprint“)
Zeit additional.fields Zusammengeführt aus „time_label“ (abgeleitet von „time“)
kubernetes.namespace_name additional.fields Zusammengeführt aus namespace_name_label (abgeleitet von kubernetes.namespace_name)
src_instance additional.fields Zusammengeführt aus src_instance_label (abgeleitet von src_instance)
violation_rating additional.fields Zusammengeführt aus „violation_rating_label“ (abgeleitet aus „violation_rating“)
req_size additional.fields Zusammengeführt aus req_size_label (von req_size in String konvertiert)
rsp_code additional.fields Zusammengeführt aus rsp_code_label (in String aus rsp_code konvertiert)
rsp_code_class additional.fields Zusammengeführt aus rsp_code_class_label (in String konvertiert aus rsp_code_class)
rsp_size additional.fields Zusammengeführt aus rsp_size_label (von rsp_size in String konvertiert)
original_path additional.fields Zusammengeführt aus „original_path_label“ (abgeleitet von „original_path“)
req_path target.url Wert direkt kopiert
req_headers_size additional.fields Zusammengeführt aus req_headers_size_label (abgeleitet von req_headers_size)
recommended_action additional.fields Zusammengeführt aus „recommended_action_label“ (abgeleitet von „recommended_action“)
enforcement_mode additional.fields Zusammengeführt aus „enforcement_mode_label“ (abgeleitet von „enforcement_mode“)
src_ip principal.ip, principal.asset.ip Zusammengeführt, wenn sie mit dem IPv4-Regex übereinstimmt
Host principal.ip, principal.asset.ip Zusammengeführt, wenn sie mit dem IPv4-Regex übereinstimmt
Hostname principal.hostname, principal.asset.hostname Der Wert wird direkt kopiert, wenn er nicht leer ist, oder –
http_version network.application_protocol_version Wert direkt kopiert
http_version network.application_protocol Auf HTTP festlegen, wenn HTTP enthalten ist, auf HTTPS, wenn HTTPS enthalten ist
Netzwerk principal.nat_ip Zusammengeführt, wenn sie mit dem IPv4-Regex übereinstimmt
dst_ip target.ip, target.asset.ip Zusammengeführt, wenn sie mit dem IPv4-Regex übereinstimmt
dst_port target.port In Ganzzahl konvertiert
src_port principal.port In Ganzzahl konvertiert
src_site additional.fields Zusammengeführt aus src_site_field (abgeleitet von src_site)
Website additional.fields Zusammengeführt aus „site_field“ (abgeleitet von „site“)
cluster_name additional.fields Zusammengeführt aus cluster_name_field (abgeleitet von cluster_name)
Domain principal.administrative_domain Wert direkt kopiert
method network.http.method Wert wird direkt kopiert, wenn er nicht leer oder „N/A“ ist.
Namespace target.namespace Wert direkt kopiert
Ort principal.location.city Wert direkt kopiert
stream security_result.detection_fields Zusammengeführt aus stream_label (abgeleitet von stream)
Region principal.location.country_or_region Wert direkt kopiert
Nutzer principal.user.userid Vom Nutzer extrahiert, indem das Grok-Muster für user_id verwendet wird
user_ip target.ip, target.asset.ip Zusammengeführt aus extrahierter user_ip
Cookie additional.fields Zusammengeführt aus Cookie (abgeleitet von Cookie in req_headers)
X-F5-Request-Id security_result.detection_fields Zusammengeführt aus x_f5_request_id (abgeleitet aus X-F5-Request-Id in req_headers)
X-Request-Id security_result.detection_fields Zusammengeführt aus request_id (abgeleitet aus X-Request-Id in req_headers)
security_result security_result Direkt zusammengeführt
has_network, has_principal, has_target metadata.event_type Auf NETWORK_CONNECTION gesetzt, wenn alle Bedingungen zutreffen; STATUS_UPDATE, wenn has_principal „true“ ist; andernfalls GENERIC_EVENT
metadata.vendor_name Auf „F5_DCS“ festlegen
metadata.product_name Auf „F5 DCS“ festlegen
Vermittler Vermittler Direkt zusammengeführt

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