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:
- Sie können das Logging von Firewallregeln nur für Regeln in einem VPC-Netzwerk (Virtual Private Cloud) aktivieren. Legacy-Netzwerke werden nicht unterstützt.
- Das Logging von Firewallregeln erfasst nur TCP- und UDP-Verbindungen. Sie können zwar Firewallregeln erstellen, die für andere Protokolle gültig sind, aber ihre Verbindungen können nicht im Log erfasst werden. Sie können zum Schreiben weiterer Protokolle auch die Paketspiegelung nutzen.
- Das Logging von Firewallregeln kann nicht für die implizierte Regel zum Ablehnen von eingehendem Traffic und die implizierte Regel zum Zulassen von ausgehendem Traffic aktiviert werden.
- Logeinträge werden aus der Perspektive von VMs geschrieben. Logeinträge werden nur erstellt, wenn Logging für eine Firewallregel aktiviert ist und wenn die Regel für Traffic gilt, der an die VM oder von der VM gesendet wird. Einträge werden entsprechend den für Verbindungs-Logging gültigen Beschränkungen auf Best-Effort-Basis erstellt.
- Die Anzahl der Verbindungen, die in einem bestimmten Intervall protokolliert werden können, basiert auf dem Maschinentyp.
- Änderungen an Firewallregeln können in VPC-Audit-Logs eingesehen werden.
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 Projektexample-proj
. - Betroffene VM-Instanzen:
- VM1 in Zone
us-west1-a
mit IP-Adresse10.10.0.99
imwest-subnet
(Regionus-west1
). - VM2 in Zone
us-east1-b
mit IP-Adresse10.20.0.99
imeast-subnet
(Regionus-east1
).
- VM1 in Zone
- 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
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 Projektexample-proj
. - Betroffene VM-Instanzen:
- VM1 in Zone
us-west1-a
mit IP-Adresse10.10.0.99
imwest-subnet
(Regionus-west1
). - VM2 in Zone
us-east1-b
mit IP-Adresse10.20.0.99
imeast-subnet
(Regionus-east1
).
- VM1 in Zone
- 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
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 Projektexample-proj
. - Das System im Internet hat die IP-Adresse
203.0.113.114
. - VM1 in Zone
us-west1-a
hat die IP-Adresse10.10.0.99
imwest-subnet
(Regionus-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
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 Google Threat Intelligence-Quellisten, auf die die Firewallregel angewendet wird. |
destination_threat_intelligence[ ] | String | Liste aller Namen von Google 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
- Mehr zum Einrichten von Logging und zur Anzeige von Logs finden Sie unter Firewallregel-Logging verwenden.
- Informationen zur Verwendung Ihrer Firewallregeln finden Sie unter Firewall Insights.
- Mehr zum Speichern, Suchen, Analysieren und Beobachten von Logdaten und Ereignissen finden Sie unter Cloud Logging.
- Informationen zum Weiterleiten von Logeinträgen finden Sie unter Senken konfigurieren und verwalten.