Securite et compliance as Code 22 min de lecture

Scanning et compliance automatisee

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.