Cloud Intelligence™Cloud Intelligence™

Cloud Intelligence™

Come scovare le regole firewall orfane su Google Cloud

By Ami MahloofJun 25, 20193 min read

Questa pagina è disponibile anche in English, Deutsch, Español, Français, 日本語 e Português.

1 ypmxzr3hay0 4kvzxka5eq

Quando il deployment su Google Cloud in shared VPC cresce, tenere traccia di tutte le regole firewall del proprio ambiente diventa complicato. Ecco come ho risolto il problema delle regole firewall orfane.

1 ypmxzr3hay0 4kvzxka5eqImmagine per gentile concessione di Information Age

Spesso conviene gestire l'intera configurazione del firewall da un Host project con shared VPC.

Ad oggi non c'è un modo semplice per ottenere l'elenco delle regole non applicate ad alcuna istanza della rete: quando si raggiunge il limite massimo di regole firewall, bisogna individuare tutte quelle inutilizzate o orfane per ripulire l'ambiente.

Lo strumento gcp-discover-orphaned-firewall-rules aiuta proprio a identificarle.

Come funziona:

Lo strumento parte dall'id dell'host project e recupera tutti i progetti shared VPC collegati. Estrae poi tutte le regole firewall (solo di tipo ingress) dell'host project e ne crea un nuovo elenco da cui rimuovere progressivamente le regole attive.

Per ciascun progetto (compreso l'host project) individua le istanze VM presenti e confronta network tag e service account con i target tag delle regole firewall: in caso di corrispondenza, la regola viene rimossa dall'elenco e quest'ultimo passa al progetto successivo, fino a esaurire l'iterazione. Quel che resta è l'elenco delle regole firewall orfane.

L'elenco viene stampato a schermo in formato tabellare ed esportato in un file CSV.

Lo strumento non elimina alcuna regola firewall: la cancellazione va fatta manualmente oppure tramite uno script personalizzato che sfrutti il file CSV.

Come installarlo:

scarica il binario oppure clona il repository

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

Autenticazione su Google Cloud

Il progetto si appoggia alle Google Application Default Credentials (ADC).

È possibile autenticarsi dal terminale con la configurazione predefinita di gcloud tramite il comando:

gcloud auth application-default login

Oppure tramite un service account, impostando la variabile d'ambiente:

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

Come eseguirlo

Flag disponibili:

--debug Set log level
--host string Host Project ID <Required>
--running Filter only running VM instances
./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!

Lo script genera anche un file CSV:

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

Vuole leggere altri articoli? Visiti il nostro blog oppure segua Ami su Twitter.