Sommaire
TFSec, qu’est-ce ?
TFSec est un SAST (Static Analysis Security Testing) principalement dédié à Terraform. Cet outil est capable d’analyser le code Terraform pour en déduire les potentielles faiblesses de sécurité de nos infrastructures, et cela avant même qu’elles soient déployées.
TFSec est un projet open source porté par la société Aqua security. C’est cette même entité qui possède des outils déjà bien connus dans le domaine de la sécurité :
- Tracee : pour détecter les appels systèmes suspicieux
- Kube-hunter : pour détecter les faiblesses d’un cluster Kubernetes
- Kube-bench : pour tester la compliance au benchmark CIS d’un cluster Kubernetes
- Trivy : pour analyser la sécurité des conteneurs
Il existe d’autres outils capable d’analyser la sécurité du code Terraform comme :
- Checkov
- Terrascan
- Trivy
- etc.
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)
NB : 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 !
Installer TFSec
TFSec est relativement simple à installer. La documentation officielle propose 5 méthodes d’installation :
- via Homebrew (brew)
- via Chocolatey (choco)
- via Scoop
- En récupérant directement les binaires
- En l’installant avec Go
Documentation : https://aquasecurity.github.io/tfsec/v1.1.5/getting-started/installation/
Utiliser et comprendre les résultats TFSec
TFSec est simple à utiliser. Il suffit d’utiliser la commande tfsec . dans votre répertoire Terraform pour commencer à scanner.
Voici le type de retour que vous pouvez obtenir en exécutant TFSec :
Vous obtenez plusieurs informations :
- Result #1 : Les résultats de TFSec sont organisés
- MEDIUM : Chaque problème détecté par TFSec possède un niveau de criticité
- Key does not have rotation enabled : Courte description du problème détecté
- main.tf : Fichier contenant la ressource incriminée
- Lines 1-5 : Lignes où se trouve la ressource incriminée dans le fichier
- ressource “aws_kms_key” “this” { [...] } : Affichage de la ressource incriminée
- ID : Identifiant unique de la vérification associée au problème
- Impact : Description des potentiels impacts associés à la configuration actuelle
- Resolution : Proposition d’une solution
- More Information : Liste de liens de documentation
- La documentation TFSec est intéressante car elle propose directement le code Terraform correctif.
Pratiquer TFSec avec KillerCoda
Maintenant que nous savons ce qu’est TFSec, il serait fort intéressant d’apprendre à l’utiliser, n’est ce pas ?
Pour ce Tools in Action, je vous ai concocté un scénario Killercoda pour appréhender les bases de TFSec. Vous pouvez le recommencer autant de fois que vous le souhaitez, enjoy !
Dans ce scénario vous pratiquerez l’installation du binaire TFSec et son utilisation dans le but de corriger une faiblesse de sécurité.
Conclusion
J’espère que cette première introduction à TFSec vous aura plu, notamment le scénario Killercoda !
Si vous souhaitez en apprendre plus sur TFSec et son implémentation n’hésitez pas à suivre l’actualité du blog WeScale, d’autres articles sur le sujet suivront !