Parte: 10 — Seguridad en la nube y contenedores · Fuente: HashiCorp Terraform docs y OWASP Infrastructure as Code Security ⏱️ Duración estimada: 120 min · Nivel: Intermedio
Aplicar seguridad al código que define la infraestructura. El alumno aprenderá a escanear
configuraciones Terraform en busca de misconfiguraciones (tfsec/Checkov), a proteger el estado
(state) que contiene datos sensibles, a evitar secretos en el código y a integrar estos controles
en el pipeline para detectar problemas antes de desplegar.
Al finalizar, el alumno podrá:
state remoto (cifrado, bloqueo, acceso restringido).plan + escaneo + policy).| # | Tema | Por qué importa |
|---|---|---|
| 1 | IaC y drift | Reproducibilidad y coherencia con lo desplegado |
| 2 | Escaneo estático (tfsec/Checkov) | Detectar misconfig antes de aplicar |
| 3 | Gestión del state | Contiene secretos y estado sensible |
| 4 | Secretos en Terraform | Nunca en texto plano ni en el state |
| 5 | Módulos y proveedores confiables | Cadena de suministro de IaC |
| 6 | Policy-as-code (OPA/Sentinel) | Guardarraíles automáticos |
| 7 | IaC en el pipeline CI/CD | Shift-left de la seguridad de infra |
terraform plan lo detecta.# Escaneo estático de un directorio Terraform
tfsec .
checkov -d .
# Validar un plan contra políticas OPA
terraform plan -out plan.tfplan && terraform show -json plan.tfplan > plan.json
conftest test plan.json
acl = "public-read", un security group con 0.0.0.0/0 en el puerto 22 y un recurso sin cifrado.tfsec . y checkov -d .; anota los identificadores de cada hallazgo y su severidad..tf.terraform plan.fmt → validate → tfsec/checkov → plan → conftest → (aprobación) → apply. Falla el pipeline si el escaneo encuentra un hallazgo crítico.terraform plan.Toma un repositorio Terraform con misconfiguraciones y déjalo "verde": sin hallazgos críticos en tfsec/Checkov, con state remoto cifrado y bloqueado, sin secretos en el código, y con una policy OPA que bloquea recursos inseguros en el pipeline.
Criterio de aceptación: tfsec y checkov reportan 0 hallazgos críticos/altos, conftest
rechaza un plan que reintroduzca un bucket público, y no hay ningún secreto en texto plano en los
.tf ni en el backend.
| Síntoma / mensaje | Causa y cómo arreglar |
|---|---|
Secreto visible en terraform.tfstate |
El recurso guardó el valor en el state; usa un gestor de secretos y cifra el backend. |
| tfsec pasa pero el recurso sigue inseguro | Regla suprimida con #tfsec:ignore; revisa las supresiones injustificadas. |
Error acquiring the state lock |
Otro apply en curso o lock huérfano; espera o libera con force-unlock con cuidado. |
| Drift no detectado | Cambios fuera de Terraform; ejecuta plan periódicamente y usa detección de drift. |
| Módulo malicioso o desactualizado | Origen no verificado; fija versión y usa fuentes confiables. |
❓ ¿Por qué el state de Terraform es sensible? Porque puede contener valores en texto plano (contraseñas de bases de datos, claves) y el mapa completo de tu infraestructura. Debe cifrarse en reposo, tener acceso restringido y bloqueo para evitar corrupción.
❓ ¿tfsec o Checkov? Ambos son buenos; suelen usarse juntos porque sus reglas no coinciden al 100%. Checkov cubre más frameworks (Terraform, CloudFormation, Kubernetes) y tfsec es muy rápido para Terraform. Ejecuta los dos en CI.
❓ ¿El escaneo estático reemplaza al CSPM? No. El escaneo IaC detecta problemas antes de desplegar (shift-left); el CSPM (clase 231) evalúa lo ya desplegado en tiempo de ejecución, incluyendo cambios hechos fuera de Terraform. Se complementan.
Clase 229 — Kubernetes: hardening y ataques