Introduction

L'infrastructure en tant que code (IaC) est souvent traitée comme un script plutôt que comme un logiciel. Cela peut conduire à des erreurs catastrophiques à grande échelle. Pour éviter cela, il est essentiel de mettre en place une approche structurée de test pour l'IaC.

Contexte Technique

Le test de l'IaC est fondamentalement différent du test de code d'application. Il faut interagir avec de vraies API cloud qui ont des limites de latence, des limites de taux et des implications de coût. Pour résoudre ce problème, il est nécessaire d'avoir une approche structurée qui va des vérifications rapides et peu coûteuses aux validations lentes et coûteuses.

La base de la pyramide de test doit être l'analyse statique. Ces tests sont rapides car ils n'exigent pas de connexion au fournisseur ou de compte cloud. Ils analysent le code comme du texte ou un arbre de syntaxe abstrait. Les outils tels que TFLint et Checkov peuvent être utilisés pour cette étape.

Analyse et Implications

Au-delà de l'analyse statique, il est nécessaire de procéder à des tests de sécurité. Des outils comme Checkov ou Tfsec peuvent scanner le code pour les erreurs de configuration courantes, telles que les buckets S3 avec un accès public en lecture ou les groupes de sécurité autorisant le SSH (port 22) à partir de 0.0.0.0/0.

La mise en place d'une pyramide de test pour l'IaC peut aider à prévenir les vulnérabilités de sécurité et les erreurs de logique avant que les ressources cloud ne soient provisionnées. Cela peut également réduire la charge cognitive des réviseurs et empêcher les erreurs évidentes de atteindre l'API cloud.

Perspective

Pour aller plus loin, il est possible d'utiliser des outils tels que Terratest pour procéder à des tests d'intégration. Cela permet de traiter l'infrastructure comme une boîte noire et de valider le plan de données réel, et non seulement le plan de contrôle. Enfin, il est essentiel de surveiller les limites et les prochaines étapes de la pyramide de test pour garantir que l'IaC soit testé de manière approfondie et efficace.