Comment scanner le code de votre infrastructure (IaC) à la recherche d'erreurs ?

par Korben -

Si vous avez pour habitude de déployer du code dans Docker, Kubernetes, Terraform (pour AWS, Google Cloud Platform ou encore Azure)…etc., vous connaissez peut-être l’IaC.

IaC pour “infrastructure as code” consiste à gérer votre infrastructure technique à l’aide de fichiers de configuration. En gros plutôt que de créer ou modifier manuellement ou au travers de scripts, la configuration de vos serveurs, vous codez tout simplement l’infrastructure dont vous avez besoin dans des fichiers descriptifs de type IaC.

Ce fichier peut ensuite être placé sur un Git ou tout autre outil de versioning. Et c’est au moment de la création de l’infrastructure ou de sa modification qu’il sera utilisé pour automatiser tout le processus. Il existe différents services permettant de déployer de l’IaC parmi lesquels :

  • AWS CloudFormation
  • Ansible
  • Azure Resource Manager
  • Chef
  • Google Cloud Deployment Manager
  • Puppet
  • Rex
  • SaltStack
  • Terraform
  • Vagrant

Cette pratique déjà mise en place dans pas mal de boites permet tout d’abord d’aller beaucoup plus vite dans les déploiements de prod, de QA, de staging…etc. Évidemment, comme on est sur du code qui est versionné, on peut suivre chaque changement au niveau de la config et revenir en arrière ou corriger plus efficacement d’éventuels problèmes de paramétrage.

Et surtout, ça permet d’éviter les étapes manuelles, donc les erreurs humaines et s’assurer que la config est identique ou correcte partout.

Toutefois, les fichiers IaC peuvent parfois contenir des erreurs. Et c’est là qu’entre en jeu Checkov.

Checkov est un outil d’analyse de code permettant de rechercher dans les fichiers IaC, les erreurs de configuration susceptibles d’entraîner des problèmes de sécurité ou de conformité. Checkov s’assure également de la conformité des standards en vigueur dans le domaine (ceux de CIS et AWS notamment)

Checkov comprend plus de 750 règles prédéfinies pour vérifier les problèmes de configuration courants. Et bien sûr, vous pouvez également y ajouter vos propres règles spécifiques si besoin.

Et vous pouvez bien sûr intégrer Checkov dans vos process CI/CD Jenkins, Github Actions, Gitlab…etc

Cet outil supporte le code de déploiement IaC des plateformes :

  • Terraform (pour AWS, GCP & Azure)
  • CloudFormation
  • Azure Resource Manager (ARM)
  • Kubernetes
  • Docker

Pour installer Checkov vous pouvez utiliser pip :

pip install checkov

Puis scanner un fichier spécifique comme ceci :

checkov --file /user/korben/example.tf

Ou tout un répertoire :

checkov --directory /user/path/to/iac/code

Pour en savoir plus, c’est par ici que ça se passe.

Merci à Laurent