
Tfsec is now part of Trivy
Dans le cadre de notre objectif de fournir une solution de sécurité open source complète pour tous, nous avons consolidé tous nos efforts liés à l'analyse dans un seul endroit, et c'est Trivy.
Au cours de l'année écoulée, tfsec a jeté les bases des capacités d'analyse IaC et de mauvaise configuration de Trivy, y compris l'analyse Terraform, qui est désormais prise en charge nativement dans Trivy depuis longtemps.
Désormais, nous souhaitons encourager la communauté tfsec à migrer vers Trivy. Passer à Trivy vous offre le même excellent moteur d'analyse Terraform, avec quelques avantages supplémentaires :
Pour plus d'informations sur la comparaison entre Trivy et tfsec et le passage de tfsec à Trivy, jetez un œil au guide de migration.
tfsec utilise l'analyse statique de votre code Terraform pour repérer les mauvaises configurations potentielles.
concat()Noté Adopt par le Thoughtworks Tech Radar :
Pour nos projets utilisant Terraform, tfsec est rapidement devenu un outil d'analyse statique par défaut pour détecter les risques de sécurité potentiels. Il est facile à intégrer dans un pipeline CI et dispose d'une bibliothèque croissante de vérifications couvrant tous les principaux fournisseurs cloud et des plateformes comme Kubernetes. Compte tenu de sa facilité d'utilisation, nous pensons que tfsec pourrait être un bon ajout à tout projet Terraform.

Installation avec brew/linuxbrew
brew install tfsec
Installation avec Chocolatey
choco install tfsec
Installation avec Scoop
scoop install tfsec
Script Bash (Linux) :
curl -s https://raw.githubusercontent.com/aquasecurity/tfsec/master/scripts/install_linux.sh | bash
Vous pouvez également télécharger le binaire pour votre système depuis la page des versions.
Ou installez avec Go :
go install github.com/aquasecurity/tfsec/cmd/tfsec@latest
Veuillez noter que l'utilisation de go install installera directement depuis la branche master et les numéros de version ne seront pas rapportés via tfsec --version.
Les binaires sur la page des versions sont signés avec la clé de signature tfsec D66B222A3EA4C25D5D1A097FC34ACEFB46EC39CE
Pour plus d'informations, consultez la page de signature pour les instructions de vérification.
tfsec analysera le répertoire spécifié. Si aucun répertoire n'est spécifié, le répertoire de travail actuel sera utilisé.
Le code de sortie sera non nul si tfsec trouve des problèmes, sinon le code de sortie sera nul.
tfsec .
Comme alternative à l'installation et à l'exécution de tfsec sur votre système, vous pouvez exécuter tfsec dans un conteneur Docker.
Plusieurs options Docker sont disponibles
Pour exécuter :
docker run --rm -it -v "$(pwd):/src" aquasec/tfsec /src
Une extension Visual Studio Code est en cours de développement pour s'intégrer aux résultats de tfsec. Plus d'informations sont disponibles sur la page Marketplace de tfsec
Si vous souhaitez exécuter tfsec sur votre dépôt en tant qu'action GitHub, vous pouvez utiliser https://github.com/aquasecurity/tfsec-pr-commenter-action.
Vous pouvez maintenant installer la tâche officielle tfsec. Veuillez signaler tout problème/demande de fonctionnalité sur le dépôt de la tâche.
Vous pouvez souhaiter ignorer certains avertissements. Pour ce faire, vous pouvez simplement ajouter un commentaire contenant tfsec:ignore:<règle> sur la ligne concernée dans vos modèles. Vous pouvez également ajouter le commentaire sur la ligne au-dessus du bloc contenant le problème, ou sur le bloc du module pour ignorer toutes les occurrences d'un problème à l'intérieur du module.
Par exemple, pour ignorer une règle de groupe de sécurité ouverte :
resource "aws_security_group_rule" "my-rule" {
type = "ingress"
cidr_blocks = ["0.0.0.0/0"] #tfsec:ignore:aws-vpc-no-public-ingress-sgr
}
...ou...
resource "aws_security_group_rule" "my-rule" {
type = "ingress"
#tfsec:ignore:aws-vpc-no-public-ingress-sgr
cidr_blocks = ["0.0.0.0/0"]
}
Si vous n'êtes pas sûr de la ligne sur laquelle ajouter le commentaire, vérifiez simplement la sortie de tfsec pour le numéro de ligne du problème découvert.
Vous pouvez ignorer plusieurs règles en les concaténant sur une seule ligne :
#tfsec:ignore:aws-s3-enable-bucket-encryption tfsec:ignore:aws-s3-enable-bucket-logging
resource "aws_s3_bucket" "my-bucket" {
bucket = "foobar"
acl = "private"
}
Vous pouvez définir une date d'expiration pour ignore au format yyyy-mm-dd. C'est une fonctionnalité utile lorsque vous voulez vous assurer qu'un problème ignoré ne sera pas oublié et devra être revu à l'avenir.
#tfsec:ignore:aws-s3-enable-bucket-encryption:exp:2025-01-02
Un tel ignore sera actif uniquement jusqu'au 2025-01-02, après cette date il sera désactivé.
Vous pouvez souhaiter exclure certaines vérifications de l'exécution. Pour ce faire, vous pouvez simplement ajouter l'argument -e check1,check2,etc à votre commande cmd
tfsec . -e general-secrets-sensitive-in-variable,google-compute-disk-encryption-customer-keys
Vous pouvez inclure des valeurs d'un fichier tfvars dans l'analyse, en utilisant, par exemple : --tfvars-file terraform.tfvars.
tfsec prend en charge de nombreux fournisseurs cloud et plateformes populaires
tfsec est conçu pour être exécuté dans un pipeline CI. Vous pouvez souhaiter exécuter tfsec dans le cadre de votre build sans sortie colorée. Vous pouvez le faire en utilisant --no-colour (ou --no-color pour nos amis américains).
Vous pouvez produire les résultats de tfsec au format JSON, CSV, Checkstyle, Sarif, JUnit ou simplement en format texte lisible par un humain. Utilisez l'indicateur --format pour spécifier le format souhaité.
Si vous souhaitez intégrer les alertes de sécurité GitHub et inclure la sortie de vos vérifications tfsec, vous pouvez utiliser l'action GitHub tfsec-sarif-action pour exécuter l'analyse statique, puis télécharger les résultats dans l'onglet des alertes de sécurité.
Les alertes générées pour tfsec-example-project ressemblent à ceci.

