Logging von Firewallregeln

Durch das Logging der Firewallregeln können Sie die Auswirkungen Ihrer Firewallregeln im Blick behalten, prüfen und analysieren. Sie können beispielsweise feststellen, ob eine Firewallregel, die Traffic abweisen soll, wie vorgesehen funktioniert. Logging von Firewallregeln ist auch nützlich, wenn Sie ermitteln müssen, wie viele Verbindungen von einer bestimmten Firewallregel betroffen sind.

Sie aktivieren das Logging von Firewallregeln für jede Firewallregel, deren Verbindungen Sie protokollieren möchten. Die Option des Loggings von Firewallregeln kann für jede Firewallregel unabhängig von der Aktion (allow oder deny) oder der Richtung (eingehend oder ausgehend) genutzt werden.

Logging von Firewallregeln protokolliert den Traffic von und zu VM-Instanzen von Compute Engine. Dies umfasst Google Cloud-Produkte, die auf Compute Engine-VMs basieren, z. B. GKE-Cluster (Google Kubernetes Engine) und Instanzen für flexible App Engine-Umgebungen.

Wenn Sie das Logging von Firewallregeln aktivieren, erstellt Google Cloud jedes Mal, wenn die Regel Traffic zulässt oder ablehnt, einen sogenannten Verbindungseintrag. Sie können sich diese Einträge in Cloud Logging ansehen und Logs an ein beliebiges Ziel exportieren, das vom Cloud Logging-Export unterstützt wird.

Jeder Verbindungseintrag enthält die folgenden Angaben: IP-Adressen der Quelle und des Ziels, Protokoll, Ports, Datum und Uhrzeit sowie einen Verweis auf die für den Traffic gültige Firewallregel.

Das Firewallregel-Logging ist sowohl für VPC-Firewallregeln als auch für hierarchische Firewallrichtlinien verfügbar.

Informationen zum Anzeigen von Logs finden Sie unter Logging zu Firewallregeln verwenden.

Spezifikationen

Für das Logging von Firewallregeln gelten die folgenden Spezifikationen:

Logging-Beispiele

Logeinträge werden immer generiert, wenn auf den Traffic eine Firewallregel mit aktiviertem Logging zutrifft. Ein Paketfluss kann insgesamt mehrere Logeinträge generieren. Aus der Perspektive einer bestimmten VM kann jedoch höchstens ein Logeintrag erzeugt werden, wenn für die geltende Firewallregel Logging aktiviert ist.

Die folgenden Beispiele zeigen die Funktionsweise von Firewalllogs.

Beispiel "ausgehenden Traffic ablehnen"

In diesem Beispiel:

  • Berücksichtigt wird der Traffic zwischen VM-Instanzen im VPC-Netzwerk example-net im Projekt example-proj.
  • Betroffene VM-Instanzen:
    • VM1 in Zone us-west1-a mit IP-Adresse 10.10.0.99 im west-subnet (Region us-west1).
    • VM2 in Zone us-east1-b mit IP-Adresse 10.20.0.99 im east-subnet (Region us-east1).
  • Regel A: Eine Firewallregel "ausgehenden Traffic ablehnen" bezieht sich auf alle Instanzen im Netzwerk, das Ziel 10.20.0.99 (VM2) und den TCP-Port 80.
    • Logging ist für die Regel aktiviert.
  • Regel B: Eine Firewallregel "eingehenden Traffic zulassen" bezieht sich auf alle Instanzen im Netzwerk, die Quelle 10.10.0.99 (VM1) und den TCP-Port᠎ 80.
    • Logging ist für die Regel ebenfalls aktiviert.

Die folgenden gcloud-Befehle können zum Erstellen der Firewallregeln verwendet werden:

  • Regel A: Firewallregel "ausgehenden Traffic ablehnen" für TCP 80, anwendbar auf alle Instanzen, Ziel 10.20.0.99:

    gcloud compute firewall-rules create rule-a \
        --network example-net \
        --action deny \
        --direction egress \
        --rules tcp:80 \
        --destination-ranges 10.20.0.99/32 \
        --priority 10 \
        --enable-logging
    
  • Regel B: Firewallregel „eingehenden Traffic zulassen“ für TCP 80, anwendbar auf alle Instanzen, Quelle 10.10.0.99:

    gcloud compute firewall-rules create rule-b \
        --network example-net \
        --action allow \
        --direction ingress \
        --rules tcp:80 \
        --source-ranges 10.10.0.99/32 \
        --priority 10 \
        --enable-logging
    
