Salta al contenuto principale

10 - Infrastructure as Code Scanning - IaC Security e Terraform Policy

Terraform scanning (Checkov, tfsec), CloudFormation/ARM security, misconfig detection, policy enforcement, secrets in IaC, best practices.

Cosa ne pensi di questo articolo?

10 - Infrastructure as Code Scanning - IaC Security e Terraform Policy
DevSecOpsFoto:Ruben BoekelooPexels

In Breve

Terraform scanning (Checkov, tfsec), CloudFormation/ARM security, misconfig detection, policy enforcement, secrets in IaC, best practices.

IaC Scanning: Sicurezza dell'Infrastruttura come Codice

Infrastructure as Code (IaC) ha rivoluzionato la gestione dell'infrastruttura, ma ha anche introdotto un nuovo tipo di rischio: le misconfiguration. Un bucket S3 pubblico, un security group troppo permissivo, un database senza encryption at rest sono tutti errori di configurazione che possono essere intercettati prima del deploy con l'IaC scanning.

Gli strumenti di IaC scanning analizzano i file Terraform, CloudFormation, ARM template, Kubernetes manifest e altri formati IaC alla ricerca di configurazioni insicure, confrontandole con best practice e standard di compliance come CIS Benchmarks.

Cosa Imparerai

  • perchè l'IaC scanning e fondamentale per la sicurezza cloud
  • Checkov: scanner multi-framework per IaC
  • tfsec: analisi specifica per Terraform
  • KICS: scanner universale di Checkmarx
  • Custom policy per Terraform con Sentinel e Conftest
  • Integrazione nella pipeline CI/CD

Le Misconfiguration Più Comuni

Le misconfiguration cloud sono la causa del 65% degli incidenti di sicurezza in ambienti cloud. Ecco le più frequenti:

Top 10 Misconfiguration Cloud

# Misconfiguration Rischio
1 Storage bucket pubblico Data breach, data leakage
2 Security group 0.0.0.0/0 Accesso non autorizzato
3 Database senza encryption Compliance violation, data theft
4 Logging disabilitato Impossibilita di forensics
5 IAM policy troppo permissive Privilege escalation
6 Versioning disabilitato su storage Data loss, ransomware
7 SSH aperto al mondo Brute force, compromissione server
8 Secret in variabili IaC Credential exposure
9 Nessun backup configurato Data loss permanente
10 TLS non forzato Man-in-the-middle, data interception

Checkov: Scanner Multi-Framework

Checkov di Bridgecrew (ora Prisma Cloud) e lo scanner IaC più completo, con oltre 1000 policy predefinite per Terraform, CloudFormation, ARM, Kubernetes, Helm, Dockerfile e Serverless. Supporta anche custom policy in Python e YAML.


# Installare Checkov
pip install checkov

# Scan di file Terraform
checkov -d terraform/ --framework terraform

# Scan con output SARIF
checkov -d terraform/ -o sarif --output-file checkov-results.sarif

# Scan con filtro severity
checkov -d terraform/ --check HIGH --check CRITICAL

# Scan di un Dockerfile
checkov -f Dockerfile --framework dockerfile

# Scan di manifest Kubernetes
checkov -d k8s/ --framework kubernetes

# Skip check specifici
checkov -d terraform/ --skip-check CKV_AWS_18,CKV_AWS_19
      

Integrazione Checkov in GitHub Actions


# .github/workflows/iac-scanning.yml
name: IaC Security Scan
on:
  pull_request:
    paths:
      - "terraform/**"
      - "k8s/**"
      - "Dockerfile"

jobs:
  checkov:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - name: Checkov Scan
        uses: bridgecrewio/checkov-action@master
        with:
          directory: terraform/
          framework: terraform
          output_format: sarif
          output_file_path: checkov-results.sarif
          soft_fail: false
          check: HIGH,CRITICAL

      - name: Upload SARIF
        if: always()
        uses: github/codeql-action/upload-sarif@v3
        with:
          sarif_file: checkov-results.sarif
      

tfsec: Analisi Specifica Terraform

tfsec (ora parte di Trivy) e uno scanner dedicato a Terraform che analizza i file HCL alla ricerca di misconfiguration di sicurezza. E particolarmente veloce e preciso, con supporto per moduli Terraform e variabili.


# Installare tfsec
brew install tfsec

# Scan base
tfsec terraform/

# Scan con output SARIF
tfsec terraform/ --format sarif --out tfsec-results.sarif

# Scan con severita minima
tfsec terraform/ --minimum-severity HIGH

# Escludere check specifici
tfsec terraform/ --exclude aws-s3-enable-versioning
      

KICS: Scanner Universale

