Introduction
Terrascan est un analyseur de code statique pour Infrastructure as Code.
Terrascan vous permet de :
- Analyser de manière transparente l'infrastructure en tant que code pour détecter les mauvaises configurations.
- Surveiller l'infrastructure cloud provisionnée pour détecter les changements de configuration qui introduisent une dérive de la posture, et permettre de revenir à une posture sécurisée.
- Détecter les vulnérabilités de sécurité et les violations de conformité.
- Réduisez les risques avant de provisionner l'infrastructure en nuage.
- Offre la flexibilité de s'exécuter localement ou de s'intégrer à votre CDCI.
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 :
- Installing Terrascan locally
- Using a Docker container
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.