VM1-zu-VM2-Verbindung.
VM1-zu-VM2-Verbindung (zum Vergrößern klicken).

Szenario: VM1 versucht, am TCP-Port 80 eine Verbindung zu VM2 herzustellen. Die folgenden Firewallregeln werden protokolliert:

  • Für Regel A wird ein Logeintrag aus der Perspektive von VM1 generiert, wenn VM1 versucht, eine Verbindung zu 10.20.0.99 (VM2) herzustellen.
  • Da Regel A den Traffic blockiert, wird Regel B nie berücksichtigt. Daher gibt es aus Sicht von VM2 keinen Logeintrag für Regel B.

Im folgenden Beispiel wird der Firewall-Logeintrag generiert.

Feld Werte
Verbindung src_ip=10.10.0.99
src_port=[EPHEMERAL_PORT]
dest_ip=10.20.0.99
dest_port=80
protocol=6
disposition DENIED
rule_details reference = "network:example-net/firewall:rule-a"
priority = 10
action = DENY
destination_range = 10.20.0.99/32
ip_port_info = tcp:80
direction = egress
instance project_id="example-proj"
instance_name=VM1
region=us-west1
zone=us-west1-a
vpc project_id="example-proj"
vpc_name=example-net
subnetwork_name=west-subnet
remote_instance project_id="example-proj"
instance_name=VM2
region=us-east1
zone=us-east1-b
remote_vpc project_id="example-proj"
vpc_name=example-net
subnetwork_name=east-subnet
remote_location Keine Informationen: Dieses Feld wird nur verwendet, wenn sich das Ziel außerhalb Ihres VPC-Netzwerks befindet.

Beispiel "ausgehenden Traffic zulassen, eingehenden Traffic zulassen"

In diesem Beispiel:

  • Berücksichtigt wird der Traffic zwischen VM-Instanzen im VPC-Netzwerk example-net im Projekt example-proj.
  • Betroffene VM-Instanzen:
    • VM1 in Zone us-west1-a mit IP-Adresse 10.10.0.99 im west-subnet (Region us-west1).
    • VM2 in Zone us-east1-b mit IP-Adresse 10.20.0.99 im east-subnet (Region us-east1).
  • Regel A: Eine Firewallregel "ausgehenden Traffic zulassen" bezieht sich auf alle Instanzen im Netzwerk, das Ziel 10.20.0.99 (VM2) und den TCP-Port 80.
    • Logging ist für die Regel aktiviert.
  • Regel B: Eine Firewallregel "eingehenden Traffic zulassen" bezieht sich auf alle Instanzen im Netzwerk, die Quelle 10.10.0.99 (VM1) und den TCP-Port᠎ 80.
    • Logging ist für die Regel ebenfalls aktiviert.

Die folgenden gcloud-Befehle können zum Erstellen der beiden Firewallregeln verwendet werden:

  • Regel A: Firewallregel "ausgehenden Traffic zulassen" für TCP 80, anwendbar auf alle Instanzen, Ziel 10.20.0.99 (VM2):

    gcloud compute firewall-rules create rule-a \
        --network example-net \
        --action allow \
        --direction egress \
        --rules tcp:80 \
        --destination-ranges 10.20.0.99/32 \
        --priority 10 \
        --enable-logging
    
  • Regel B: Firewallregel "eingehenden Traffic zulassen" für TCP 80, anwendbar auf alle Instanzen, Quelle 10.10.0.99 (VM1):

    gcloud compute firewall-rules create rule-b \
        --network example-net \
        --action allow \
        --direction ingress \
        --rules tcp:80 \
        --source-ranges 10.10.0.99/32 \
        --priority 10 \
        --enable-logging
    
VM1-zu-VM2-Verbindung.
VM1-zu-VM2-Verbindung (zum Vergrößern klicken).

