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
fmtivalidatecomproven 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
- 1.1 El model client-servidor tradicional
- 1.2 Problemes que venia a resoldre el núvol
- 1.3 On-premise vs cloud vs híbrid
- 1.4 Els tres models de servei: IaaS, PaaS, SaaS
- 1.5 Els cinc pilars del cloud (segons NIST)
- 1.6 Avantatges reals: elasticitat, pagament per ús, disponibilitat global
Capítol 2 · El mercat cloud i els grans proveïdors
- 2.1 AWS, Azure i GCP: diferències i quotes de mercat
- 2.2 Per què aprendre AWS primer
- 2.3 Conceptes que són universals entre proveïdors
Capítol 3 · Regions, zones de disponibilitat i edge
- 3.1 Què és una regió AWS i com triar-la
- 3.2 Availability Zones: alta disponibilitat des del disseny
- 3.3 Edge locations i CloudFront
- 3.4 Latència, resiliència i sobirania de dades
Capítol 4 · Càlcul: EC2
- 4.1 Instàncies: tipus, famílies i quan triar cadascuna
- 4.2 AMIs, key pairs i Security Groups
- 4.3 Cicle de vida d'una instància
- 4.4 Elastic IPs i Placement Groups
- 4.5 Savings Plans vs Reserved vs On-Demand vs Spot
Capítol 5 · Emmagatzematge: S3
- 5.1 Buckets, objectes i claus
- 5.2 Classes d'emmagatzematge (Standard, IA, Glacier…)
- 5.3 Versionat i cicle de vida d'objectes
- 5.4 Polítiques de bucket i ACLs
- 5.5 Hosting de llocs web estàtics
Capítol 6 · Xarxes: VPC
- 6.1 Què és una VPC i per què la necessites
- 6.2 Subxarxes públiques i privades
- 6.3 Internet Gateway i NAT Gateway
- 6.4 Route Tables i Network ACLs
- 6.5 VPC Peering i endpoints
Capítol 7 · Identitat i accés: IAM
- 7.1 Usuaris, grups, rols i polítiques
- 7.2 El principi de mínim privilegi
- 7.3 Polítiques basades en identitat vs en recurs
- 7.4 MFA i credencials temporals (STS)
- 7.5 Bones pràctiques de seguretat IAM
Capítol 8 · Bases de dades gestionades
- 8.1 RDS: motors, Multi-AZ i rèpliques de lectura
- 8.2 Aurora i els seus avantatges sobre RDS vanilla
- 8.3 DynamoDB: model clau-valor / documents
- 8.4 ElastiCache per a memòria cau en memòria
- 8.5 Quan utilitzar cada tipus de base de dades
Capítol 9 · Per què Infraestructura com a Codi
- 9.1 Problemes del provisionament manual
- 9.2 IaC declaratiu vs imperatiu
- 9.3 Terraform vs CloudFormation vs Pulumi vs CDK
- 9.4 El cicle plan → apply → destroy
Capítol 10 · HCL: el llenguatge de Terraform
- 10.1 Blocs resource, variable, output, locals
- 10.2 Tipus de dades: string, number, bool, list, map, object
- 10.3 Expressions, referències i funcions built-in
- 10.4 Condicionals i bucles (count, for_each, for)
Capítol 11 · Providers i estat
- 11.1 Com funciona el provider d'AWS
- 11.2 El fitxer terraform.tfstate i la seva importància
- 11.3 State local vs state remot (S3 + DynamoDB)
- 11.4 Comandes essencials: init, plan, apply, destroy, fmt, validate
Capítol 12 · La teva primera infraestructura real amb Terraform
- 12.1 Crear una VPC amb subxarxes des de zero
- 12.2 Posar en marxa una instància EC2 pública
- 12.3 Associar un Security Group i una Elastic IP
- 12.4 Outputs i referències entre recursos
- 12.5 Flux de treball en equip: PR review de plans
Capítol 13 · Balanceig de càrrega i autoescalat
- 13.1 Application Load Balancer vs Network Load Balancer
- 13.2 Target Groups, listeners i regles
- 13.3 Auto Scaling Groups: polítiques i mètriques
- 13.4 Warm pools i lifecycle hooks
Capítol 14 · Serverless amb Lambda
- 14.1 El model d'execució de Lambda
- 14.2 Triggers: API Gateway, S3, DynamoDB Streams, SQS
- 14.3 Gestió de dependències i capes (Layers)
- 14.4 Cold starts i estratègies per reduir-los
- 14.5 Límits i antipatrones
Capítol 15 · Missatgeria i esdeveniments
- 15.1 SQS: cues estàndard vs FIFO, DLQ
- 15.2 SNS: topics, subscripcions, fan-out
- 15.3 EventBridge: event buses i regles
- 15.4 Patrons: pub/sub, desacoblament, saga
Capítol 16 · Lliurament de contingut i DNS
- 16.1 Route 53: tipus de registres i routing policies
- 16.2 CloudFront: distribucions, memòries cau i origins
- 16.3 ACM: certificats SSL/TLS gratuïts
- 16.4 WAF integrat amb CloudFront
Capítol 17 · Contenidors a AWS
- 17.1 Docker: repàs exprés de conceptes clau
- 17.2 ECR: registre privat d'imatges
- 17.3 ECS: task definitions, services, Fargate vs EC2
- 17.4 EKS: quan Kubernetes i quan no
Capítol 18 · Mòduls: reutilització i composició
- 18.1 Anatomia d'un mòdul Terraform
- 18.2 Variables d'entrada, outputs i dependències
- 18.3 Mòduls locals vs mòduls del Terraform Registry
- 18.4 Versionat de mòduls amb Git tags
- 18.5 Disseny de mòduls genèrics vs específics de domini
Capítol 19 · Workspaces i gestió d'entorns
- 19.1 Workspaces de Terraform: casos d'ús i limitacions
- 19.2 Estratègia de directoris per entorn (dev/stg/prod)
- 19.3 Terragrunt: DRY per a configuracions d'entorn
- 19.4 Variables d'entorn i fitxers .tfvars
Capítol 20 · Backends remots i locking
- 20.1 Configurar S3 + DynamoDB com a backend
- 20.2 State locking: evitar corrupció en equip
- 20.3 Migració d'estat entre backends
- 20.4 terraform import: portar recursos existents a l'estat
Capítol 21 · Testing d'infraestructura
- 21.1 Terraform validate i fmt en CI
- 21.2 Checkov i tfsec: anàlisi de seguretat estàtica
- 21.3 Terratest: tests d'integració en Go
- 21.4 Contract testing entre mòduls
Capítol 22 · Terraform en CI/CD
- 22.1 Pipeline bàsic: lint → plan → apply a GitHub Actions
- 22.2 Atlantis: GitOps per a Terraform
- 22.3 Terraform Cloud / HCP Terraform
- 22.4 Drift detection i reconciliació automàtica
Capítol 23 · Seguretat en profunditat
- 23.1 AWS Organizations i Service Control Policies
- 23.2 AWS Config: compliment continu
- 23.3 GuardDuty: detecció d'amenaces
- 23.4 Security Hub: visió centralitzada
- 23.5 KMS: gestió de claus i rotació
- 23.6 Secrets Manager vs Parameter Store
Capítol 24 · Observabilitat: logs, mètriques i traces
- 24.1 CloudWatch Logs, mètriques i alarmes
- 24.2 CloudWatch Dashboards i Contributor Insights
- 24.3 X-Ray: traçat distribuït
- 24.4 OpenTelemetry a AWS
- 24.5 Managed Grafana i Managed Prometheus
Capítol 25 · Optimització de costos
- 25.1 AWS Cost Explorer i pressupostos amb alertes
- 25.2 Trusted Advisor i Compute Optimizer
- 25.3 Rightsizing: com detectar sobredimensionament
- 25.4 Savings Plans vs Reserved Instances: decisió estratègica
- 25.5 FinOps: cultura i processos per controlar la despesa
Capítol 26 · Alta disponibilitat i disaster recovery
- 26.1 RTO i RPO: definir els objectius
- 26.2 Estratègies: backup/restore, pilot light, warm standby, multi-site
- 26.3 Route 53 health checks i failover automàtic
- 26.4 AWS Backup: política centralitzada de còpies
Capítol 27 · Well-Architected Framework d'AWS
- 27.1 Els sis pilars: excel·lència operacional, seguretat, fiabilitat, eficiència de rendiment, optimització de costos, sostenibilitat
- 27.2 Well-Architected Tool: revisions formals
- 27.3 Com aplicar el framework en decisions de disseny
Capítol 28 · Arquitectures serverless a escala
- 28.1 Event-driven architecture amb Lambda + EventBridge
- 28.2 Saga pattern per a transaccions distribuïdes
- 28.3 Step Functions: orquestració de workflows complexos
- 28.4 Lambda@Edge i CloudFront Functions
Capítol 29 · Plataformes de dades a AWS
- 29.1 Data Lake amb S3, Glue i Athena
- 29.2 Kinesis Data Streams i Firehose per a streaming
- 29.3 Redshift: data warehousing a escala
- 29.4 Lake Formation: govern del dada
Capítol 30 · Multi-compte i landing zones
- 30.1 Per què separar workloads en comptes diferents
- 30.2 AWS Control Tower i Account Factory
- 30.3 Gestió centralitzada de logs i seguretat
- 30.4 Terraform a escala multi-compte amb mòduls compartits
Capítol 31 · Platform Engineering i Internal Developer Platform
- 31.1 Golden paths i abstraccions sobre Terraform
- 31.2 Service Catalog d'AWS
- 31.3 Backstage com a portal de desenvolupadors
- 31.4 Mòduls Terraform com a producte intern
Capítol 32 · Certificacions AWS rellevants
- 32.1 Cloud Practitioner: val la pena?
- 32.2 Solutions Architect Associate → Professional
- 32.3 DevOps Engineer Professional
- 32.4 Specialty: Security, Database, Networking
- 32.5 HashiCorp Terraform Associate
Capítol 33 · Projectes per consolidar el que s'ha après
- 33.1 Projecte 1: blog serverless (S3 + CloudFront + Lambda + DynamoDB)
- 33.2 Projecte 2: API REST amb ECS Fargate + RDS + ALB
- 33.3 Projecte 3: plataforma de dades amb Glue + Athena + Redshift
- 33.4 Projecte 4: landing zone multi-compte amb Terraform i Control Tower
