Google Cloud Secure Web Proxy-Protokolle erfassen

Unterstützt in:

In diesem Dokument wird beschrieben, wie Sie Secure Web Proxy-Logs mit Google Cloud Storage V2 in Google Security Operations aufnehmen. Google Cloud

Secure Web Proxy ist ein Cloud-basierter Dienst, mit dem Sie ausgehenden Web-Traffic (HTTP und HTTPS) schützen können. Der Dienst bietet eine verwaltete Proxy-Lösung, die flexible und detaillierte Richtlinien basierend auf Cloud Identity und Webanwendungen ermöglicht. Secure Web Proxy identifiziert Traffic, der nicht der Richtlinie entspricht, und protokolliert ihn in Cloud Logging. So können Sie die Internetnutzung überwachen, Bedrohungen für Ihr Netzwerk erkennen und auf Sicherheitsvorfälle reagieren.

Hinweise

Prüfen Sie, ob die folgenden 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
  • Secure Web Proxy ist in Ihrer Google Cloud-Umgebung aktiv und konfiguriert.
  • Berechtigter Zugriff auf Google Cloud und die entsprechenden Berechtigungen für den Zugriff auf Secure Web Proxy-Logs
  • Berechtigungen zum Erstellen und Verwalten von Cloud Logging-Senken

Google Cloud Storage-Bucket erstellen

Google Cloud Console verwenden

  1. Gehen Sie zur 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. Google Cloud-swp-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
  6. Klicken Sie auf Erstellen.

gcloud-Befehlszeilentool verwenden

  • Alternativ können Sie einen Bucket mit dem Befehl gcloud erstellen:

    gcloud storage buckets create gs://gcp-swp-logs \
        --location=us-central1 \
        --default-storage-class=STANDARD
    
    • Ersetzen Sie:
      • gcp-swp-logs: Der gewünschte Bucket-Name (global eindeutig).
      • us-central1: Ihre bevorzugte Region (z. B. us-central1, europe-west1).

Cloud Logging so konfigurieren, dass Secure Web Proxy-Logs nach GCS exportiert werden

Secure Web Proxy protokolliert Proxy-Transaktionslogs automatisch in Cloud Logging. Wenn Sie diese Logs nach Cloud Storage exportieren möchten, müssen Sie eine Cloud Logging-Senke erstellen.

Google Cloud Console verwenden

  1. Rufen Sie in der Google Cloud Console Logging > Log Router auf.
  2. Klicken Sie auf Senke erstellen.
  3. Geben Sie die folgenden Konfigurationsdetails an:
    • Name der Senke: Geben Sie einen aussagekräftigen Namen ein, z. B. swp-export-sink.
    • Senkenbeschreibung: Optionale Beschreibung.
  4. Klicken Sie auf Weiter.
  5. Gehen Sie im Bereich Senkendienst auswählen so vor:
    • Senkendienst: Wählen Sie Cloud Storage-Bucket aus.
    • Cloud Storage-Bucket auswählen: Wählen Sie gcp-swp-logs aus dem Drop-down-Menü aus.
  6. Klicken Sie auf Weiter.
  7. Geben Sie im Abschnitt Logs auswählen, die in der Senke enthalten sind die folgende Filterabfrage ein:

    logName="projects/<YOUR_PROJECT_ID>/logs/networkservices.googleapis.com/gateway_requests"
    
    • Ersetzen Sie <YOUR_PROJECT_ID> durch Ihre Google Cloud-Projekt-ID.
  8. Klicken Sie auf Weiter.

  9. Prüfen Sie die Konfiguration und klicken Sie auf Senke erstellen.

Nachdem Sie die Senke erstellt haben, wird in Cloud Logging die Writer-Identität der Senke (eine E-Mail-Adresse des Dienstkontos) angezeigt. Kopieren Sie die E-Mail-Adresse dieses Dienstkontos für den nächsten Schritt.

gcloud-Befehlszeilentool verwenden

  • Alternativ können Sie eine Senke mit dem Befehl gcloud erstellen:

    gcloud logging sinks create swp-export-sink \
        storage.googleapis.com/gcp-swp-logs \
        --log-filter='logName="projects/<YOUR_PROJECT_ID>/logs/networkservices.googleapis.com/gateway_requests"'
    
    • Ersetzen Sie:
      • swp-export-sink: Der gewünschte Name der Senke.
      • gcp-swp-logs: Der Name Ihres GCS-Buckets.
      • <YOUR_PROJECT_ID>: Ihre Google Cloud-Projekt-ID.

Berechtigungen für das Cloud Logging-Dienstkonto erteilen

Das Dienstkonto der Identität des Cloud Logging-Senkenautors benötigt die Berechtigung zum Schreiben von Logs in Ihren GCS-Bucket.

