Prévenez les erreurs de configuration du cloud dans HashiCorp Terraform avec Snyk IaC
13 mai 2021
0 minutes de lectureNous sommes ravis de vous présenter les nouvelles fonctionnalités de Snyk Infrastructure as Code (Snyk IaC), conçues pour accompagner les utilisateurs de Terraform dans la rédaction, la planification et l’application de leurs configurations. Avec Snyk IaC, bénéficiez de conseils immédiats sur les configurations de sécurité pendant que vous codez et analysez vos plans Terraform dans vos pipelines de déploiement afin de vous assurer que vos modifications et votre configuration complète sont sécurisées. Nous avons également apporté d’importantes améliorations aux performances pour prendre en charge les configurations comportant des milliers de fichiers, ainsi que des améliorations de sécurité pour préserver la confidentialité des informations sur votre environnement privé.
Éliminer les erreurs de configuration Terraform tout au long du cycle de vie
Grâce à ces nouvelles fonctionnalités de Snyk IaC, vous pouvez traiter Terraform comme n’importe quel autre code et déplacer la sécurité vers la gauche, afin d’intégrer la sécurité de la configuration à l’ensemble du cycle de vie Terraform. Snyk IaC détecte les erreurs de configuration dès la rédaction du code et fournit ainsi à vos ingénieurs des commentaires et des conseils immédiats, fondés sur les bonnes pratiques du cloud et du secteur, ainsi que sur les politiques de votre organisation. Lorsque les modules Terraform sont validés et que les tests automatisés commencent, Snyk IaC teste vos plans Terraform et vous donne une vue d’ensemble des modifications effectuées. Vous pouvez ainsi vous assurer que vos environnements seront sécurisés lors de leur déploiement et éviter les mauvaises surprises et les régressions après le déploiement.
Pourquoi analyser les plans Terraform pour détecter les erreurs de configuration du cloud
La CLI Snyk permet déjà aux utilisateurs d’analyser localement les fichiers Terraform et Kubernetes, ainsi que dans les pipelines CI/CD, pour obtenir des commentaires instantanés pendant le développement et dans les dépôts de code. Cette approche convient bien aux modifications individuelles. Mais si vous souhaitez examiner globalement toutes les modifications que vous êtes sur le point d’appliquer, y compris les effets des modules et des variables inclus, l’analyse du fichier de plan Terraform est la solution.
Avec cette version, le workflow de la CLI Snyk prend désormais en charge l’analyse d’un fichier de plan Terraform (tf-plan) afin de détecter si les modifications proposées introduiront de nouvelles vulnérabilités de sécurité dans votre infrastructure cloud actuelle. Pour vous montrer comment utiliser Snyk IaC tout au long de votre workflow Terraform, je vais parcourir un exemple basé sur le code du tutoriel Hashicorp Utiliser des équilibreurs de charge d’application pour les déploiements Blue-Green et Canary. Vous découvrirez ainsi un workflow local simple « rédiger, tester, planifier, tester, appliquer » avec Snyk IaC.
En savoir plus sur la stratégie de déploiement Blue-Green.
Détecter les erreurs de configuration du cloud dans le code source Terraform
Avant de commencer avec Snyk, j’avais déjà appliqué la configuration Terraform fournie par Hashicorp. Mon environnement est donc opérationnel et mon code Terraform est dans Git. Maintenant que je dispose de Snyk IaC, je veux vérifier s’il existe des problèmes préoccupants. J’ai donc intégré Snyk à mon dépôt GitHub et voici les résultats dans la console Snyk :

Aucun problème de gravité élevée n’est détecté, mais en ouvrant main.tf, je remarque que l’équilibreur de charge utilise HTTP au lieu de HTTPS. Il s’agit par défaut d’un problème à risque moyen, mais mon équipe de sécurité désapprouve ce choix. L’interface Snyk m’indique où se trouve le problème dans mon code, son impact et comment le résoudre :