Lorsque vous cliquez sur les alertes pour la branche, vous obtenez plus d'informations sur le problème réel.

Pour plus d'informations sur l'ajout d'alertes de sécurité, consultez la documentation GitHub
Si vous devez prendre en charge des versions de Terraform qui utilisent HCL v1 (Terraform <0.12), vous pouvez utiliser la version v0.1.3 de tfsec, bien que la prise en charge soit très limitée et comporte moins de vérifications.
Nous accueillons toujours les contributions, qu'elles soient grandes ou petites ; il peut s'agir de mises à jour de documentation, d'ajout de nouvelles vérifications ou de quelque chose de plus conséquent. Veuillez consulter le Guide de contribution pour plus de détails sur la façon d'aider.
Réalisé avec contributors-img.
tfsec est un projet open source d'Aqua Security.
Découvrez nos travaux open source et notre portfolio ici.
Rejoignez la communauté et parlez-nous de tout sujet dans GitHub Discussion ou Slack.
| Nom de l'image | Base | Commentaire |
|---|
| aquasec/tfsec | alpine | Image tfsec normale |
| aquasec/tfsec-alpine | alpine | Exactement la même que aquasec/tfsec, mais pour ceux qui aiment être explicites |
| aquasec/tfsec-ci | alpine | tfsec sans point d'entrée - utile pour les builds CI où vous souhaitez remplacer la commande |
| aquasec/tfsec-scratch | scratch | Une image construite sur scratch - rien de fantaisiste, exécute simplement tfsec |
| Vérifications |
|---|
| Vérifications AWS |
| Vérifications Azure |
| Vérifications GCP |
| Vérifications CloudStack |
| Vérifications DigitalOcean |
| Vérifications GitHub |
| Vérifications Kubernetes |
| Vérifications OpenStack |
| Vérifications Oracle |