Introduction
tfsec est un scanner de sécurité par analyse statique pour votre code Terraform.
Conçu pour être exécuté localement et dans vos pipelines de CI, ses résultats conviviaux pour les développeurs et ses vérifications entièrement documentées permettent de détecter et de corriger les problèmes aussi rapidement et efficacement que possible.
tfsec adopte une approche centrée sur le développeur pour analyser vos modèles Terraform ; en utilisant l'analyse statique et une intégration profonde avec l'analyseur HCL officiel, il garantit que les problèmes de sécurité peuvent être détectés avant que vos changements d'infrastructure ne prennent effet.
Comment ça fonctionne ?
Le HCL (HashiCorp Langage) est le langage de configuration de HashiCorp. Il est notamment utilisé par les fichiers Terraform.
TFSec utilise le parser HCL officiel pour scanner les fichiers Terraform. Au travers d’une analyse statique des fichiers HCL, TFSec confronte leur contenu avec ses différentes vérifications de sécurité.
Il en existe 2 types :
- checks génériques qui sont transverses à toutes les ressources Terraform
- checks de providers/services qui sont des vérifications propres à un service spécifique (activer le chiffrement par CMK d’un bucket S3 AWS par exemple)
Note:
Il est possible d’ignorer, d’exclure ou de surcharger certains checks TFSec par défaut mais aussi d’inclure ses propres vérifications customisées !
Installation
Linux
Installation depuis les binaires sur GitHub
$ curl -s https://api.github.com/repos/aquasecurity/tfsec/releases/latest | grep browser_download_url | cut -d '"' -f 4 | grep 'tfsec-linux-amd64$' | wget -i -
$ mv tfsec-linux-amd64 tfsec $ chmod +x tfsec $ sudo mv tfsec /usr/local/bin/
MacOS
Installation avec “brew”
brew install tfsec
Windows
Installation avec “Chocolatey”
choco install tfsec
Utilisation
La façon la plus simple de lancer tfsec est de le lancer dans le répertoire que vous voulez scanner.
$ tfsec
tfsec va parcourir le répertoire jusqu'à ce qu'il trouve un fichier Terraform valide ; le répertoire dans lequel il trouve ce fichier sera considéré comme le répertoire de travail.
Si vous souhaitez exécuter la commande à un emplacement spécifique, celui-ci peut être passé en argument ;
tfsec ./tf/prod
Le statut de sortie sera non nul si tfsec trouve des problèmes, sinon le statut de sortie sera nul.