Analyser la sécurité Terraform pendant le développement
J’ai modifié mon fichier Terraform comme le recommandait Snyk IaC pour que l’équilibreur de charge utilise HTTPS. Cela nécessite aussi de créer et d’utiliser un certificat, que j’ai donc ajouté à ma configuration. Avant d’envoyer mes modifications, je veux effectuer une vérification rapide pour m’assurer que la résolution du problème HTTPS n’en a pas créé de nouveaux. J’en profite également pour demander aux administrateurs de sécurité de désactiver l’alerte « L’équilibreur de charge est accessible depuis Internet », car mon équipe et moi n’avons pas besoin de la voir pour cette application exposée sur Internet. La désactivation est simple dans Snyk IaC. Je n’ai modifié que main.tf ; c’est donc ce que je vais tester localement avant de valider mes modifications :
Parfait ! J’ai résolu le problème HTTPS et mon équipe de sécurité a désactivé la vérification de l’exposition à Internet. Je n’ai donc plus aucun problème, du moins dans main.tf. C’est parfait. Il est temps de déployer mes modifications !
Analyser les erreurs de configuration Terraform dans vos pipelines
Avant d’appliquer mes modifications, je dois exécuter un plan Terraform pour savoir ce qui va changer. Comme le plan Terraform intègre les modifications de tous les modules ainsi que l’ensemble de nos variables, il nous permet de mieux évaluer l’impact de nos changements. C’est une autre occasion d’intégrer Snyk IaC à notre cycle de vie Terraform et de vérifier que mes modifications n’ont aucune incidence sur les autres modules de ma configuration. Dans l’exemple ci-dessous, j’exécute tout localement par souci de simplicité, mais vous pouvez facilement utiliser la CLI Snyk avec les outils CI de votre choix pour automatiser la planification et les tests :
On dirait que mes modifications sont correctes : aucun problème de sécurité ! Pourtant, une question me taraude. Jusqu’ici, je n’ai testé que les modifications des ressources (le comportement par défaut de Snyk IaC). Comme je sais que je n’ai modifié qu’un seul fichier (main.tf), ce résultat sans problème n’est pas surprenant. Toutefois, ma configuration Terraform était déjà appliquée et en cours d’exécution avant que je commence à utiliser Snyk IaC. J’aimerais donc vérifier toutes les valeurs planifiées pour voir non seulement mes nouvelles modifications, mais aussi les informations connues sur la configuration du déploiement déjà en cours d’exécution.
Améliorer la détection des erreurs de configuration du cloud en intégrant l’état Terraform
La nouvelle fonctionnalité tf-plan de Snyk IaC peut vérifier les valeurs planifiées. Il me suffit d’indiquer que je veux analyser ces valeurs avec l’option --scan=planned-values. Là encore, je recommande de le faire dans CI, mais j’utilise la CLI par souci de simplicité :
Oups ! Cette fois, nous avons 20 problèmes, dont quelques-uns de `gravité élevée` (pour alléger la sortie ci-dessus, je n’en ai conservé qu’un de gravité élevée et un de gravité moyenne).
Analyser Terraform en tenant compte des modules et des variables
Ce nouveau résultat m’indique qu’il me reste peut-être du travail à faire. Mais l’analyse du tf-plan révèle aussi un autre élément intéressant, au-delà de l’analyse des fichiers : ces problèmes de gravité élevée n’étaient pas apparus lors de l’analyse initiale de mon dépôt Git ni lors de l’analyse du fichier main.tf seul après sa modification.
Cela s’explique par le fait que notre configuration utilise plusieurs modules et variables de fournisseurs AWS. Lors de l’analyse du dépôt et du fichier seul, nous vérifions le fichier de manière statique : nous ne disposons donc que d’informations sur les ressources explicitement indiquées dans le fichier. En examinant le fichier seul, nous ne pouvons pas déterminer quelles ressources les modules vont créer. Le plan Terraform intègre toute la logique des modules et des variables inclus, ce qui nous donne une vue plus complète de notre configuration.
Un autre avantage de l’analyse des plans Terraform est que les outils de l’écosystème Terraform devraient également fonctionner facilement avec Snyk IaC. Certains de nos clients utilisent des outils comme Terraform Cloud, Terragrunt et Atlantis. Comme ces outils génèrent tous un plan Terraform standard, nous pouvons l’analyser avec Snyk IaC. Nous présenterons des exemples d’utilisation de certains de ces outils dans de prochains articles.
Protéger la confidentialité de vos données d’infrastructure et améliorer les performances
Comme le montre notre exemple pourtant simple, l’analyse d’un plan Terraform permet de détecter bien d’autres risques d’erreur de configuration qui peuvent apparaître au cours du cycle de vie habituel de l’IaC. Mais à cette étape, l’analyse implique aussi le traitement de données sensibles que vous ne souhaitez pas voir quitter votre réseau. C’est pourquoi, dans cette version, la CLI Snyk exécute les tests IaC localement. Seules vos données d’authentification Snyk et les métadonnées de la CLI nous sont envoyées. Aucune étape ni configuration particulière n’est nécessaire : cette fonctionnalité est intégrée à Snyk IaC et constitue désormais le mode de fonctionnement par défaut de la CLI Snyk pour l’IaC.
L’analyse locale présente un autre avantage : un gain de vitesse considérable ! C’est particulièrement appréciable pour nos clients qui ont des centaines, voire des milliers de fichiers dans un même dépôt Terraform. Nos propres tests montrent une amélioration des performances multipliée par 20 pour l’analyse de ces grands répertoires.
Commencez gratuitement avec Snyk IaC
Tout le monde peut essayer ces nouvelles fonctionnalités, y compris les utilisateurs de l’offre gratuite. Pour commencer, rien de plus simple :
Si vous n’avez pas encore de compte Snyk, inscrivez-vous gratuitement.
Installez la CLI Snyk. Si elle est déjà installée, vérifiez que vous disposez de la version 1.594.0 ou d’une version ultérieure pour profiter de ces fonctionnalités.
Analysez vos fichiers Terraform et Kubernetes.
La commande principale permettant d’analyser l’IaC avec ces nouvelles fonctionnalités est :
snyk iac test <path-to-file-or-folder>Pour en savoir plus sur les différentes options d’analyse prises en charge, consultez notre documentation ou la documentation de la CLI en exécutant :
snyk iac --helpPour analyser les plans Terraform, vous devez générer une sortie au format JSON à l’aide de
terraform show, comme dans les exemples ci-dessus et comme le documente Terraform.
Vos commentaires nous intéressent ! Si vous êtes déjà client Snyk, votre équipe de réussite client est un excellent interlocuteur pour nous faire part de vos commentaires sur le produit. Nous accueillons également les commentaires sur le forum de notre communauté Snyk de la part de tous.
Sécurisez votre infrastructure dès la source
Snyk automatise la sécurité et la conformité de l’IaC dans vos workflows, et détecte les ressources dont la configuration a dérivé ou qui sont manquantes.
