Capitolo: Gibson Cap 5 — Securing Hosts and Data Concetto: Infrastructure as Code (IaC) come pratica di sicurezza
Obiettivo#
Creare e distruggere infrastruttura dichiarativa con Terraform. Capire perche' IaC e' rilevante per la sicurezza: infrastruttura riproducibile, versionabile, no snowflake server.
Security angle: un'infrastruttura definita in codice puo' essere auditata (git blame), sottoposta a code review, testata con policy-as-code (OPA, Checkov). Un server configurato manualmente non puo' essere auditato cosi'.
Prerequisiti#
- Docker installato e funzionante
- Terraform installato (
apt install terraformo download da https://developer.hashicorp.com/terraform/install) - Ubuntu Server su UTM (Mustache)
Cosa costruisci#
Un web server nginx + un database postgres definiti in HCL. Con un comando li crei, con un altro li distruggi e ricrei identici.
Step 1 — Struttura cartelle#
Crea la struttura del progetto:
mkdir -p ~/lab-iac && cd ~/lab-iac
touch main.tf variables.tf outputs.tfStep 2 — Scrivi la configurazione Terraform#
Prova a scrivere main.tf da solo. Obiettivo: definire due container Docker (nginx + postgres) con Terraform.
Hint se bloccato: il provider si chiama kreuzwerker/docker su Terraform Registry. Cerca terraform docker provider nginx example.
Step 3 — Init, Plan, Apply#
terraform init # scarica il provider Docker
terraform plan # mostra cosa sta per creare
terraform apply # crea i container
docker ps # verifica che siano upStep 4 — Modifica e ri-applica#
Cambia la porta di nginx da 8080 a 8081 nel .tf. Riesegui terraform apply. Osserva come Terraform calcola il diff e ricostruisce solo cio' che e' cambiato.
Step 5 — Destroy#
terraform destroy # abbatte tutto
docker ps # verifica: container sparitiStep 6 — Security angle: policy-as-code#
Installa Checkov e scansiona la tua configurazione:
pip install checkov
checkov -d .Checkov segnala misconfigurazioni note (container privilegiati, porte esposte, variabili d'ambiente con segreti in chiaro).
Domande di riflessione#
- Qual e' la differenza tra
terraform planeterraform apply? Perche' e' importante il plan prima dell'apply in produzione? - Cosa succede se qualcuno modifica manualmente un container fuori da Terraform e poi riesegui
apply? - Come useresti Terraform in un pipeline CI/CD per garantire che l'infrastruttura non devia dalla baseline?
Note e osservazioni#
Collegato a#
- cap-05-securing-hosts-and-data — sezione IaC e Cloud Security


