Google Cloud -VPC-Flusslogs erfassen
Parserversion: 6.0
In diesem Dokument wird beschrieben, wie Sie Google Cloud VPC-Flusslogs mit Google Cloud Storage in Google Security Operations aufnehmen.
In VPC-Flusslogs wird eine Stichprobe von Netzwerkflüssen aufgezeichnet, die von VM-Instanzen gesendet und empfangen wurden, einschließlich Instanzen, die als Google Kubernetes Engine-Knoten verwendet werden. Diese Logs können für Netzwerkmonitoring, Forensik, Echtzeit-Sicherheitsanalysen und Kostenoptimierung verwendet werden. Flusslogs werden nach Verbindung in konfigurierbaren Intervallen aggregiert und nahezu in Echtzeit über Cloud Logging exportiert. Eine Logging-Senke leitet die VPC-Flusslogs an einen Cloud Storage-Bucket weiter, aus dem Google SecOps sie aufnimmt.
Hinweis
Folgende Voraussetzungen müssen erfüllt sein:
- Eine Google SecOps-Instanz
- Ein Google Cloud -Projekt mit den folgenden aktivierten APIs:
- Cloud Storage API
- Cloud Logging API
- Compute Engine API
- Berechtigungen für:
- VPC-Flusslogs in Subnetzen aktivieren
- Cloud Storage-Buckets erstellen und verwalten,
- IAM-Richtlinien für Cloud Storage-Buckets verwalten
- Cloud Logging API-Senken erstellen und verwalten
- Mindestens ein VPC-Subnetz, in dem Sie VPC-Flusslogs aktivieren möchten
VPC-Flusslogs in Subnetzen aktivieren
Bevor Sie die Aufnahmepipeline konfigurieren, müssen Sie VPC-Flusslogs für die Zielsubnetze aktivieren. Google Cloud unterstützt zwei APIs zum Verwalten von VPC-Flusslogs: die Network Management API (empfohlen) und die Compute Engine API.
Google Cloud Console (Network Management API) verwenden
- Rufen Sie in der Google Cloud Console VPC-Netzwerk > VPC-Netzwerke auf.
- Klicken Sie auf den Tab Subnetze im aktuellen Projekt.
- Wählen Sie das Subnetz aus, für das Sie Flusslogs aktivieren möchten.
- Klicken Sie auf Flusslogs verwalten.
- Klicken Sie auf Neue Konfiguration hinzufügen.
- Geben Sie einen Namen für die Konfiguration ein.
- Konfigurieren Sie die folgenden optionalen Einstellungen:
- Aggregationsintervall: Wählen Sie das Aggregationsintervall aus (Standard: 5 Sekunden). Kürzere Intervalle liefern detailliertere Daten, erhöhen aber das Logvolumen.
- Metadaten einschließen: Wählen Sie Alle Metadaten einschließen aus, um Details zur VM-Instanz und zur VPC einzuschließen.
- Sekundäre Abtastrate: Legen Sie die Abtastrate fest (Standardwert: 100 % für die Network Management API). Höhere Raten erfassen mehr Abläufe, erhöhen aber das Logvolumen.
- Filterausdruck: Optionaler CEL-Filterausdruck,um bestimmte Abläufe ein- oder auszuschließen (maximal 2.048 Zeichen).
- Klicken Sie auf Speichern.
gcloud-Befehlszeilentool (Network Management API) verwenden
Verwenden Sie die folgende Syntax:
gcloud network-management vpc-flow-logs-configs create <CONFIG_NAME> \ --location=global \ --subnet=projects/<PROJECT_ID>/regions/<REGION>/subnetworks/<SUBNET_NAME> \ --aggregation-interval=INTERVAL_5_SEC \ --metadata=INCLUDE_ALL_METADATA \ --flow-sampling=1.0
Ersetzen Sie:
<CONFIG_NAME>: Ein aussagekräftiger Konfigurationsname (z. B.vpc-flow-logs-config)<PROJECT_ID>: Ihre Google Cloud -Projekt-ID<REGION>: Die Subnetzregion (z. B.us-central1)<SUBNET_NAME>: Name Ihres Subnetzes
gcloud-Befehlszeilentool (Compute Engine API) verwenden
Verwenden Sie die folgende Syntax:
gcloud compute networks subnets update <SUBNET_NAME> \ --region=<REGION> \ --enable-flow-logs \ --logging-aggregation-interval=interval-5-sec \ --logging-metadata=include-all \ --logging-flow-sampling=0.5 \ --project=<PROJECT_ID>
Ersetzen Sie:
<SUBNET_NAME>: Name Ihres Subnetzes<REGION>: Die Subnetzregion (z. B.us-central1)<PROJECT_ID>: Ihre Google Cloud -Projekt-ID
Google Cloud Storage-Bucket erstellen
- Rufen Sie die Google Cloud Console auf.
- Wählen Sie Ihr Projekt aus.
- 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. vpc-flow-logs-bucket).Standorttyp Wählen Sie die Option, die am besten zu Ihren Anforderungen passt (Region, Dual-Region, Multi-Region). Standort Wählen Sie den Standort aus (z. B. us-central1).Speicherklasse Standard (empfohlen für Logs, auf die häufig zugegriffen wird) Zugriffssteuerung Einheitlich (empfohlen) Schutztools Optional: Objektversionsverwaltung oder Aufbewahrungsrichtlinie aktivieren Klicken Sie auf Erstellen.
Logging-Senke erstellen, um VPC-Flusslogs nach GCS zu exportieren
Eine Logging-Senke leitet VPC-Flusslogs von Logging an den Cloud Storage-Bucket weiter. Google SecOps nimmt dann die exportierten Objekte aus dem Bucket auf.
Logsenke erstellen
- Wechseln Sie in der Google Cloud Console zu Logging > Log Router.
- Klicken Sie auf Senke erstellen.
- Geben Sie die folgenden Konfigurationsdetails an:
- Name der Senke: Geben Sie einen aussagekräftigen Namen ein (z. B.
vpc-flow-to-gcs). - Beschreibung der Senke: Geben Sie
Route VPC Flow Logs to Cloud Storage for Google SecOps ingestionein.
- Name der Senke: Geben Sie einen aussagekräftigen Namen ein (z. B.
- Klicken Sie auf Weiter.
- 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 den Bucket
vpc-flow-logs-bucketaus.
- Klicken Sie auf Weiter.
Geben Sie im Abschnitt Logs auswählen, die in der Senke enthalten sind den folgenden Filter ein, um VPC-Flusslogs zu erfassen:
resource.type="gce_subnetwork" AND log_id("compute.googleapis.com/vpc_flows")resource.type="gce_subnetwork" AND log_id("compute.googleapis.com/vpc_flows") AND resource.labels.subnetwork_name="<SUBNET_NAME>"- Ersetzen Sie
<SUBNET_NAME>durch den Namen des Zielsubnetzes.
- Ersetzen Sie
Klicken Sie auf Weiter.
Überprüfen Sie die Konfiguration und klicken Sie auf Senke erstellen.
Dem Senkenschreiber die Schreibberechtigung für den Bucket gewähren
Nachdem die Senke erstellt wurde, weist Logging ihr ein Dienstkonto für den Schreibzugriff (die Schreibidentität) zu. Erteilen Sie dieser Identität die Berechtigung, Objekte in den Bucket zu schreiben.
- Rufen Sie Logging > Logrouter auf.
- Suchen Sie die Senke
vpc-flow-to-gcs, klicken Sie auf das Dreipunkt-Menü und wählen Sie Senkendetails ansehen aus. - Kopieren Sie den Wert für Identität des Autors (im Format
serviceAccount:p<PROJECT_NUMBER>-<ID>@gcp-sa-logging.iam.gserviceaccount.com). - Rufen Sie Cloud Storage > Buckets auf.
- Klicken Sie auf den Bucket
vpc-flow-logs-bucket. - Wechseln Sie zum Tab Berechtigungen.
- Klicken Sie auf Zugriff erlauben.
- Geben Sie die folgenden Konfigurationsdetails an:
- Hauptkonten hinzufügen: Fügen Sie die Identität des Autors der Senke ein (ohne das Präfix
serviceAccount:). - Rollen zuweisen: Wählen Sie Storage-Objekt-Ersteller (
roles/storage.objectCreator) aus.
- Hauptkonten hinzufügen: Fügen Sie die Identität des Autors der Senke ein (ohne das Präfix
- Klicken Sie auf Speichern.
Prüfen, ob Logs exportiert werden
- Rufen Sie Cloud Storage > Buckets auf.
- Klicken Sie auf den Bucket
vpc-flow-logs-bucket. - Warten Sie einige Minuten, bis die Senke die ersten Objekte geschrieben hat.
Prüfen Sie, ob ein Ordner mit dem Namen
compute.googleapis.com/vpc_flows/(oder ein Pfad mit Datum) erstellt wurde und exportierte Protokolldateien enthält.
Feed in Google SecOps konfigurieren, um VPC-Flusslogs aufzunehmen
- Rufen Sie die Einstellungen > Datenverwaltung > Feeds auf. Wenn Sie eine reine SIEM-Plattform verwenden, rufen Sie die 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.
GCP VPC Flow Logs. - Wählen Sie Google Cloud Storage V2 als Quelltyp aus.
- Wählen Sie GCP VPC Flow als Logtyp aus.
Klicken Sie auf Dienstkonto abrufen. Eine eindeutige E-Mail-Adresse für das Dienstkonto wird angezeigt, z. B.:
chronicle-12345678@chronicle-gcp-prod.iam.gserviceaccount.comKopieren Sie diese E-Mail-Adresse. Sie verwenden es in der nächsten Aufgabe.
Klicken Sie auf Weiter.
Geben Sie Werte für die folgenden Eingabeparameter an:
Storage-Bucket-URI: Geben Sie den GCS-Bucket-URI mit dem Präfixpfad ein:
gs://vpc-flow-logs-bucket/compute.googleapis.com/vpc_flows/- Ersetzen Sie:
vpc-flow-logs-bucket: Der Name Ihres GCS-Buckets.compute.googleapis.com/vpc_flows: Optionaler Präfix-/Ordnerpfad, in den die Senke Logs schreibt (leer lassen für Stammverzeichnis).
- Ersetzen Sie:
Option zum Löschen der Quelle: Wählen Sie die gewünschte Löschoption aus:
- Nie: Nach Übertragungen werden keine Dateien gelöscht (empfohlen für Tests).
- Übertragene Dateien löschen: Dateien werden nach erfolgreicher Übertragung gelöscht.
- Übertragene Dateien und leere Verzeichnisse löschen: Dateien und leere Verzeichnisse werden nach erfolgreicher Übertragung gelöscht.
Maximales Dateialter (Tage): 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.
Klicken Sie auf Weiter.
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 Cloud Storage-Bucket.
- Rufen Sie Cloud Storage > Buckets auf.
- Klicken Sie auf den Bucket
vpc-flow-logs-bucket. - 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 (
roles/storage.objectViewer) aus.
Klicken Sie auf Speichern.
UDM-Zuordnungstabelle
| Logfeld | UDM-Zuordnung | Logik |
|---|---|---|
_field |
additional.fields |
Zusammengeführt |
textpayload_label |
additional.fields |
Zusammengeführt |
tunnel_id_label |
additional.fields |
Zusammengeführt |
description |
metadata.description |
Direkt zugeordnet |
timestamp |
metadata.event_timestamp |
Geparst als ISO8601 |
ts |
metadata.event_timestamp |
Geparst als ISO8601 |
event_type |
metadata.event_type |
Direkt zugeordnet |
product_event_type |
metadata.product_event_type |
Direkt zugeordnet |
product_log_id |
metadata.product_log_id |
Direkt zugeordnet |
product_name |
metadata.product_name |
Direkt zugeordnet |
product_version |
metadata.product_version |
Direkt zugeordnet |
vendor_name |
metadata.vendor_name |
Direkt zugeordnet |
ip_protocol_out |
network.ip_protocol |
Direkt zugeordnet |
jsonPayload.bytes_sent |
network.sent_bytes |
Umbenannt/zugeordnet |
jsonPayload.packets_sent |
network.sent_packets |
Umbenannt/zugeordnet |
principal.ip |
principal.asset.ip |
Zusammengeführt |
target.ip |
principal.asset.ip |
Zusammengeführt |
jsonPayload.src_instance.vm_name |
principal.hostname |
Direkt zugeordnet |
target.hostname |
principal.hostname |
Umbenannt/zugeordnet |
jsonPayload.connection.src_ip |
principal.ip |
Direkt zugeordnet |
target.ip |
principal.ip |
Zusammengeführt |
jsonPayload.src_location.city |
principal.location.city |
Direkt zugeordnet |
target.location.city |
principal.location.city |
Umbenannt/zugeordnet |
jsonPayload.src_location.country |
principal.location.country_or_region |
Direkt zugeordnet |
target.location.country_or_region |
principal.location.country_or_region |
Umbenannt/zugeordnet |
jsonPayload.src_instance.region |
principal.location.name |
Direkt zugeordnet |
resource.labels.location |
principal.location.name |
Direkt zugeordnet |
target.location.name |
principal.location.name |
Umbenannt/zugeordnet |
jsonPayload.src_location.region |
principal.location.state |
Direkt zugeordnet |
target.location.state |
principal.location.state |
Umbenannt/zugeordnet |
jsonPayload.src_vpc.project_id |
principal.namespace |
Direkt zugeordnet |
jsonPayload.src_vpc.vpc_name |
principal.namespace |
Direkt zugeordnet |
target.namespace |
principal.namespace |
Umbenannt/zugeordnet |
jsonPayload.connection.src_port |
principal.port |
Direkt zugeordnet |
_field |
principal.resource.attribute.labels |
Zusammengeführt |
key |
principal.resource.attribute.labels |
Zugeordnet: jsonPayload_src_google_service_type → _field |
src_gke_cluster_location |
principal.resource.attribute.labels |
Zusammengeführt |
src_gke_cluster_name |
principal.resource.attribute.labels |
Zusammengeführt |
src_gke_namespace |
principal.resource.attribute.labels |
Zusammengeführt |
src_gke_pod_name |
principal.resource.attribute.labels |
Zusammengeführt |
logName |
security_result.category_details |
Zusammengeführt |
severity |
security_result.severity |
Zugeordnet: DEBUG → LOW |
principal.ip |
target.asset.ip |
Zusammengeführt |
target.ip |
target.asset.ip |
Zusammengeführt |
jsonPayload.dest_instance.vm_name |
target.hostname |
Direkt zugeordnet |
principal.hostname |
target.hostname |
Umbenannt/zugeordnet |
jsonPayload.connection.dest_ip |
target.ip |
Direkt zugeordnet |
principal.ip |
target.ip |
Zusammengeführt |
jsonPayload.dest_location.city |
target.location.city |
Direkt zugeordnet |
principal.location.city |
target.location.city |
Umbenannt/zugeordnet |
jsonPayload.dest_location.country |
target.location.country_or_region |
Direkt zugeordnet |
principal.location.country_or_region |
target.location.country_or_region |
Umbenannt/zugeordnet |
jsonPayload.dest_instance.region |
target.location.name |
Direkt zugeordnet |
principal.location.name |
target.location.name |
Umbenannt/zugeordnet |
jsonPayload.dest_location.region |
target.location.state |
Direkt zugeordnet |
principal.location.state |
target.location.state |
Umbenannt/zugeordnet |
jsonPayload.dest_vpc.project_id |
target.namespace |
Direkt zugeordnet |
jsonPayload.dest_vpc.vpc_name |
target.namespace |
Direkt zugeordnet |
principal.namespace |
target.namespace |
Umbenannt/zugeordnet |
jsonPayload.connection.dest_port |
target.port |
Umbenannt/zugeordnet |
dest_gke_cluster_location |
target.resource.attribute.labels |
Zusammengeführt |
dest_gke_cluster_name |
target.resource.attribute.labels |
Zusammengeführt |
dest_gke_namespace |
target.resource.attribute.labels |
Zusammengeführt |
dest_gke_pod_name |
target.resource.attribute.labels |
Zusammengeführt |
service_name_label |
target.resource.attribute.labels |
Zusammengeführt |
service_namespace_label |
target.resource.attribute.labels |
Zusammengeführt |
subnetwork_id_field |
target.user.attribute.labels |
Zusammengeführt |
| – | network.direction |
Konstante: OUTBOUND |
| – | network.ip_protocol |
Konstante: network.ip_protocol |
| – | network.sent_bytes |
Konstante: network.sent_bytes |
| – | principal.hostname |
Konstante: target.hostname |
| – | principal.location.city |
Konstante: target.location.city |
| – | principal.location.country_or_region |
Konstante: target.location.country_or_region |
| – | principal.location.name |
Konstante: target.location.name |
| – | principal.location.state |
Konstante: target.location.state |
| – | principal.namespace |
Konstante: target.namespace |
| – | principal.port |
Konstante: principal.port |
| – | security_result.severity |
Konstante: LOW |
| – | target.hostname |
Konstante: principal.hostname |
| – | target.location.city |
Konstante: principal.location.city |
| – | target.location.country_or_region |
Konstante: principal.location.country_or_re... |
| – | target.location.name |
Konstante: principal.location.name |
| – | target.location.state |
Konstante: principal.location.state |
| – | target.namespace |
Konstante: principal.namespace |
| – | target.port |
Konstante: -99 |
resource.labels.subnetwork_id |
target.user.attribute.labels |
Aus Änderungsprotokoll zugeordnet |
Änderungsprotokoll
Änderungsprotokoll für diesen Parser ansehen
Benötigen Sie weitere Hilfe? Antworten von Community-Mitgliedern und Google SecOps-Experten erhalten