Szenario: VM1 versucht, am TCP-Port 80 eine Verbindung zu VM2 herzustellen. Die folgenden Firewallregeln werden protokolliert:

  • Für Regel A wird ein Logeintrag aus der Perspektive von VM1 generiert, wenn VM1 eine Verbindung zu 10.20.0.99 (VM2) herstellt.
  • Für Regel B wird ein Logeintrag aus der Perspektive von VM2 generiert, wenn VM2 eingehende Verbindungen von 10.10.0.99 (VM1) akzeptiert.

Im folgenden Beispiel wird der von VM1 gemeldete Firewall-Logeintrag generiert.

Feld Werte
Verbindung src_ip=10.10.0.99
src_port=[EPHEMERAL_PORT]
dest_ip=10.20.0.99
dest_port=80
protocol=6
disposition ZUGELASSEN
rule_details reference = "network:example-net/firewall:rule-a"
priority = 10
action = ALLOW
destination_range = 10.20.0.99/32
ip_port_info = tcp:80
direction = egress
instance project_id="example-proj"
instance_name=VM1
region=us-west1
zone=us-west1-a
vpc project_id="example-proj"
vpc_name=example-net
subnetwork_name=west-subnet
remote_instance project_id="example-proj"
instance_name=VM2
region=us-east1
zone=us-east1-b
remote_vpc project_id="example-proj"
vpc_name=example-net
subnetwork_name=east-subnet
remote_location Keine Informationen: Dieses Feld wird nur verwendet, wenn sich das Ziel außerhalb Ihres VPC-Netzwerks befindet.

Im folgenden Beispiel wird der von VM2 gemeldete Firewall-Logeintrag generiert.

Feld Werte
Verbindung src_ip=10.10.0.99
src_port=[EPHEMERAL_PORT]
dest_ip=10.20.0.99
dest_port=80
protocol=6
disposition ZUGELASSEN
rule_details reference = "network:example-net/firewall:rule-b"
priority = 10
action = ALLOW
source_range = 10.10.0.99/32
ip_port_info = tcp:80
direction = ingress
Instanz project_id="example-proj"
instance_name=VM2
region=us-east1
zone=us-east1-b
vpc project_id="example-proj"
vpc_name=example-net
subnetwork_name=east-subnet
remote_instance project_id="example-proj"
instance_name=VM1
region=us-west1
zone=us-west1-a
remote_vpc project_id="example-proj"
vpc_name=example-net
subnetwork_name=west-subnet
remote_location Keine Informationen: Dieses Feld wird nur verwendet, wenn sich das Ziel außerhalb Ihres VPC-Netzwerks befindet.

Beispiel "eingehender Traffic aus dem Internet"

In diesem Beispiel:

  • Berücksichtigt wird der Traffic von einem System außerhalb des VPC-Netzwerks example-net zu einer VM-Instanz in diesem Netzwerk. Dieses Netzwerk befindet sich im Projekt example-proj.
  • Das System im Internet hat die IP-Adresse 203.0.113.114.
  • VM1 in Zone us-west1-a hat die IP-Adresse 10.10.0.99 im west-subnet (Region us-west1).
  • Regel C: Eine Firewallregel "eingehenden Traffic zulassen" bezieht sich auf alle Instanzen im Netzwerk, eine Quelle mit einer beliebigen IP-Adresse 0.0.0.0/0 und den TCP-Port᠎ 80.
    • Logging ist für die Regel aktiviert.
  • Regel D: Die Firewallregel "ausgehenden Traffic ablehnen" bezieht sich auf alle Instanzen im Netzwerk, ein Ziel mit einer beliebigen IP-Adresse 0.0.0.0/0 und alle Protokolle.
    • Logging ist für die Regel ebenfalls aktiviert.

Die folgenden gcloud-Befehle können zum Erstellen der Firewallregeln verwendet werden:

  • Regel C: Regel "eingehenden Traffic zulassen" für TCP 80, anwendbar auf alle Instanzen, beliebige Quelle:

    gcloud compute firewall-rules create rule-c \
        --network example-net \
        --action allow \
        --direction ingress \
        --rules tcp:80 \
        --source-ranges 0.0.0.0/0 \
        --priority 10 \
        --enable-logging
    
  • Regel D: Regel "ausgehenden Traffic ablehnen" für alle Protokolle, anwendbar auf alle Instanzen, beliebiges Ziel:

    gcloud compute firewall-rules create rule-d \
        --network example-net \
        --action deny \
        --direction egress \
        --rules all \
        --destination-ranges 0.0.0.0/0 \
        --priority 10 \
        --enable-logging
    
