Table des matières

Introduction

Terrascan est un analyseur de code statique pour Infrastructure as Code.

Terrascan vous permet de :

Installation de terrascan

Terrascan est un exécutable portable qui ne nécessite pas strictement d'installation.

Il est également disponible sous forme d'image de conteneur dans Docker Hub.

Vous pouvez utiliser Terrascan de deux façons différentes, selon vos préférences :

Exécutable natif

La page de publication de Terrascan contient la dernière version des builds pour les plateformes courantes.

Téléchargez et extrayez le paquet pour votre plateforme. Suivez les instructions qui s'appliquent à votre plateforme :

macOS et Linux

Téléchargez la dernière version des builds pour macOS et entrez la commande suivante.

Remarque : pour Linux, remplacez Darwin par Linux.

$ curl -L "$(curl -s https://api.github.com/repos/tenable/terrascan/releases/latest | grep -o -E "https://.+?_Darwin_x86_64.tar.gz")" > terrascan.tar.gz
$ tar -xf terrascan.tar.gz terrascan && rm terrascan.tar.gz
$ sudo cp terrascan /usr/local/bin && rm terrascan
$ terrascan

Utilisation d'un conteneur Docker

Terrascan est également disponible sous forme d'image Docker dans Docker Hub et peut être utilisé comme suit (en supposant que Docker soit installé) :

$ docker run --rm tenable/terrascan version

Si vous souhaitez utiliser l'image Docker, veuillez vous référer à la commande suivante. Notez le volume (-v) qui est mappé au docker, et modifiez-le si nécessaire pour l'adapter à votre environnement.

$ alias terrascan="docker run --rm -it -v "$(pwd):/iac" -w /iac tenable/terrascan"

Scan avec Terrascan

Dans cet exemple, le projet KaiMonkey contient quelques fichiers Terraform vulnérables à analyser.

Pour exécuter un scan, suivez les étapes suivantes :

$ git clone https://github.com/tenable/KaiMonkey
...
$ cd KaiMonkey/terraform/aws
$ terrascan scan

Par défaut, Terrascan publie ses résultats dans un format convivial :

Violation Details -
 
	Description    :	S3 bucket Access is allowed to all AWS Account Users.
	File           :	modules/storage/main.tf
	Line           :	104
	Severity       :	HIGH
	-----------------------------------------------------------------------
 
	Description    :	S3 bucket Access is allowed to all AWS Account Users.
	File           :	modules/storage/main.tf
	Line           :	112
	Severity       :	HIGH
	-----------------------------------------------------------------------
 
	Description    :	Ensure that your RDS database has IAM Authentication enabled.
	File           :	modules/storage/main.tf
	Line           :	45
	Severity       :	HIGH
	-----------------------------------------------------------------------
 
	Description    :	Ensure VPC flow logging is enabled in all VPCs
	File           :	modules/network/main.tf
	Line           :	4
	Severity       :	MEDIUM
	-----------------------------------------------------------------------
 
	Description    :	EC2 instances should disable IMDS or require IMDSv2
	File           :	modules/compute/main.tf
	Line           :	124
	Severity       :	MEDIUM
	-----------------------------------------------------------------------
 
	Description    :	http port open to internet
	File           :	modules/network/main.tf
	Line           :	102
	Severity       :	HIGH
	-----------------------------------------------------------------------
 
	Description    :	Enabling S3 versioning will enable easy recovery from both unintended user actions, like deletes and overwrites
	File           :	modules/storage/main.tf
	Line           :	104
	Severity       :	HIGH
	-----------------------------------------------------------------------
 
	Description    :	Enabling S3 versioning will enable easy recovery from both unintended user actions, like deletes and overwrites
	File           :	modules/storage/main.tf
	Line           :	112
	Severity       :	HIGH
	-----------------------------------------------------------------------
 
	Description    :	AWS CloudWatch log group is not encrypted with a KMS CMK
	File           :	modules/compute/main.tf
	Line           :	115
	Severity       :	HIGH
	-----------------------------------------------------------------------
 
Scan Summary -
 
	File/Folder         :	/var/folders/2g/9lkfm6ld2lv350svwr15fdgc0000gn/T/x9wqg4/terraform/aws
	IaC Type            :	terraform
	Scanned At          :	2021-01-15 03:11:31.869816 +0000 UTC
	Policies Validated  :	571
	Violated Policies   :	9
	Low                 :	0
	Medium              :	2
	High                :	7

Vous devriez voir un total de 9 violations, qui sont détaillées dans la sortie.

Maintenant que vous avez compris comment exécuter Terrascan, vous pouvez explorer les différentes options disponibles.

Si vous ne souhaitez pas que Terrascan utilise os.TempDir() pour le téléchargement/clonage des fichiers du référentiel distant, vous pouvez spécifier le répertoire à utiliser en définissant la variable d'environnement TERRRASCAN_CUSTOM_TEMP_DIR.

Annexe

https://runterrascan.io/

https://github.com/tenable/terrascan