Google Cloud Console verwenden

  1. Rufen Sie Cloud Storage > Buckets auf.
  2. Klicken Sie auf den Namen Ihres Buckets (gcp-swp-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 Dienstkontos für die Identität des Cloud Logging-Senkenautors ein (z. B. serviceAccount:service-123456789@gcp-sa-logging.iam.gserviceaccount.com).
    • Rollen zuweisen: Wählen Sie Storage-Objekt-Administrator aus.
  6. Klicken Sie auf Speichern.

gcloud-Befehlszeilentool verwenden

  • Alternativ können Sie Berechtigungen mit dem Befehl gcloud erteilen:

    gcloud storage buckets add-iam-policy-binding gs://gcp-swp-logs \
        --member="serviceAccount:<LOGGING_SERVICE_ACCOUNT_EMAIL>" \
        --role="roles/storage.objectAdmin"
    
    • Ersetzen Sie:
      • gcp-swp-logs: Ihr Bucket-Name.
      • <LOGGING_SERVICE_ACCOUNT_EMAIL>: Die E-Mail-Adresse des Dienstkontos der Cloud Logging-Senken-Schreibidentität.

gsutil-Befehlszeilentool verwenden (Legacy)

  • Weisen Sie Ihrem Dienstkonto für die Protokollierung die Rolle „Objektadministrator“ zu:

    gsutil iam ch serviceAccount:<LOGGING_SERVICE_ACCOUNT_EMAIL>:objectAdmin \
        gs://gcp-swp-logs
    

Berechtigungen prüfen

  • So prüfen Sie, ob die Berechtigungen richtig erteilt wurden:

    gcloud storage buckets get-iam-policy gs://gcp-swp-logs \
        --flatten="bindings[].members" \
        --filter="bindings.role:roles/storage.objectAdmin"
    

In der Ausgabe sollte die E-Mail-Adresse des Cloud Logging-Dienstkontos angezeigt werden.

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.

Feed in Google SecOps konfigurieren, um GCP Secure Web Proxy-Logs aufzunehmen

  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. GGoogle CloudCP Secure Web Proxy Logs.
  5. Wählen Sie Google Cloud Storage V2 als Quelltyp aus.
  6. Wählen Sie GCP Secure Web Proxy als Log type (Protokolltyp) 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 mit dem Präfixpfad ein:
    gs://gcp-swp-logs/
    
    • Ersetzen Sie:
      • gcp-swp-logs: Der Name Ihres GCS-Buckets.
    • Option zum Löschen der Quelle: Wählen Sie die gewünschte Löschoption aus:

      • Nie: Es werden nach Übertragungen nie Dateien 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. Der Standardwert ist 180 Tage.

    • Asset-Namespace: Der Asset-Namespace.

    • Aufnahmelabels: 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.

Google Cloud Console verwenden

  1. Rufen Sie Cloud Storage > Buckets auf.
  2. Klicken Sie auf den Namen Ihres Buckets.
  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.

gcloud-Befehlszeilentool verwenden

  • Alternativ können Sie Berechtigungen mit dem Befehl gcloud erteilen:

    gcloud storage buckets add-iam-policy-binding gs://gcp-swp-logs \
        --member="serviceAccount:<SECOPS_SERVICE_ACCOUNT_EMAIL>" \
        --role="roles/storage.objectViewer"
    
    • Ersetzen Sie:
      • gcp-swp-logs: Ihr Bucket-Name.
      • <SECOPS_SERVICE_ACCOUNT_EMAIL>: Die E-Mail-Adresse des Google SecOps-Dienstkontos.

gsutil-Befehlszeilentool verwenden (Legacy)

  • Führen Sie den folgenden Befehl aus, um dem SecOps-Dienstkonto die Berechtigungen des Objektbetrachters zu erteilen:

    gsutil iam ch serviceAccount:<SECOPS_SERVICE_ACCOUNT_EMAIL>:objectViewer \
        gs://gcp-swp-logs
    

Berechtigungen prüfen

  • So prüfen Sie, ob die Berechtigungen richtig erteilt wurden:

    gcloud storage buckets get-iam-policy gs://gcp-swp-logs \
        --flatten="bindings[].members" \
        --filter="bindings.role:roles/storage.objectViewer"
    

In der Ausgabe sollte die E-Mail-Adresse des Google SecOps-Dienstkontos angezeigt werden.

UDM-Zuordnungstabelle

Logfeld UDM-Zuordnung Logik
httpRequest.latency, jsonPayload.@type, logName additional.fields Zusammengeführt mit „latency_label“ (Schlüssel „HTTPRequest Latency“, Wert aus „latency“), „type_label“ (Schlüssel „Log Type“, Wert aus „@type“), „logname“ (Schlüssel „Log Name“, Wert aus „logName“)
receiveTimestamp metadata.collected_timestamp Als RFC3339-Zeitstempel geparst
metadata.event_type Auf NETWORK_HTTP setzen, wenn has_principal „true“, has_target „true“ und protocol mit (?i)http übereinstimmt; auf NETWORK_CONNECTION setzen, wenn has_principal „true“, has_target „true“ und network != ""; auf USER_LOGIN setzen, wenn has_principal „true“, has_target „true“ und has_principal_user „true“; auf STATUS_UPDATE setzen, wenn has_principal „true“; andernfalls auf GENERIC_EVENT setzen.
insertId metadata.product_log_id Wert direkt kopiert
httpRequest.protocol network.application_protocol Extrahierte Protokollversion mit dem Grok-Muster %{DATA:protocol}/%{INT:http_version}, festgelegt, wenn in ["HTTP","HTTPS"]
httpRequest.protocol network.application_protocol_version http_version mit dem Grok-Muster %{DATA:protocol}/%{INT:http_version} extrahiert
httpRequest.requestMethod network.http.method Wert direkt kopiert
httpRequest.userAgent network.http.parsed_user_agent Wert direkt kopiert, in „parseduseragent“ konvertiert
httpRequest.status network.http.response_code In String und dann in Ganzzahl konvertiert
httpRequest.userAgent network.http.user_agent Wert direkt kopiert
httpRequest.responseSize network.received_bytes Wert direkt kopiert, in „uinteger“ konvertiert
httpRequest.requestSize network.sent_bytes Wert direkt kopiert, in „uinteger“ konvertiert
httpRequest.serverIp principal.asset.ip Extrahierte IP-Adresse mit dem Grok-Muster %{IP:server_ip}, wird festgelegt, wenn sie nicht leer ist
httpRequest.serverIp principal.ip Extrahierte IP-Adresse mit dem Grok-Muster %{IP:server_ip}, wird festgelegt, wenn sie nicht leer ist
jsonPayload.enforcedGatewaySecurityPolicy.matchedRules[].action security_result.action Auf ALLOW setzen, wenn rule.action == ALLOW, auf BLOCK, wenn rule.action == DENIED
jsonPayload.enforcedGatewaySecurityPolicy.matchedRules[].action security_result.action_details Wert direkt aus „rule.action“ kopiert
jsonPayload.enforcedGatewaySecurityPolicy.requestWasTlsIntercepted, resource.labels.gateway_name, resource.labels.resource_container, resource.labels.gateway_type security_result.detection_fields Zusammengeführt mit tls_intercepted_label (Schlüssel „requestWasTlsIntercepted“, Wert aus requestWasTlsIntercepted), gateway_name_label (Schlüssel „gateway-name“, Wert aus gateway_name), resource_container_label (Schlüssel „resource_container“, Wert aus resource_container), gateway_type_label (Schlüssel „gateway-type“, Wert aus gateway_type)
jsonPayload.enforcedGatewaySecurityPolicy.matchedRules[].name security_result.rule_name Wert direkt kopiert
die Ausprägung security_result.severity Auf „CRITICAL“ setzen, wenn „severity“ == „CRITICAL“; auf „ERROR“, wenn „severity“ == „ERROR“; auf „HIGH“, wenn „severity“ in [„ALERT“, „EMERGENCY“]; auf „INFORMATIONAL“, wenn „severity“ in [„INFO“, „NOTICE“]; auf „LOW“, wenn „severity“ == „DEBUG“; auf „MEDIUM“, wenn „severity“ == „WARNING“; auf „UNKNOWN_SEVERITY“ in allen anderen Fällen.
jsonPayload.enforcedGatewaySecurityPolicy.hostname target.asset.hostname Wert direkt kopiert
httpRequest.remoteIp target.asset.ip Extrahierte IP-Adresse mit dem Grok-Muster %{IP:remote_ip}, wird festgelegt, wenn sie nicht leer ist
jsonPayload.enforcedGatewaySecurityPolicy.hostname target.hostname Wert direkt kopiert
httpRequest.remoteIp target.ip Extrahierte IP-Adresse mit dem Grok-Muster %{IP:remote_ip}, wird festgelegt, wenn sie nicht leer ist
resource.labels.location target.resource.attribute.cloud.availability_zone Wert direkt kopiert
resource.labels.network_name, resource.type target.resource.attribute.labels Zusammengeführt mit rc_network_name_label (Schlüssel „rc_network_name“, Wert aus network_name), resource_type (Schlüssel „Resource Type“, Wert aus resource.type)
httpRequest.requestUrl target.url Wert direkt kopiert

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