Internet-zu-VM-Verbindung.
Internet-zu-VM-Verbindung (zum Vergrößern klicken).

Szenario: Das System mit der IP-Adresse 203.0.113.114 versucht, eine Verbindung zu VM1 am TCP-Port 80 herzustellen. Folgendes geschieht:

  • Für Regel C wird ein Logeintrag aus der Perspektive von VM1 generiert, wenn VM1 Traffic von 203.0.113.114 annimmt.
  • Trotz Regel D darf VM1 auf die eingehende Anfrage antworten, weil Google Cloud-Firewallregeln zustandsorientiert sind. Wenn die eingehende Anfrage zulässig ist, können zugehörige Antworten durch keine Regel für ausgehenden Traffic blockiert werden.
  • Da Regel D nicht zutrifft, wird sie nie berücksichtigt. Daher gibt es für Regel D keinen Logeintrag.

Im folgenden Beispiel wird der Firewall-Logeintrag generiert.

Feld Werte
Verbindung src_ip=203.0.113.114
src_port=[EPHEMERAL_PORT]
dest_ip=10.10.0.99
dest_port=80
protocol=6
disposition ZUGELASSEN
rule_details reference = "network:my-vpc/firewall:rule-c"
priority = 10
action = ALLOW
source_range = 0.0.0.0/0
ip_port_info = tcp:80
direction = ingress
instance project_id="example-proj"
instance_name=VM1
region=us-west1
zone=us-west1-a
vpc project_id="example-proj"
vpc_name=example-net
subnetwork_name=west-subnet
remote_location continent
country
region
city

Firewall-Logformat

Je nach den Spezifikationen wird in Cloud Logging für jede Firewallregel mit aktiviertem Logging ein Logeintrag erstellt, wenn die Regel auf Traffic an oder von VM-Instanzen zutrifft. Logeinträge werden im JSON-Nutzlastfeld eines Logging-LogEntry erfasst.

Logdatensätze umfassen Basisfelder – die wichtigsten Felder jedes Logeintrags – sowie Metadatenfelder, die zusätzliche Informationen enthalten. Sie können steuern, ob Metadatenfelder enthalten sind. Wenn Sie sie weglassen, können Sie Speicherkosten sparen.

Einige Logfelder unterstützen Werte, die auch Felder sind. Diese Felder können mehrere Daten in einem bestimmten Feld enthalten. Das Feld connection hat beispielsweise das Format IpConnection. Dieses Format enthält die Quell- und Ziel-IP-Adresse sowie Protokoll und Port in einem einzigen Feld. Diese Felder werden in den folgenden Tabellen beschrieben.

Feld Beschreibung Feldtyp: Basis- oder optionale Metadaten
Verbindung IpConnection
5-Tupel, das die Quell- und Ziel-IP-Adresse, den Quell- und Zielport und das IP-Protokoll dieser Verbindung beschreibt.
Basis
disposition String
Gibt an, ob die Verbindung ALLOWED oder DENIED war.
Basis
rule_details RuleDetails
Details zur Regel, die auf diese Verbindung angewendet wurde.
Feld rule_details.reference Basis
Weitere Felder für Regeldetails Metadaten
instance InstanceDetails
Details zur VM-Instanz. In einer freigegebenen VPC-Konfiguration entspricht project_id der ID des Dienstprojekts.
Metadaten
vpc VpcDetails
Details zum VPC-Netzwerk. In einer freigegebenen VPC-Konfiguration entspricht die project_id der des Hostprojekts.
Metadaten
remote_instance InstanceDetails
Wenn der Remote-Endpunkt der Verbindung eine VM in Compute Engine war, wird dieses Feld mit VM-Instanzdetails gefüllt.
Metadaten
remote_vpc VpcDetails
Wenn der Remote-Endpunkt der Verbindung eine VM in einem VPC-Netzwerk war, wird dieses Feld mit den Netzwerkdetails gefüllt.
Metadaten
remote_location GeographicDetails
Wenn der Remote-Endpunkt der Verbindung außerhalb des VPC-Netzwerks lag, enthält dieses Feld verfügbare Standortmetadaten.
Metadaten

