Ja tens fmt i validate caçant errors bàsics. Però aquests comandaments comproven que el codi sigui correcte, no que sigui segur. Un codi perfectament vàlid pot crear una infraestructura perillosa: un bucket S3 obert al món, una base de dades sense xifrar, un Security Group amb SSH exposat. Per detectar això existeix l’anàlisi de seguretat estàtic, amb eines com Checkov i tfsec.

El problema: codi vàlid però insegur

validate (subcapítol 21.1) et diria que aquest codi està «bé»:

resource "aws_s3_bucket" "dades" {
  bucket = "dades-confidencials"
}

resource "aws_s3_bucket_public_access_block" "dades" {
  bucket                  = aws_s3_bucket.dades.id
  block_public_acls       = false   # ⚠️ permet accés públic!
  block_public_policy     = false   # ⚠️ perillós!
}

Sintàcticament és correcte. Però estàs creant un bucket amb dades confidencials obert a internet (recorda el perill del subcapítol 5.4). validate no detecta això, perquè no és un error de codi: és un error de seguretat. Necessites alguna cosa que conegui les bones pràctiques i t’avisi.

Què és l’anàlisi estàtic de seguretat

L’anàlisi estàtic examina el teu codi sense executar-lo (sense crear res a AWS) i el compara amb una base de regles de seguretat i bones pràctiques. Si troba una configuració perillosa, t’avisa assenyalant exactament què està malament i per què.

El teu codi Terraform
       │
       ▼
  Analitzador (Checkov / tfsec)  ──compara amb centenars de regles de seguretat──►
       │
       ├─ ✓ tot segur
       └─ ✗ "El bucket S3 permet accés públic (línia 5)"
          "La base de dades no té xifrat activat (línia 20)"

Analogia: és com un inspector de seguretat que revisa els plànols d’un edifici abans de construir-lo. No espera que l’edifici estigui fet per descobrir que falta una sortida d’emergència: ho detecta al plànol i t’obliga a corregir-ho abans. L’anàlisi estàtic revisa els «plànols» (el teu codi) i caça els problemes de seguretat abans de desplegar.

Les eines: Checkov i tfsec

Hi ha diverses eines per això; les dues més conegudes en el món Terraform són:

Checkov

Checkov (de l’empresa Prisma/Bridgecrew) és una eina molt popular i completa. Porta centenars de regles predefinides que comproven bones pràctiques de seguretat i compliment a AWS (i altres núvols). Detecta coses com buckets públics, recursos sense xifrar, ports oberts perillosos, manca de logs, etc.

tfsec

tfsec és una altra eina molt utilitzada, centrada específicament en Terraform i enfocada en seguretat. És ràpida i fàcil d’integrar. (Cal saber que tfsec s’ha anat integrant amb Trivy, una altra eina del mateix àmbit; l’ecosistema evoluciona, però la idea és la mateixa.)

Totes dues fan una feina semblant: analitzen el teu codi i et llisten els problemes de seguretat trobats. Molts equips en fan servir una o altra (o totes dues).

checkov -d .       # analitza el directori actual
tfsec .            # analitza el directori actual
   → totes dues llisten els problemes de seguretat detectats

Quin tipus de problemes detecten

Aquestes eines cacen justament els errors de seguretat que hem anat esmentant al llarg del llibre:

Problema detectat Ho vam veure a...
Bucket S3 amb accés públic Subcapítol 5.4
SSH obert a 0.0.0.0/0 Subcapítol 4.2 / 12.3
Base de dades sense xifrar Capítol 8
Recursos sense etiquetes requerides Bones pràctiques
Manca de logs / auditoria Capítol 24
Permisos IAM massa amplis Capítol 7 (mínim privilegi)

És com tenir un expert en seguretat revisant cada canvi, que mai es cansa ni es distreu, aplicant consistentment centenars de regles que una persona no podria recordar totes.

Integració en CI: seguretat automàtica

Igual que fmt i validate (subcapítol 21.1), aquestes eines s’executen en CI, automàticament, en cada Pull Request:

Pull Request obert
   ├─ terraform fmt -check
   ├─ terraform validate
   ├─ checkov / tfsec        ← anàlisi de seguretat
   │     → si troba un problema greu → BLOQUEJA el canvi ✗
   └─ terraform plan

