Cloud Intelligence™Cloud Intelligence™

Cloud Intelligence™

Identifier les règles de firewall orphelines sur Google Cloud

By Ami MahloofJun 25, 20193 min read

Cette page est également disponible en English, Deutsch, Español, Italiano, 日本語 et Português.

1 ypmxzr3hay0 4kvzxka5eq

Sur un déploiement Google Cloud d'envergure utilisant un VPC partagé, il est facile de perdre la trace des règles de firewall applicables à votre environnement. Voici comment j'ai résolu le problème des règles de firewall orphelines.

1 ypmxzr3hay0 4kvzxka5eqImage fournie par Information Age

Il est souvent plus simple de gérer toute la configuration du firewall via un projet Host avec des VPC partagés.

À ce jour, il n'existe pas de moyen simple de repérer les règles qui ne sont appliquées à aucune instance du réseau. Lorsque vous atteignez la limite du nombre de règles de firewall, il faut retrouver toutes ces règles inutilisées ou orphelines pour faire le ménage.

L'outil gcp-discover-orphaned-firewall-rules vous aide à identifier les règles de firewall orphelines.

Fonctionnement :

L'outil prend l'ID du projet Host et identifie tous les projets de VPC partagés qui y sont rattachés. Il récupère ensuite toutes les règles de firewall (de type ingress uniquement) du projet Host et constitue une nouvelle liste destinée à éliminer les règles actives.

Pour chaque projet (projet Host inclus), il découvre les instances de VM présentes et recherche les network tags et service accounts qui correspondent aux target tags des règles de firewall. En cas de correspondance, la règle est retirée de la liste d'élimination, puis la liste est transmise au projet suivant jusqu'à la fin de l'itération. Vous obtenez ainsi la liste des règles de firewall orphelines.

La liste s'affiche à l'écran sous forme de tableau et est également exportée dans un fichier CSV.

Cet outil ne supprime aucune règle de firewall : vous devez le faire manuellement ou utiliser le fichier CSV avec votre propre script de suppression.

Installation :

Téléchargez le binaire ou clonez le dépôt

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

Authentification auprès de Google Cloud

Ce projet s'appuie sur les Google Application Default Credentials (ADC).

Vous pouvez vous authentifier depuis le terminal avec votre configuration gcloud par défaut :

gcloud auth application-default login

Ou via un service account, à l'aide de la variable d'environnement suivante :

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

Exécution

Flags disponibles :

--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!

Un fichier CSV est également généré :

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

Envie d'en lire davantage ? Consultez notre blog ou suivez Ami sur Twitter.