Outils de scanning IaC
Les outils de scanning analysent le code Terraform pour detecter les problemes de securite avant le deploiement.
tfsec (Aqua Security)
# Installation
brew install tfsec
# Scanner un projet
tfsec .
# Scanner avec format JSON
tfsec . --format json
# Ignorer une regle specifique
resource "aws_s3_bucket" "data" {
# tfsec:ignore:aws-s3-enable-versioning
bucket = "mon-bucket"
}
Checkov (Bridgecrew)
# Installation
pip install checkov
# Scanner un projet Terraform
checkov -d .
# Scanner un fichier specifique
checkov -f main.tf
# Filtrer par framework
checkov -d . --framework terraform
# Generer un rapport
checkov -d . -o json > rapport.json
OPA / Conftest
# Policy Rego pour interdire les buckets S3 publics
# policy/s3.rego
package main
deny[msg] {
resource := input.resource_changes[_]
resource.type == "aws_s3_bucket"
resource.change.after.acl == "public-read"
msg := sprintf("Le bucket %v ne doit pas etre public", [resource.name])
}
# Executer avec conftest
terraform show -json tfplan > plan.json
conftest test plan.json -p policy/
Bonnes pratiques de securite IaC
- Chiffrement — Activer le chiffrement partout (S3, RDS, EBS)
- Moindre privilege — IAM roles avec permissions minimales
- Pas de secrets en dur — Vault, Secrets Manager, variables sensibles
- Scanning en CI — tfsec/checkov dans chaque PR
- State protege — Chiffre, acces restreint, jamais dans Git
Pipeline CI securise
# .github/workflows/security.yml
name: Security Scan
on: [pull_request]
jobs:
scan:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: tfsec
uses: aquasecurity/tfsec-action@v1.0.0
- name: Checkov
uses: bridgecrewio/checkov-action@v12
with:
directory: .
framework: terraform
Bonne pratique : Integrez tfsec et checkov dans votre CI. Bloquez les PR qui contiennent des vulnerabilites critiques.