Així, cap canvi insegur pot arribar a producció sense que algú l’aprovi conscientment. Si un desenvolupador, sense voler, escriu un bucket públic, el CI ho detecta i bloqueja el PR. Això és «shift left»: detectar els problemes de seguretat el més aviat possible (al codi), no quan ja són a producció i un atacant els troba abans que tu.

Exemple del món real: un desenvolupador, amb presses, configura una base de dades sense xifrar per a una prova i, sense adonar-se’n, aquell codi acaba en un PR cap a producció. El CI executa Checkov, que detecta «base de dades RDS sense xifrat en repòs» i bloqueja el PR amb un missatge clar. El desenvolupador afegeix el xifrat, torna a pujar, i ara sí passa. L’error de seguretat mai va arribar a producció, i tot de forma automàtica.

Una nota sobre els falsos positius

A vegades aquestes eines marquen alguna cosa que, en el teu cas concret, és intencionat i acceptable (per exemple, un bucket que ha de ser públic perquè serveix una web estàtica, subcapítol 5.5). Per a aquests casos, pots excloure regles concretes de forma justificada (amb anotacions al codi o a la configuració de l’eina). Però fes-ho conscientment i documentant-ho, no per silenciar avisos molestos sense pensar: cada excepció ha de tenir una raó clara.

El que has de recordar

  • fmt i validate comproven que el codi sigui correcte, però no que sigui segur: un codi vàlid pot crear infraestructura perillosa (buckets públics, BD sense xifrar, SSH obert).
  • L’anàlisi estàtic de seguretat examina el teu codi sense executar-lo i el compara amb centenars de regles de bones pràctiques, avisant de les configuracions perilloses. Com un inspector que revisa els plànols abans de construir.
  • Les eines principals són Checkov (molt completa, multi-núvol) i tfsec (centrada en Terraform, ara lligada a Trivy). Fan una feina similar.
  • S’integren en CI per bloquejar automàticament els canvis insegurs en cada PR: és el principi «shift left» (caçar els problemes tan aviat com sigui possible).
  • Gestiona els falsos positius excloent regles concretes de forma justificada i documentada, no silenciant avisos a la lleugera.

En el següent subcapítol farem el salt a les proves més completes: els tests d’integració amb Terratest, que creen infraestructura real i verifiquen que funciona.

Cloud, AWS & Terraform — De zero a expert

Capítol 1 · Què és el cloud computing

Capítol 2 · El mercat cloud i els grans proveïdors

Capítol 3 · Regions, zones de disponibilitat i edge

Capítol 4 · Càlcul: EC2

Capítol 5 · Emmagatzematge: S3

Capítol 6 · Xarxes: VPC

Capítol 7 · Identitat i accés: IAM

Capítol 8 · Bases de dades gestionades

Capítol 9 · Per què Infraestructura com a Codi

Capítol 10 · HCL: el llenguatge de Terraform

Capítol 11 · Providers i estat

Capítol 12 · La teva primera infraestructura real amb Terraform

Capítol 13 · Balanceig de càrrega i autoescalat

Capítol 14 · Serverless amb Lambda

Capítol 15 · Missatgeria i esdeveniments

Capítol 16 · Lliurament de contingut i DNS

Capítol 17 · Contenidors a AWS

Capítol 18 · Mòduls: reutilització i composició

Capítol 19 · Workspaces i gestió d'entorns

Capítol 20 · Backends remots i locking

Capítol 21 · Testing d'infraestructura

Capítol 22 · Terraform en CI/CD

Capítol 23 · Seguretat en profunditat

Capítol 24 · Observabilitat: logs, mètriques i traces

Capítol 25 · Optimització de costos

Capítol 26 · Alta disponibilitat i disaster recovery

Capítol 27 · Well-Architected Framework d'AWS

Capítol 28 · Arquitectures serverless a escala

Capítol 29 · Plataformes de dades a AWS

Capítol 30 · Multi-compte i landing zones

Capítol 31 · Platform Engineering i Internal Developer Platform

Capítol 32 · Certificacions AWS rellevants

Capítol 33 · Projectes per consolidar el que s'ha après

Capítol 34 · Recursos i comunitat

© Copyright 2024. Tots els drets reservats