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
- Scan ad ogni PR: ogni modifica IaC deve essere validata prima del merge
- Severity-based blocking: bloccare il deploy per HIGH e CRITICAL, warning per MEDIUM
- Custom policy: creare policy specifiche per gli standard dell'organizzazione
- Baseline e progressione: stabilire una baseline e ridurre progressivamente i finding
- Pre-commit hooks: eseguire tfsec/checkov localmente prima del push
- 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.







