TFSec, qu’est-ce ?

Comme son nom l’indique, l’Infrastructure as Code (IaC), décrit l’infrastructure au format code. Cette qualité intrinsèque lui accorde un avantage certain. En partant de ce constat on peut définir que si le code décrit l’infrastructure, alors on peut auditer le code pour auditer l’infrastructure.


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.

Logo de TFSec
Logo de TFSec

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 !

Schéma de fonctionnement de TFSec
Schéma de fonctionnement de TFSec

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 Katacoda

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 Katacoda 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é.

💡
Nous sommes convaincus que la connaissance d’un outil passe par sa pratique. Cet article se concentre uniquement sur les mécanismes internes de l’outil et des problématiques qu’il adresse. Il est accompagné d’une démonstration en ligne, qui vous permet de tester l’outil dans des conditions réelles, à votre rythme, en évitant des copier / coller et des aller-retours entre fenêtres.
👉
Pour la démonstration live, suivez le lien !

Scénario Katacoda (cliquez sur le chat)
Scénario Katacoda (cliquez sur le chat)

Conclusion

J’espère que cette première introduction à TFSec vous aura plu, notamment le scénario Katacoda !

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 !