Retour aux actualités
    DevSecOps14 min de lecture

    Sécurité Infrastructure as Code (IaC) : sécuriser Terraform, Ansible et CloudFormation

    Guide complet pour sécuriser votre Infrastructure as Code : scanning Terraform avec Checkov et Trivy, secrets management, pipelines CI/CD sécurisés et conformité cloud.

    L'Infrastructure as Code (IaC) a transformé la façon dont les équipes cloud provisionnent et gèrent leurs ressources. Terraform, Ansible, Pulumi, CloudFormation : ces outils permettent de définir toute une infrastructure en quelques lignes de code, d'automatiser le déploiement et d'assurer la reproductibilité des environnements. Mais cette puissance a une contrepartie : une mauvaise configuration dans un fichier Terraform peut déployer des ressources cloud exposées, des groupes de sécurité trop permissifs ou des buckets S3 publics à grande échelle. La sécurité IaC — parfois appelée "Shift Left Security" — consiste à détecter ces erreurs avant le déploiement, dans le pipeline CI/CD.

    Pourquoi l'IaC crée-t-elle des risques de sécurité ?

    Les erreurs de configuration à grande échelle

    Le risque principal de l'IaC est l'amplification des erreurs. Une mauvaise configuration d'un Security Group dans un module Terraform réutilisé peut se propager à des dizaines d'environnements simultanément. Un bucket S3 configuré avec acl = "public-read" dans un template déploie automatiquement des données publiquement accessibles dans toutes les régions où il est utilisé. La rapidité de l'IaC amplifie autant les bonnes pratiques que les erreurs.

    Les secrets dans le code

    L'un des problèmes les plus fréquents : des secrets (clés API, mots de passe, tokens) codés en dur dans les fichiers IaC et commités dans des dépôts Git. Même si le dépôt est privé, ces secrets sont souvent exposés dans les logs CI/CD, les plans Terraform, les artifacts de build. Un scan de l'historique Git avec des outils comme truffleHog ou git-secrets révèle systématiquement des secrets dans les dépôts de la plupart des organisations.

    Les outils de scanning IaC de sécurité

    Checkov : l'outil de référence

    Checkov est un scanner IaC open source développé par Prisma Cloud (Palo Alto Networks). Il analyse les fichiers Terraform, CloudFormation, Kubernetes, Dockerfile et ARM Templates pour détecter les misconfigurations de sécurité. Il dispose de plus de 1 000 règles prêtes à l'emploi couvrant AWS, Azure et GCP. Son intégration dans les pipelines CI/CD (GitHub Actions, GitLab CI, Jenkins) est simple et sa sortie peut bloquer un merge en cas de failles critiques.

    Exemple de règles Checkov pour Terraform AWS : CKV_AWS_18 vérifie que le logging S3 est activé, CKV_AWS_20 vérifie que les buckets S3 ne sont pas publics, CKV_AWS_23 vérifie que les Security Groups n'autorisent pas le trafic SSH entrant depuis 0.0.0.0/0.

    Trivy : scanner polyvalent

    Trivy (Aqua Security) est un scanner de sécurité polyvalent qui couvre non seulement l'IaC (Terraform, CloudFormation, Kubernetes) mais aussi les images Docker, les packages applicatifs (CVE) et les fichiers de configuration. Sa facilité d'installation (brew install trivy ou image Docker) en fait un outil très populaire dans les équipes DevSecOps. Il peut être exécuté localement avant chaque commit.

    tfsec et KICS

    tfsec est un scanner dédié à Terraform avec une excellente couverture AWS, Azure et GCP. KICS (Keeping Infrastructure as Code Secure) de Checkmarx est un scanner multi-framework open source qui supporte plus de 24 frameworks IaC. Ces deux outils complètent Checkov selon les besoins spécifiques.

    Intégrer le scanning IaC dans le pipeline CI/CD

    Architecture recommandée

    La stratégie "Shift Left" consiste à exécuter les scans à plusieurs niveaux : dans l'IDE du développeur (plugins VS Code, IntelliJ) pour un feedback immédiat, dans le pre-commit hook pour bloquer les commits avec des secrets, dans la pull request CI pour bloquer le merge en cas de violations critiques, et dans le pipeline de déploiement avant le terraform apply.

    Exemple de configuration GitHub Actions avec Checkov :

    Dans votre workflow YAML, ajoutez une étape qui installe Checkov via pip, puis exécute checkov -d . --framework terraform --soft-fail-on MEDIUM --hard-fail-on HIGH,CRITICAL. Cette configuration bloque le pipeline si une vulnérabilité HIGH ou CRITICAL est détectée, mais autorise les MEDIUM pour éviter de bloquer les équipes sur des faux positifs mineurs.

    Gestion des faux positifs

    Les scanners IaC génèrent des faux positifs. Configurez des suppressions ciblées avec des commentaires inline dans votre Terraform : #checkov:skip=CKV_AWS_18:Logging géré par CloudTrail central. Ces suppressions doivent être révisées périodiquement et documentées avec la justification.

    Gérer les secrets dans l'IaC

    Ne jamais stocker de secrets dans l'IaC

    La règle absolue : aucun secret ne doit être stocké dans les fichiers IaC ou commité dans Git. Utilisez des références à des services de secrets management : data "aws_secretsmanager_secret_version" pour AWS Secrets Manager, data "vault_generic_secret" pour HashiCorp Vault, var.database_password passé via des variables d'environnement CI/CD. Les valeurs sensibles dans les outputs Terraform doivent être marquées sensitive = true pour être masquées dans les logs.

    HashiCorp Vault pour la gestion des secrets

    HashiCorp Vault est la solution de référence pour la gestion des secrets dans les environnements cloud et IaC. Il offre la rotation automatique des secrets, des politiques d'accès granulaires, un audit log complet et une intégration native avec Terraform via le provider Vault. Pour les équipes cloud, Vault est souvent complémentaire aux services natifs (AWS Secrets Manager, Azure Key Vault).

    Sécurité des pipelines Terraform eux-mêmes

    Le pipeline qui exécute terraform apply dispose généralement de permissions très élevées sur le cloud cible. Sa compromission est un risque majeur. Les bonnes pratiques : utiliser des rôles IAM dédiés avec le principe de moindre privilège, activer le MFA sur les comptes de service CI/CD, stocker le state Terraform dans un backend distant sécurisé (S3 + DynamoDB pour le locking, avec chiffrement et versioning activés), restreindre l'accès en écriture au state, et auditer régulièrement les permissions du pipeline.

    L'utilisation de solutions dédiées comme Spacelift, Atlantis ou Terraform Cloud améliore la gouvernance des runs Terraform : reviews obligatoires avant apply, historique des plans, RBAC sur les workspaces et intégration native des scanners de sécurité.

    Besoin d'un accompagnement en cybersécurité ?

    CloudSecure vous aide à sécuriser votre infrastructure cloud et à protéger vos données.

    Contactez-nous