IpConnection

Feld Typ Beschreibung
src_ip String IP-Adresse der Quelle: Wenn die Quelle eine Compute Engine-VM ist, ist src_ip entweder die primäre interne IP-Adresse oder eine Adresse in einem Alias-IP-Bereich der Netzwerkschnittstelle einer VM. Die externe IP-Adresse wird nicht angegeben. Logging zeigt die IP-Adresse der VM aus Sicht der VM im Paketheader. Dieselbe IP-Adresse wird angezeigt, wenn Sie einen TCP-Dump für die VM ausführen.
src_port Ganzzahl Quellport
dest_ip String IP-Adresse des Ziels: Wenn das Ziel eine Google Cloud-VM ist, ist dest_ip entweder die primäre interne IP-Adresse oder eine Adresse in einem Alias-IP-Bereich der Netzwerkschnittstelle einer VM. Die externe IP-Adresse wird nicht angegeben, auch wenn sie zur Herstellung der Verbindung verwendet wurde.
dest_port Ganzzahl Zielport
protocol Ganzzahl IP-Protokoll der Verbindung

RuleDetails

Feld Typ Beschreibung
Referenz String Verweis auf die Firewallregel; Format:
"network:{network name}/firewall:{firewall_name}"
Priorität Ganzzahl Die Priorität für die Firewallregel
Aktion String ALLOW oder DENY
source_range[ ] String Liste der Quellbereiche, für die die Firewallregel gilt
destination_range[ ] String Liste der Zielbereiche, für die die Firewallregel gilt
ip_port_info[ ] IpPortDetails Liste der IP-Protokolle und anwendbaren Portbereiche für Regeln
direction String Die Richtung, die die Firewallregel anwendet (eingehender oder ausgehender Traffic)
source_tag[ ] String Liste aller Quelltags, auf die die Firewallregel angewendet wird
target_tag[ ] String Liste aller Zieltags, auf die die Firewallregel angewendet wird
source_service_account[ ] String Liste aller Quelldienstkonten, auf die die Firewallregel angewendet wird
target_service_account[ ] String Liste aller Zieldienstkonten, auf die die Firewallregel angewendet wird
source_region_code[ ] String Liste aller Quell-Ländercodes, auf die die Firewallregel angewendet wird.
destination_region_code[ ] String Liste aller Ziel-Ländercodes, auf die die Firewallregel angewendet wird.
source_fqdn[ ] String Liste aller Quelldomainnamen, auf die die Firewallregel angewendet wird.
destination_fqdn[ ] String Liste aller Zieldomainnamen, auf die die Firewallregel angewendet wird.
source_threat_intelligence[ ] String Liste aller Namen von Threat Intelligence-Quellisten, auf die die Firewallregel angewendet wird.
destination_threat_intelligence[ ] String Liste aller Namen von Threat Intelligence-Ziellisten, auf die die Firewallregel angewendet wird.
source_address_groups[ ] String Liste aller Quelladressgruppen, auf die die Firewallregel angewendet wird.
destination_address_groups[ ] String Liste aller Zieladressgruppen, auf die die Firewallregel angewendet wird.

IpPortDetails

Feld Typ Beschreibung
ip_protocol String IP-Protokoll, für das die Firewallregel gilt. "ALL", wenn sie für alle Protokolle gilt.
port_range[ ] String Liste der anwendbaren Portbereiche für Regeln, zum Beispiel 8080-9090.

InstanceDetails

Feld Typ Beschreibung
project_id String ID des Projekts, das die VM enthält
vm_name String Instanzname der VM
Region String Region der VM
Zone String Zone der VM

VpcDetails

Feld Typ Beschreibung
project_id String ID des Projekts, das das Netzwerk enthält
vpc_name String Netzwerk, in dem die VM ausgeführt wird
subnetwork_name String Subnetz, in dem die VM ausgeführt wird

GeographicDetails

Feld Typ Beschreibung
continent String Kontinent für externe Endpunkte
Land String Land für externe Endpunkte
Region String Region für externe Endpunkte
Ort String Stadt für externe Endpunkte

Nächste Schritte