Skip to main content
  1. Lab-devsec/

[TODO] Lab - IaC con Terraform e Docker

·2 mins
Alessio Barnini
Author
Alessio Barnini
Table of Contents

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
#


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.tf

Step 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 up

Step 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 spariti

Step 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
#

  1. Qual e' la differenza tra terraform plan e terraform apply? Perche' e' importante il plan prima dell'apply in produzione?
  2. Cosa succede se qualcuno modifica manualmente un container fuori da Terraform e poi riesegui apply?
  3. 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

Related