Checkov vérifie votre code d'infrastructure
Mise à jour :
Dans un contexte où les attaques et les vulnérabilités sont de plus en plus fréquentes, il est essentiel de garantir que notre code d’infra est sécurisé dès le départ. Lorsque nous utilisons l’Infrastructure as Code (IaC) pour déployer des ressources cloud, les erreurs de configuration peuvent mener à des failles importantes. C’est là qu’intervient Checkov. Cet outil open-source scanne les fichiers IaC pour détecter des vulnérabilités et assurer que les déploiements respectent les bonnes pratiques de sécurité, tout en s’intégrant facilement dans nos flux de travail existants.
Fonctionnalités
Checkov propose plus de 1000 politiques intégrées couvrant les meilleures pratiques de sécurité et de conformité pour AWS, Azure et Google Cloud. Il analyse divers formats comme Terraform, CloudFormation, Kubernetes, Dockerfiles et bien plus encore. Checkov scanne également les fichiers de workflows CI/CD tels que GitHub Actions, GitLab CI, et Circle CI.
Il prend en charge les politiques basées sur la conscience contextuelle, grâce à une analyse en mémoire basée sur des graphes. Vous pouvez créer des politiques en Python ou YAML et identifier des secrets et des AWS credentials dans des environnements sensibles. Les résultats sont exportables en JSON, SARIF, JUnit XML, ou CSV et accompagnés de guides de remédiation.
Checkov permet également la gestion des faux positifs avec des suppressions inline ou via CLI, ainsi que l’évaluation des paramètres des fournisseurs Terraform pour réguler les ressources IaaS, PaaS ou SaaS.
Installation
L’installation de Checkov est simple et rapide. Il peut être installé directement depuis pip, le gestionnaire de paquets Python, avec la commande suivante :
Pour les utilisateurs de macOS, il est également possible de l’installer via Homebrew en utilisant la commande :
Utilisation
L’utilisation de Checkov en ligne de commande est à la fois simple et flexible, permettant de vérifier rapidement vos fichiers d’Infrastructure as Code (IaC).
Analyses
Après l’installation, vous pouvez lancer des analyses sur différents types de fichiers et dossiers.
Pour analyser un répertoire Terraform :
Pour vérifier un fichier Kubernetes :
Checkov prend également en charge d’autres formats comme les templates CloudFormation ou les Dockerfiles et permet d’analyser simultanément plusieurs fichiers dans un même projet.
Lors de l’utilisation en ligne de commande, vous pouvez également exclure certains fichiers ou désactiver des politiques de sécurité spécifiques. Par exemple, pour exclure un fichier particulier :
Il est aussi possible d’exclure des règles précises en utilisant l’option
--skip-check
. Cela permet de personnaliser les analyses en fo
nction de vos
besoins sans affecter l’intégralité du projet. Par exemple :
Voici un exemple d’analyse :
Comme vous le voyez, pour mauvaise pratique détectée, checkov indique comment la corriger et fourni un lien contenant plus de d’explications.
Génération de Rapports
Une fois l’analyse effectuée avec Checkov, les résultats sont présentés sous forme de rapports détaillés. Ces rapports identifient les mauvaises configurations et les vulnérabilités dans votre code IaC. Par défaut, les résultats apparaissent dans la console avec une explication pour chaque règle violée, comprenant un identifiant de la règle, une description du problème et le fichier ou la ressource affectée.
Formats de Sortie Disponibles
Pour des intégrations automatisées ou des suivis plus précis, Checkov permet d’exporter les rapports dans différents formats :
-
JSON : Utilisé pour des analyses approfondies ou pour intégrer avec d’autres outils. Par exemple :
-
SARIF : Format standardisé pour les rapports de vulnérabilités, souvent utilisé avec des outils de sécurité et de développement tels que GitHub ou Azure DevOps.
-
JUnit XML : Ce format est utile pour intégrer les résultats dans des systèmes de test comme Jenkins.
Interprétation des Résultats
Le rapport distingue trois types de résultats :
- Passé (PASSED) : Les ressources qui respectent les politiques de sécurité.
- Échoué (FAILED) : Les ressources où une mauvaise configuration a été détectée.
- Ignoré (SKIPPED) : Les ressources ou règles ignorées via des commentaires inline ou des exclusions spécifiques.
Checkov permet également d’ajouter des annotations inline dans votre code pour marquer des règles comme ignorées lorsqu’une exception est justifiée. Cela aide à éviter les faux positifs, tout en gardant une documentation claire de la raison pour laquelle certaines règles ont été ignorées.
Gestion des Faux Positifs
Dans certains cas, il peut arriver que Checkov identifie des problèmes qui ne sont pas pertinents pour votre environnement. Pour ces situations, Checkov offre la possibilité de marquer des règles spécifiques comme ignorées au sein du fichier source, en utilisant des commentaires spéciaux. Par exemple, pour ignorer la règle CKV_AWS_20 dans un fichier Terraform :
En résumé, la flexibilité des rapports de Checkov permet de s’adapter aux exigences de sécurité de votre projet, en fournissant des rapports détaillés tout en offrant des options d’exportation pour des analyses automatisées.
Configuration avec un fichier YAML
Checkov permet de se configurer via un fichier de configuration YAML.
Par défaut, il recherche un fichier .checkov.yaml
ou .checkov.yml
dans
plusieurs emplacements, comme le répertoire de travail actuel ou le répertoire
utilisateur. Pour spécifier un fichier de configuration personnalisé, vous
pouvez utiliser l’option suivante en ligne de commande :
Checkov peut aussi générer un fichier de configuration avec la commande
--create-config
, ce qui permet de sauvegarder les arguments utilisés lors
d’une exécution.
Voici un exemple de fichier généré :
Pour visualiser toutes les options et savoir d’où elles proviennent (commande, fichier de configuration ou variable d’environnement), vous pouvez utiliser :
Cela permet d’afficher les arguments, les variables d’environnement et les valeurs par défaut utilisées lors de l’exécution de Checkov, ce qui est utile pour s’assurer que la configuration est bien chargée et appliquée.
Création de Politiques Personnalisées
Checkov vous permet de créer et d’intégrer vos propres politiques de sécurité personnalisées, ce qui est essentiel pour répondre à des besoins spécifiques que les règles prédéfinies ne couvrent pas. Cela est particulièrement utile lorsque vous avez des normes internes ou des exigences particulières à respecter dans vos infrastructures cloud.
Structure des Politiques
Les politiques personnalisées peuvent être écrites en Python ou définies en YAML. Elles suivent une structure simple : une règle identifie une mauvaise configuration et Checkov l’applique ensuite à vos fichiers Infrastructure as Code (IaC).
Exemple de Politique en Python
Voici un exemple simple de règle en Python. Imaginons que vous vouliez vérifier que toutes les instances AWS EC2 utilisent un type spécifique de machine.
- Créez un fichier Python pour définir la règle :
Dans cet exemple, la règle vérifie que le type de machine d’instance AWS est
bien t2.micro
. Si ce n’est pas le cas, elle échoue.
Pour utiliser cette règle, exécutez Checkov avec l’option
--external-checks-dir
en pointant vers le répertoire contenant votre règle
personnalisée :
Exemple de Politique en YAML
Si vous préférez écrire des politiques en YAML, Checkov supporte également ce format pour définir des règles simples. Par exemple, vous pouvez créer une règle YAML pour vérifier que toutes les ressources S3 dans un fichier Terraform sont configurées avec un cryptage.
Créez un fichier YAML avec une structure de règle de sécurité :
Cette règle vérifie l’existence de la configuration de cryptage côté serveur sur les buckets S3.
Gestion des Politiques Personnalisées
Après avoir défini vos règles, elles s’intègrent parfaitement aux analyses standards de Checkov. Vous pouvez les combiner avec les politiques prédéfinies et ajuster la configuration pour choisir les règles à activer ou désactiver, en fonction des exigences du projet. Les politiques personnalisées vous permettent de contrôler précisément ce qui est vérifié lors de l’analyse et d’adapter Checkov à votre environnement spécifique.
Cela vous donne la flexibilité nécessaire pour assurer la conformité aux normes internes et renforcer la sécurité de vos infrastructures, sans dépendre uniquement des règles par défaut.
Checkov vous permet donc de surveiller efficacement vos configurations et d’automatiser la sécurité tout au long du développement, en s’adaptant à vos besoins spécifiques via la ligne de commande.
Conclusion
L’utilisation de Checkov dans vos projets d’Infrastructure as Code permet de renforcer la sécurité dès les premières étapes du développement, en identifiant et en corrigeant automatiquement les mauvaises configurations avant leur déploiement. Grâce à son intégration fluide dans les pipelines CI/CD, ses politiques de sécurité personnalisables et ses analyses approfondies, Checkov devient un outil incontournable pour les équipes DevOps souhaitant améliorer la sécurité sans ajouter de complexité. En automatisant ces vérifications, il permet de garantir des déploiements sécurisés et conformes aux bonnes pratiques.
En résumé, Checkov offre une solution complète et flexible pour sécuriser vos infrastructures cloud, tout en s’adaptant aux besoins spécifiques de chaque projet.
Plus d’infos
- Site officiel de Checkov : Retrouvez toutes les informations sur l’outil et ses fonctionnalités. checkov.io ↗
- Documentation officielle : Guide complet pour l’installation, l’utilisation et la création de politiques personnalisées. Documentation Checkov ↗
- Projet GitHub : Accédez au dépôt officiel pour consulter le code source, les mises à jour et contribuer au projet. GitHub Checkov ↗