Analyse de sécurité de l’infrastructure sous forme de code
Analysez les fichiers Terraform, CloudFormation et les graphiques Helm avec des outils de sécurité IaC (Checkov, tfsec) afin de détecter les erreurs de configuration avant leur mise en production.
Analyse de sécurité de l’infrastructure sous forme de code est une leçon Security+ Academy gratuite sur CoddyKit. Ceci est la leçon 4 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Security+ Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Security+ Academy comprend 4 leçons au total.
Présentation de la sécurité de l’infrastructure en tant que code
Les outils d’infrastructure en tant que code (IaC) comme Terraform, AWS CloudFormation, Ansible et Helm permettent de définir l’infrastructure dans des fichiers de configuration gérés par un système de contrôle de version. Cela apporte d’immenses avantages — reproductibilité, auditabilité et automatisation — mais aussi un risque de sécurité critique : les erreurs de configuration dans les fichiers IaC produisent une infrastructure non sécurisée à grande échelle. Un seul module Terraform mal configuré et déployé dans 50 environnements crée simultanément 50 systèmes vulnérables. L’analyse de sécurité IaC remédie à ce problème en vérifiant les fichiers de configuration avant leur application, ce qui déplace la sécurité en amont, dans le flux de travail des développeurs.
Erreurs de configuration IaC courantes
Les outils d’analyse de sécurité recherchent les erreurs de configuration IaC les plus courantes observées dans les environnements cloud réels : des compartiments S3 dont l’accès public est activé ou qui ne sont pas chiffrés au repos ; des groupes de sécurité comportant des règles entrantes 0.0.0.0/0 sur des ports sensibles (22, 3389, 1433) ; des bases de données dépourvues de chiffrement ou accessibles publiquement ; des politiques IAM utilisant des caractères génériques * pour les ressources ou les actions ; CloudTrail désactivé dans une région ; des clés KMS sans rotation des clés ; et des équilibreurs de charge utilisant des écouteurs HTTP au lieu de HTTPS. Ces résultats correspondent étroitement aux vérifications effectuées par des référentiels de sécurité cloud comme CIS AWS Foundations.
# Dangerous Terraform: public S3 bucket + no encryption
resource 'aws_s3_bucket' 'data' {
bucket = 'my-data-bucket'
# Missing: server_side_encryption_configuration
# Missing: aws_s3_bucket_public_access_block
}Checkov : les politiques sous forme de code pour l’IaC
Checkov (développé par Bridgecrew/Prisma Cloud) est un outil populaire d’analyse statique open source pour l’IaC qui prend en charge Terraform, CloudFormation, les manifestes Kubernetes, les graphiques Helm et les fichiers Dockerfile. Il fournit plus de 1 000 politiques intégrées, associées aux référentiels CIS, au GDPR, à SOC 2 et à HIPAA. L’exécution de checkov -d . analyse tous les fichiers IaC du répertoire actuel et produit un rapport à code couleur indiquant les vérifications réussies, échouées et ignorées, avec les chemins des ressources et des conseils de correction. Checkov peut être intégré aux chaînes CI/CD afin de bloquer les déploiements lorsque des vérifications CRITICAL échouent.
# Install and run Checkov on Terraform files
pip install checkov
checkov -d ./terraform/ --framework terraform
# Fail CI pipeline on HIGH severity findings
checkov -d ./terraform/ --check HIGH --hard-fail-on HIGHtfsec : analyseur de sécurité Terraform
tfsec (qui fait désormais partie de la fonctionnalité d’analyse IaC de Trivy) est un analyseur de sécurité spécialement conçu pour Terraform. Il comprend en profondeur la syntaxe HCL, ce qui lui permet de suivre les valeurs entre les modules et les fichiers de variables. Contrairement aux analyseurs plus simples, tfsec peut détecter des erreurs de configuration lorsque le problème s’étend sur plusieurs fichiers — par exemple, une règle de groupe de sécurité qui semble sûre lorsqu’elle est examinée isolément, mais qui est associée à une ressource définie dans un autre fichier. tfsec produit des résultats avec des niveaux de gravité (CRITICAL, HIGH, MEDIUM, LOW), des identifiants CWE et des liens directs vers la documentation de correction, afin de permettre aux développeurs d’agir concrètement sur ces résultats.
# Install tfsec and scan Terraform directory
brew install tfsec
tfsec ./terraform/ --format json
# Or use Trivy for unified IaC + container scanning
trivy config ./terraform/Secrets dans les fichiers IaC
L’un des problèmes de sécurité IaC les plus CRITICAL est la présence de secrets codés en dur dans les fichiers de configuration : mots de passe, clés d’API, clés privées TLS et chaînes de connexion aux bases de données envoyés dans Git. Comme les dépôts IaC sont souvent partagés entre plusieurs équipes et conservés dans l’historique du contrôle de version, un secret envoyé ne serait-ce qu’une seule fois est en pratique compromis de manière permanente (l’historique Git est immuable). Des outils comme Checkov, detect-secrets, git-secrets et TruffleHog recherchent les motifs correspondant à des secrets. La solution consiste à utiliser des variables d’entrée provenant de variables d’environnement ou de coffres de secrets, et à ne jamais coder de valeurs en dur.
# Bad: hardcoded password in Terraform
resource 'aws_db_instance' 'main' {
password = 'supersecret123' # NEVER DO THIS
}
# Good: read from variable, inject from secrets manager
variable 'db_password' { sensitive = true }
resource 'aws_db_instance' 'main' {
password = var.db_password
}Politiques sous forme de code : OPA et Sentinel
Les frameworks de Policy as Code (PaC) permettent aux équipes de sécurité d’écrire des règles personnalisées sous forme de code et de les appliquer de manière cohérente. Open Policy Agent (OPA) avec Conftest permet d’écrire des politiques Rego qui valident n’importe quelles données structurées — plans Terraform, manifestes Kubernetes, valeurs Helm — dans les chaînes CI/CD. HashiCorp Sentinel est intégré à Terraform Enterprise et Cloud et permet d’appliquer au moment de la planification des politiques telles que « tous les compartiments S3 doivent avoir le chiffrement activé », en bloquant toute application qui enfreindrait la politique. Ces outils permettent de formaliser les exigences de sécurité sous forme de code et de les gérer avec un contrôle de version, au même titre que l’infrastructure qu’elles régissent.
# Example Conftest OPA policy: deny public S3
# deny[msg] {
# input.resource.aws_s3_bucket[name]
# input.resource.aws_s3_bucket_public_access_block == null
# msg := sprintf('Bucket %v lacks public access block', [name])
# }Détection de la dérive : configuration et réalité
Une dérive de configuration se produit lorsque l’état réel de l’infrastructure déployée s’écarte de la définition IaC, souvent parce qu’une personne a effectué une modification manuelle dans la console cloud. Une règle de groupe de sécurité ajoutée manuellement pour débloquer « temporairement » un développeur devient une faille permanente. Les outils de détection de dérive comparent en continu l’état souhaité (les fichiers IaC) à l’état réellement déployé et signalent les écarts. AWS Config, la détection de dérive de Terraform Cloud et les outils CSPM (Prisma Cloud, Wiz) proposent tous cette fonctionnalité. Les erreurs de configuration de sécurité introduites par des modifications dans la console sont ainsi détectées avant que les attaquants ne les découvrent.
# Terraform: detect drift between state and actual cloud resources
terraform plan -refresh-only
# If output shows changes, someone modified infrastructure outside TerraformInfrastructure immuable et GitOps
Une infrastructure immuable signifie que les serveurs et les configurations ne sont jamais modifiés sur place : les changements créent plutôt de nouvelles ressources (de nouvelles AMI ou images de conteneurs) qui remplacent les anciennes. Associée à GitOps (où toutes les modifications de l’infrastructure doivent passer par une demande de fusion Git, ce qui déclenche les processus d’analyse IaC et d’approbation), cette approche élimine par construction la dérive de configuration : si quelque chose ne peut pas être modifié manuellement, cela ne peut pas dériver. Des outils comme ArgoCD pour Kubernetes et Atlantis pour Terraform mettent en œuvre des processus GitOps dans lesquels tout écart déclenche une réconciliation ou une alerte automatique.
Différence entre SAST et l’analyse IaC
L’analyse de sécurité IaC est parfois confondue avec le SAST (Static Application Security Testing), mais ces deux approches ciblent des artefacts différents. Le SAST analyse le code source des applications (Python, Java, JavaScript) à la recherche de vulnérabilités telles que les injections SQL ou les dépassements de tampon. L’analyse IaC examine les fichiers de configuration de l’infrastructure à la recherche d’erreurs de configuration de sécurité cloud : aucun code applicatif n’est concerné. Une chaîne DevSecOps complète inclut les deux : le SAST sur le code applicatif et l’analyse IaC sur les fichiers d’infrastructure. Les deux s’exécutent dans la chaîne CI/CD avant tout déploiement. Certaines plateformes unifiées (Snyk IaC, Prisma Cloud) combinent l’analyse des applications et celle de l’infrastructure dans un seul outil.
Intégrer l’analyse IaC à la chaîne CI/CD
Une analyse de sécurité IaC efficace doit être automatisée et obligatoire, et non facultative. Une intégration CI/CD classique consiste à exécuter Checkov et tfsec à chaque demande de fusion ; à faire échouer la chaîne si des résultats CRITICAL sont présents ; à publier les résultats sous forme de commentaires dans la demande de fusion pour informer les développeurs ; à tenir à jour une liste des résultats supprimés, accompagnés de justifications documentées ; et à effectuer chaque nuit une analyse des ressources déployées afin de détecter les dérives. Des crochets de prévalidation utilisant des outils comme pre-commit avec Checkov peuvent détecter les problèmes avant même que le code n’atteigne la chaîne. Il est important de gérer les faux positifs : les développeurs qui voient trop de résultats sans pertinence finissent par les ignorer.
# GitHub Actions: IaC security scanning
# - name: Run Checkov IaC Scan
# uses: bridgecrewio/checkov-action@master
# with:
# directory: terraform/
# framework: terraform
# soft_fail: false # fail PR on findings
# output_format: sarif # upload to GitHub Security tabSécurité de l’état Terraform
Le fichier d’état de Terraform (terraform.tfstate) contient l’inventaire complet de toutes les ressources gérées et inclut souvent en clair des valeurs de sortie sensibles, telles que des mots de passe de bases de données, des clés privées TLS et des identifiants de clés d’accès IAM. Les fichiers d’état ne doivent jamais être envoyés dans Git. Utilisez plutôt un backend distant (AWS S3 avec verrouillage DynamoDB, Terraform Cloud ou un état géré par GitLab) avec le chiffrement côté serveur activé. L’accès au backend d’état doit être strictement contrôlé via IAM : toute personne pouvant lire le fichier d’état peut inventorier tous les détails de l’infrastructure et potentiellement extraire les secrets qu’il contient.
# Secure Terraform remote backend
terraform {
backend 's3' {
bucket = 'my-terraform-state'
key = 'prod/terraform.tfstate'
region = 'us-east-1'
encrypt = true
kms_key_id = 'arn:aws:kms:us-east-1:123:key/abc'
dynamodb_table = 'terraform-state-lock'
}
}Vérification rapide
Vérifiez votre compréhension des concepts de CompTIA Security+ (SY0-701) abordés dans cette leçon.
Récapitulatif de la leçon
Dans cette leçon, vous avez appris que les erreurs de configuration IaC, telles que les compartiments S3 publics, les groupes de sécurité ouverts et les secrets codés en dur, sont automatiquement détectées par des outils comme Checkov et tfsec avant le déploiement ; que les frameworks de politiques sous forme de code (OPA/Conftest, HashiCorp Sentinel) permettent d’imposer les exigences de sécurité personnalisées d’une organisation au moyen de contrôles automatisés dans la chaîne ; et que les fichiers d’état Terraform doivent être stockés dans des backends distants chiffrés avec des contrôles d’accès stricts, car ils peuvent contenir des informations sensibles sur les ressources. Nous allons maintenant étudier le cycle de vie des APT et la manière dont les menaces avancées persistent dans les réseaux.
Questions Fréquemment Posées
La leçon « Analyse de sécurité de l’infrastructure sous forme de code » est-elle gratuite ?
Oui — le texte complet de « Analyse de sécurité de l’infrastructure sous forme de code » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Security+ Academy, passe à CoddyKit PRO. Le cours Security+ Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Analyse de sécurité de l’infrastructure sous forme de code » ?
Analysez les fichiers Terraform, CloudFormation et les graphiques Helm avec des outils de sécurité IaC (Checkov, tfsec) afin de détecter les erreurs de configuration avant leur mise en production. Tu pratiques Security+ Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer Security+ Academy ?
Aucune expérience préalable n'est requise. Security+ Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 4 sur 4.
Combien de temps prend la leçon « Analyse de sécurité de l’infrastructure sous forme de code » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon Security+ Academy ?
Oui. Chaque leçon Security+ Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Sécurité des conteneurs : renforcement des images et protection à l’exécution
- Sécurité Kubernetes : RBAC, politiques réseau et sécurité des pods
- Sécurité des environnements sans serveur et des fonctions
- Analyse de sécurité de l’infrastructure sous forme de code