Fermer

septembre 22, 2021

Utilisation des tests d'analyse statique pour l'infrastructure en tant que code


Pour ceux qui travaillent dans le domaine de l'assurance qualité (QA), l'un des défis les plus complexes d'aujourd'hui est de tester l'infrastructure en tant que code (IaC). En conséquence, les déploiements IaC ne sont pas toujours testés correctement, ou parfois pas du tout, ce qui entraîne de multiples problèmes pour de nombreuses organisations.

Alors que les tests logiciels ont toujours existé, les tests d'automatisation liés à l'infrastructure n'existent que depuis quelques années. , les entreprises doivent donc garantir la sécurité et la robustesse de leur IaC sans avoir besoin de déployer.

Qu'est-ce que l'infrastructure en tant que code ?

L'infrastructure en tant que code (IaC), également connue sous le nom d'infrastructure programmable ou définie par logiciel, est la pratique de codification et de gestion de l'infrastructure informatique en tant que logiciel plutôt que matériel. Il permet aux développeurs et aux équipes d'exploitation de gérer et de surveiller les ressources grâce à l'automatisation, éliminant ainsi le besoin de configurer manuellement les périphériques matériels et les systèmes d'exploitation.

IaC est similaire à la programmation de scripts en ce sens que les organisations peuvent l'utiliser pour automatiser les processus informatiques. Cependant, son langage plus avancé permet une plus grande polyvalence et flexibilité dans les processus d'approvisionnement et de déploiement. Construit sur des plates-formes telles que Terraform, Kubernetes et Helm, IaC permet aux ingénieurs logiciels de travailler avec des environnements reproductibles qui facilitent la collaboration et permettent l'idempotence et la convergence.

Avec cette infrastructure basée sur du code, les équipes de développement peuvent facilement automatiser les processus, tester les itérations, appliquer les pratiques de contrôle de version et d'approuver le code de production, tout comme les pratiques de conception de logiciels. Outre son alignement étroit sur les pratiques DevOps, ces avantages font de l'IaC un moyen rapide, efficace et cohérent de contrôler l'infrastructure. divers outils de gestion de configuration et d'automatisation dont il a besoin. Selon le nombre de composants, d'environnements et de déploiements qui affectent l'infrastructure, le test IaC est une considération sérieuse pour de nombreuses entreprises. Lorsque des erreurs se produisent, elles peuvent avoir un impact rapide sur les performances d'une application. Il est donc essentiel d'effectuer des tests complets avant et après la sortie dans les environnements de production.

Il existe plusieurs méthodes de test pour maintenir la qualité du code dans IaC.

  • Tests d'analyse statique[

    s'assurent que le code adhère aux normes de l'industrie et détecte les faiblesses dans le code source qui pourraient conduire à des vulnérabilités. Ces tests ont lieu avant le déploiement.

  • Les tests dynamiques visent à découvrir si les ressources et les composants d'infrastructure déployés fonctionnent ensemble comme prévu dans les environnements de production.
  • L'ingénierie du chaos permet aux développeurs d'identifier les défaillances avant qu'elles ne deviennent des pannes. en testant de manière proactive comment une plate-forme réagit en cas de stress, nous pouvons reconnaître et corriger les bogues avant qu'il ne soit trop tard.

Pour les besoins de cet article, nous nous concentrerons exclusivement sur les tests d'analyse statique.

Méthodes de test d'analyse statique pour IaC.

Les tests statiques permettent des tests IaC sans déploiement, ce qui les rend rentables, rapides et sécurisés tout en permettant l'utilisation des meilleures pratiques.

Explorons les meilleures approches et outils disponibles pour effectuer ces types de tests.

Commandes intégrées

Avant d'adopter pleinement des bibliothèques ou des outils de test IaC externes, il est préférable de tirer parti de leurs commandes intégrées pour vérifier la syntaxe. Dans Terraform, par exemple, les commandes « fmt » et « valider » aident à identifier les problèmes de format et de syntaxe. Et pour Helm, nous avons la commande « lint », qui nous permet de vérifier si les modèles Helm sont bien formés.

Après avoir vérifié la syntaxe, vous avez le choix entre plusieurs chemins de test.

Linters

Plusieurs des outils open source sont disponibles pour améliorer IaC en analysant le code source et en recherchant des problèmes, mais chacun a ses avantages et ses inconvénients. principaux fournisseurs de cloud comme AWS, Azure et GCP. Il applique également les meilleures pratiques et les conventions de dénomination tout en avertissant les développeurs de la syntaxe déconseillée et des déclarations inutilisées. . Il permet également aux testeurs de garantir les meilleures pratiques de syntaxe pour des technologies telles que Kubernetes.

  • KubeLinter trace un chemin vers un graphique et exécute une série de tests pour vérifier que le graphique est bien formé. Ces linters analysent les manifestes Kubernetes ou les graphiques Helm pour s'assurer que le code suit les meilleures pratiques, avec un accent particulier sur la préparation et la sécurité de la production. code et identifier les sources de vulnérabilités. En ce qui concerne les outils SAST open source, trois candidats viennent immédiatement à l'esprit.

    Checkov est une excellente option pour SAST, car il comprend 131 règles pour les benchmarks Azure CIS, 172 pour AWS et 7 pour Google Cloud Platform. En outre, il permet aux testeurs d'analyser terraform, plan terraform, formation de nuages, K8S, fichiers Docker et modèles ARM. Trivyquant à lui, utilise le scanner de sécurité tfsec pour analyser les fichiers Terraform, Kubernetes et Docker et prend en charge Azure, AWS, Cloudstack et Google. Enfin, Anchore se concentre sur la recherche de vulnérabilités dans les fichiers Docker et les registres de conteneurs, bien qu'il s'agisse principalement d'un outil payant et non entièrement open source.

    Policy as Code

    Un peu comme Infrastructure as Code, Policy as Code est le concept d'écriture de code pour gérer et automatiser les politiques. En représentant les politiques de cette manière, les développeurs peuvent adopter les meilleures pratiques de développement logiciel éprouvées telles que le contrôle de version, les tests automatisés et le déploiement automatisé.

    Fondé sur Open Policy Agent (OPA), la norme de la Cloud Native Foundation pour la politique en tant que code, ]Conftest est un utilitaire qui donne aux testeurs QA le pouvoir d'écrire des tests sur des données de configuration structurées tout en analysant plusieurs technologies telles que Terraform, Kubernetes, Docker, etc. Avec lui, nous pouvons créer des politiques non incluses dans les analyses SAST ou développer des politiques pour les normes de chiffrement internes, car il prend en charge presque toutes les technologies IaC.

    Ainsi, avec Linters, SAST et Policy as Code à notre disposition, nous pouvons pour résoudre le défi de tester IaC avant le déploiement, garantissant que les choses se passent beaucoup plus facilement en production.

    Restez à l'écoute de nos blogs de suivi couvrant les tests dynamiques et l'ingénierie du chaos.

    Consultez nos postes ouverts ici et #GrowWithUs

    À propos de l'auteur

    Holmes Giovanny Salazar Osorio est un ingénieur de développement logiciel en test. Il a plus de 7 ans d'expérience dans la conception et le développement de stratégies de test pour des projets internationaux, en utilisant des méthodologies agiles et les meilleures pratiques. Actuellement, Holmes travaille au sein de l'équipe d'ingénierie qualité pour créer une plate-forme SaaS hautement évolutive axée sur les fonctions de gestion des performances commerciales et de gestion de patrimoine.

    Plus de cet auteur




  • Source link