
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.
Image 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.gitcd gcp-discover-orphaned-firewall-rulesgo mod downloadgo run main.goAuthentification 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 loginOu 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 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!Un fichier CSV est également généré :
rule-name,rule-tagsghost,deadreal-rule,"real-1,real2,real-3"Envie d'en lire davantage ? Consultez notre blog ou suivez Ami sur Twitter.