Cloud Intelligence™Cloud Intelligence™

Cloud Intelligence™

Verwaiste Firewall-Regeln in Google Cloud aufspüren

By Ami MahloofJun 25, 20193 min read

Diese Seite ist auch in English, Español, Français, Italiano, 日本語 und Português verfügbar.

1 ypmxzr3hay0 4kvzxka5eq

Bei größeren Google-Cloud-Deployments mit Shared VPC verliert man leicht den Überblick über die Firewall-Regeln der eigenen Umgebung. So habe ich das Problem mit verwaisten Firewall-Regeln gelöst.

1 ypmxzr3hay0 4kvzxka5eqBild mit freundlicher Genehmigung von Information Age

Häufig ist es einfacher, die gesamte Firewall-Konfiguration zentral über ein Host-Projekt mit Shared VPCs zu verwalten.

Aktuell gibt es keinen einfachen Weg, die Regeln zu finden, die auf keine Instanz im Netzwerk angewendet werden. Sobald Sie an das Limit für die Anzahl der Firewall-Regeln stoßen, müssen Sie all diese ungenutzten bzw. verwaisten Regeln aufspüren und aufräumen.

Das Tool gcp-discover-orphaned-firewall-rules hilft Ihnen, verwaiste Firewall-Regeln zu identifizieren.

So funktioniert es:

Das Tool übernimmt die Host-Project-ID und ermittelt alle Shared-VPC-Projekte, die mit diesem Host-Projekt verknüpft sind. Anschließend liest es alle Firewall-Regeln (ausschließlich vom Typ Ingress) des Host-Projekts aus und erstellt eine neue Liste, von der die aktiven Regeln nach und nach entfernt werden.

Für jedes Projekt – einschließlich des Host-Projekts – erfasst das Tool die VM-Instanzen und prüft Network Tags sowie Service Accounts auf Übereinstimmungen mit den Target Tags der Firewall-Regeln. Bei einer Übereinstimmung wird die Regel aus der Liste entfernt; die verbleibende Liste wandert weiter zum nächsten Projekt, bis alle Projekte durchlaufen sind. Übrig bleibt eine Liste der verwaisten Firewall-Regeln.

Diese Liste wird tabellarisch im Terminal ausgegeben und zusätzlich als CSV-Datei gespeichert.

Das Tool selbst löscht keine Firewall-Regeln. Sie können dies entweder manuell erledigen oder die CSV-Datei in einem eigenen Skript zur Löschung der Regeln verarbeiten.

Installation:

Binary herunterladen oder das Repo klonen:

git clone [email protected]:doitintl/gcp-discover-orphaned-firewall-rules.git
cd gcp-discover-orphaned-firewall-rules
go mod download
go run main.go

Authentifizierung bei Google Cloud

Dieses Projekt nutzt die Google Application Default Credentials (ADC).

Sie können sich entweder mit folgendem Befehl im Terminal über Ihre gcloud-Standardkonfiguration anmelden:

gcloud auth application-default login

Oder per Service Account über folgende Umgebungsvariable:

export GOOGLE_APPLICATION_CREDENTIALS="/path/to/[FILE_NAME].json"

So führen Sie das Tool aus

Verfügbare Flags:

--debug Log-Level festlegen
--host string Host Project ID <erforderlich>
--running Nur laufende VM-Instanzen filtern
./discover-orphaned-rules-darwin-amd64 --host=host-project-123ewquiyt
INFO[2019-06-12T12:57:54+03:00] creating a new Compute API client
INFO[2019-06-12T12:57:54+03:00] host project: host-project-123ewquiyt
INFO[2019-06-12T12:57:56+03:00] firewall Rules for host project: host-project-123ewquiyt
INFO[0001] listing only TargetTags rules...
INFO[0001] number of TargetTags Rules: 3
INFO[2019-06-12T12:57:56+03:00] child project: deleted-project-1268522
WARN[0001] error listing VM instances googleapi: Error 404: Failed to find project deleted-project-1268522, notFound
WARN[2019-06-12T12:57:56+03:00] Could not check project deleted-project-1268522 for orphaned rules: googleapi: Error 404: Failed to find project deleted-project-1268522, notFound
INFO[2019-06-12T12:57:56+03:00] child project: resource-project-12iuyt2854
INFO[0001] making a list of orphaned rules with all rules (active rules will be removed from it)
resource-project-12iuyt2854, ghostresource-project-12iuyt2854, instance-target-demo-ruleresource-project-12iuyt2854, real-ruleINFO[0001] looking for orphaned rules in project..
INFO[0001] remove active rule from orphans list: instance-target-demo-rule
INFO[0001] 2 potential orphaned firewall rules to evalute...
INFO[2019-06-12T12:57:56+03:00] child project: resource-2-23ouyrwe9
INFO[0002] making a list of orphaned rules with all rules (active rules will be removed from it)
resource-2-23ouyrwe9, ghostami-resource-2-23ouyrwe9, instance-target-demo-ruleami-resource-2-23ouyrwe9, real-ruleINFO[0002] looking for orphaned rules in project..
INFO[0002] remove active rule from orphans list: instance-target-demo-rule
INFO[0002] 2 potential orphaned firewall rules to evalute...
INFO[2019-06-12T12:57:57+03:00] generating CSV file for orphaned rules...
INFO[0002] creating a new CSV file: orphaned-rules.csv
INFO[2019-06-12T12:57:57+03:00] done!

Zusätzlich wird eine CSV-Datei erzeugt:

rule-name,rule-tags
ghost,dead
real-rule,"real-1,real2,real-3"

Lust auf mehr? Schauen Sie in unseren Blog oder folgen Sie Ami auf Twitter.