
Détectez les violations de conformité et de sécurité dans l'Infrastructure as Code pour atténuer les risques avant de provisionner une infrastructure cloud native.
- Ce projet n'est plus maintenu. Le dépôt est archivé et aucune mise à jour, problème ou demande de fusion ne sera accepté.
- N'hésitez pas à le forker si vous souhaitez poursuivre le développement.

Terrascan est un analyseur de code statique pour l'Infrastructure en tant que Code (IaC). Terrascan vous permet de :
Pour essayer Terrascan dans votre navigateur, consultez le bac à sable Terrascan https://www.tenable.com/terrascan
Pour en savoir plus sur les fonctionnalités et capacités de Terrascan, consultez le portail de documentation : https://runterrascan.io
Rejoignez la communauté Tenable 👇
Terrascan prend en charge plusieurs méthodes d'installation et est également disponible en tant qu'image Docker. Consultez la page des versions de Terrascan pour la dernière version des builds sur toutes les plateformes prises en charge. Sélectionnez le binaire correct pour votre plateforme.
curl -L "$(curl -s https://api.github.com/repos/tenable/terrascan/releases/latest | grep -o -E "https://.+?_Linux_x86_64.tar.gz")" > terrascan.tar.gz
tar -xf terrascan.tar.gz terrascan && rm terrascan.tar.gz
sudo install terrascan /usr/local/bin && rm terrascan
terrascan
AURLes utilisateurs d'ArchLinux et Manjaro peuvent installer par :
yay -S terrascan
brewLes utilisateurs de Homebrew peuvent installer par :
$ brew install terrascan
Terrascan est également disponible en tant qu'image Docker et peut être utilisé comme suit :
$ docker run tenable/terrascan
Reportez-vous à la documentation pour plus d'informations.
Pour analyser votre code à la recherche de problèmes de sécurité, vous pouvez exécuter la commande suivante (par défaut, elle analyse Terraform).
$ terrascan scan
Remarque : Terrascan se fermera avec un code d'erreur si des erreurs ou des violations sont détectées lors d'une analyse.
| Scenario | Exit Code |
|---|---|
| le résumé de l'analyse comporte des erreurs et des violations |
Terrascan peut être intégré dans des pipelines CI/CD pour appliquer les bonnes pratiques de sécurité. Veuillez consulter notre documentation pour l'intégration avec votre pipeline.
Vous pouvez utiliser la commande terrascan avec les options suivantes :
$ terrascan
Terrascan
Usage:
terrascan [command]
Available Commands:
help Help about any command
init Initialize Terrascan
scan Detect compliance and security violations across Infrastructure as Code.
server Run Terrascan as an API server
version Terrascan version
Flags:
-c, --config-path string config file path
-h, --help help for terrascan
-l, --log-level string log level (debug, info, warn, error, panic, fatal) (default "info")
-x, --log-type string log output type (console, json) (default "console")
-o, --output string output type (human, json, yaml, xml) (default "human")
Use "terrascan [command] --help" for more information about a command.
Les politiques Terrascan sont écrites en utilisant le langage de politique Rego. Chaque rego inclut un fichier JSON "rule" qui définit les métadonnées de la politique. Par défaut, Terrascan télécharge les politiques depuis les dépôts Terrascan lors de la première analyse. Cependant, si vous souhaitez télécharger les dernières politiques, vous devez exécuter le processus d'initialisation. Consultez la section Utilisation pour des informations sur le processus d'initialisation.
Remarque : La commande d'analyse exécutera implicitement le processus d'initialisation si aucune politique n'est trouvée.
Vous pouvez utiliser le drapeau --find-vuln pour collecter les vulnérabilités telles qu'elles sont signalées dans son registre dans le cadre de la sortie de Terrascan. Actuellement, Terrascan prend en charge Elastic Container Registry (ECR), Azure Container Registry, Google Container Registry et Google Artifact Registry.
Le drapeau --find-vuln peut être utilisé lors de l'analyse des fichiers IaC comme suit :
$ terrascan scan -i <fournisseur IaC> --find-vuln
Pour plus d'informations et une explication sur la façon de configurer votre environnement pour vous authentifier auprès des API du registre, consultez la documentation d'utilisation.
Par défaut, Terrascan analyse toute votre configuration par rapport à toutes les politiques. Cependant, Terrascan prend en charge une configuration granulaire des politiques et des ressources.
En savoir plus sur l'instrumentation dans le fichier et le fichier de configuration sur notre site de documentation.
Pour l'instant, quelques conseils rapides :
Vous pouvez configurer Terrascan pour ignorer une politique (règle) particulière lors de l'analyse d'une ressource. Suivez ces étapes selon votre plateforme :
Utilisez des scripts Terraform pour configurer Terrascan afin d'ignorer des règles en insérant un commentaire avec la phrase "ts:skip=<NOMDELAREGLE><RAISONDUSKIP>". Le commentaire doit être inclus dans la ressource comme indiqué dans l'exemple ci-dessous.

Dans les yamls Kubernetes, vous pouvez configurer Terrascan pour ignorer des politiques en ajoutant une annotation comme dans l'extrait ci-dessous.

Utilisez le fichier de configuration Terrascan pour sélectionner manuellement les politiques qui doivent être incluses ou exclues de l'analyse complète. Cela convient pour les cas d'utilisation périphériques. Utilisez l'option de suppression "dans le fichier" pour spécifier les ressources qui doivent être exclues des tests par rapport aux politiques sélectionnées. Cela garantit que les politiques ne sont ignorées que pour des ressources particulières, et non pour toutes les ressources.

La sortie par défaut de Terrascan est une liste des violations présentes dans l'IaC analysée. Un exemple de sortie :

Terrascan peut être construit localement. Cela est utile si vous souhaitez être sur la dernière version ou lors du développement de Terrascan. gcc et Go 1.19 ou supérieur sont requis.
$ git clone [email protected]:tenable/terrascan.git
$ cd terrascan
$ make build
$ ./bin/terrascan
FROM golang:alpine AS build-env
RUN apk add --update git
RUN git clone https://github.com/tenable/terrascan && cd terrascan \
&& CGO_ENABLED=0 GO111MODULE=on go build -o /go/bin/terrascan cmd/terrascan/main.go
Pour en savoir plus sur le développement et la contribution à Terrascan, reportez-vous au guide de contribution.
Nous croyons qu'une communauté ouverte et inclusive profite à tous. Veuillez noter que ce projet est publié avec un Code de conduite des contributeurs. En participant à ce projet, vous acceptez de respecter ses termes.
Terrascan est sous licence Apache 2.0.
| 5 |
| le résumé de l'analyse comporte des erreurs mais aucune violation | 4 |
| le résumé de l'analyse comporte des violations mais aucune erreur | 3 |
| le résumé de l'analyse ne comporte ni violation ni erreur | 0 |
| la commande d'analyse échoue en raison d'entrées non valides | 1 |