
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.
Bild 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.gitcd gcp-discover-orphaned-firewall-rulesgo mod downloadgo run main.goAuthentifizierung 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 loginOder 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 clientINFO[2019-06-12T12:57:54+03:00] host project: host-project-123ewquiytINFO[2019-06-12T12:57:56+03:00] firewall Rules for host project: host-project-123ewquiytINFO[0001] listing only TargetTags rules...INFO[0001] number of TargetTags Rules: 3INFO[2019-06-12T12:57:56+03:00] child project: deleted-project-1268522WARN[0001] error listing VM instances googleapi: Error 404: Failed to find project deleted-project-1268522, notFoundWARN[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, notFoundINFO[2019-06-12T12:57:56+03:00] child project: resource-project-12iuyt2854INFO[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-ruleINFO[0001] 2 potential orphaned firewall rules to evalute...INFO[2019-06-12T12:57:56+03:00] child project: resource-2-23ouyrwe9INFO[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-ruleINFO[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.csvINFO[2019-06-12T12:57:57+03:00] done!Zusätzlich wird eine CSV-Datei erzeugt:
rule-name,rule-tagsghost,deadreal-rule,"real-1,real2,real-3"Lust auf mehr? Schauen Sie in unseren Blog oder folgen Sie Ami auf Twitter.