KICS (Keeping Infrastructure as Code Secure) di Checkmarx e uno scanner open source che supporta oltre 15 piattaforme IaC. E particolarmente utile per organizzazioni che usano molteplici tecnologie IaC e vogliono un unico strumento.


# Eseguire KICS con Docker
docker run -v /path/to/project:/path checkmarx/kics:latest scan \
  -p /path \
  -o /path/results \
  --report-formats sarif,json \
  --fail-on high,critical
      

Custom Policy per Terraform

Oltre alle policy predefinite, e spesso necessario creare policy custom specifiche per l'organizzazione. Ecco un esempio con Conftest/Rego:


# policy/terraform/aws_security.rego
package terraform.aws

# Tutti i bucket S3 devono avere encryption
deny[msg] {
  resource := input.resource.aws_s3_bucket[name]
  not resource.server_side_encryption_configuration
  msg := sprintf("S3 bucket '%s' deve avere encryption abilitata", [name])
}

# RDS deve avere backup abilitato
deny[msg] {
  resource := input.resource.aws_db_instance[name]
  resource.backup_retention_period == 0
  msg := sprintf("RDS instance '%s' deve avere backup abilitato (retention > 0)", [name])
}

# Nessun security group con ingress 0.0.0.0/0 su SSH
deny[msg] {
  resource := input.resource.aws_security_group[name]
  ingress := resource.ingress[_]
  ingress.from_port <= 22
  ingress.to_port >= 22
  cidr := ingress.cidr_blocks[_]
  cidr == "0.0.0.0/0"
  msg := sprintf("Security group '%s' non deve permettere SSH (22) da 0.0.0.0/0", [name])
}
      

Terraform Policy Enforcement con Sentinel

Confronto Strumenti IaC Scanning

  • Checkov: il più completo, 1000+ policy, multi-framework, custom policy in Python/YAML
  • tfsec: specifico Terraform, veloce, integrato in Trivy
  • KICS: universale, 15+ piattaforme, buono per ambienti multi-IaC
  • Conftest: flessibile, usa Rego, ottimo per custom policy
  • Sentinel: nativo Terraform Cloud, policy enforcement integrato

Best Practice per IaC Scanning

  1. Scan ad ogni PR: ogni modifica IaC deve essere validata prima del merge
  2. Severity-based blocking: bloccare il deploy per HIGH e CRITICAL, warning per MEDIUM
  3. Custom policy: creare policy specifiche per gli standard dell'organizzazione
  4. Baseline e progressione: stabilire una baseline e ridurre progressivamente i finding
  5. Pre-commit hooks: eseguire tfsec/checkov localmente prima del push
  6. Drift detection: monitorare il drift tra lo stato IaC e l'infrastruttura reale

Conclusioni

L'IaC scanning e essenziale per prevenire misconfiguration che sono la causa principale degli incidenti di sicurezza cloud. Con Checkov, tfsec e custom policy, le organizzazioni possono validare automaticamente ogni modifica infrastrutturale prima che raggiunga la produzione.

Nel prossimo articolo esploreremo Runtime Security, analizzando il monitoraggio in tempo reale con Falco, eBPF e i sistemi di anomaly detection per proteggere le applicazioni in produzione.

Domande frequenti

Qual è lo scopo dell'IaC Scanning nella gestione dell'infrastruttura?

Lo scopo dell'IaC Scanning è quello di identificare e prevenire configurazioni insicure nell'infrastruttura, riducendo il rischio di incidenti di sicurezza.

Quali sono le misconfiguration cloud più comuni che possono essere intercettate con l'IaC scanning?

Le misconfiguration cloud più comuni includono un bucket S3 pubblico, un security group troppo permissivo e un database senza encryption at rest.

Quale strumento di IaC scanning è considerato il più completo e supporta oltre 1000 policy predefinite?

Checkov è lo scanner IaC più completo e supporta oltre 1000 policy predefinite per Terraform, CloudFormation, ARM, Kubernetes, Helm, Dockerfile e Serverless.

Come possono le organizzazioni creare policy custom specifiche per l'organizzazione utilizzando Conftest/Rego?

Le organizzazioni possono creare policy custom specifiche per l'organizzazione utilizzando Conftest/Rego, che consente di definire regole personalizzate per la sicurezza dell'infrastruttura.

Fonti e approfondimenti

Prova Questi Strumenti

Strumenti gratuiti correlati a questo argomento.

Commenti

Caricamento commenti...

Accedi per commentare

Discuti questo articolo nella community

Unisciti al gruppo Telegram per discutere con altri sviluppatori, fare domande e condividere le tue esperienze.

Ti è piaciuto questo articolo?

Esplora altri contenuti sul blog o scopri i miei progetti