Hasta ahora hemos hablado de límites, cumplimiento, amenazas y visión centralizada. Ahora bajamos a un nivel más concreto: la protección de los datos mediante cifrado. Hemos mencionado el cifrado muchas veces (bases de datos cifradas, estado cifrado, HTTPS...), pero ¿dónde se guardan las claves que cifran y descifran? Esa es la misión de KMS (Key Management Service), el servicio de gestión de claves de AWS.
Repaso: qué es el cifrado y por qué importa
Cifrar es transformar datos legibles en datos ilegibles, usando una clave. Solo quien tenga la clave puede volver a leerlos (descifrarlos). Es la protección fundamental de los datos:
Datos legibles ──[cifrar con clave]──► datos ilegibles (xK9#mP2$...) Datos ilegibles ──[descifrar con clave]──► datos legibles
Si alguien roba tus datos cifrados pero no tiene la clave, solo ve ruido inútil. Por eso se cifra: la información sensible (datos de clientes, contraseñas, copias de seguridad) debe estar cifrada tanto en reposo (almacenada) como en tránsito (viajando por la red, recuerda HTTPS, subcapítulo 16.3).
El problema: ¿dónde guardas las claves?
El cifrado es tan fuerte como la protección de las claves. Si guardas la clave junto a los datos cifrados, es como dejar la llave pegada a la cerradura: no sirve de nada. Y gestionar claves a mano es muy difícil:
- ¿Dónde las guardas de forma segura?
- ¿Cómo controlas quién puede usarlas?
- ¿Cómo las rotas (cambias periódicamente) sin romper nada?
- ¿Cómo evitas perderlas (lo que dejaría tus datos ilegibles para siempre)?
Para resolver todo esto existe KMS.
Qué es KMS
KMS (Key Management Service) es el servicio de AWS para crear, guardar y gestionar las claves de cifrado de forma centralizada y segura. Las claves «maestras» nunca salen de KMS sin cifrar; AWS las protege en hardware especializado y muy seguro.
KMS (la "caja fuerte de las claves")
├── guarda las claves maestras de forma ultrasegura
├── controla quién puede usar cada clave (con IAM)
├── registra cada uso de cada clave (auditoría)
└── rota las claves automáticamenteAnalogía: KMS es como la caja fuerte de un banco para las llaves, custodiada por guardias. Tú no te llevas las llaves maestras a casa (donde podrían robártelas): se quedan en la cámara acorazada. Cuando necesitas abrir algo, el banco usa la llave por ti, dentro de la cámara, y registra quién pidió abrir qué y cuándo. Las llaves nunca salen al exterior desprotegidas.
Cómo se usa KMS (lo bueno: casi solo)
Lo mejor de KMS es que se integra con casi todos los servicios de AWS y hace el cifrado prácticamente transparente. Recuerda todas las veces que dijimos «activa el cifrado» en el libro:
- S3 (Capítulo 5): cifrar los objetos de un bucket.
- RDS (Capítulo 8): cifrar la base de datos.
- EBS (discos de EC2): cifrar el almacenamiento.
- El estado de Terraform (subcapítulo 20.1):
encrypt = true.
En todos esos casos, detrás está KMS gestionando la clave. Tú solo dices «cifra esto con esta clave de KMS», y AWS se encarga de cifrar y descifrar automáticamente cuando hace falta, sin que tu aplicación tenga que manejar las claves.
"Cifra este bucket S3 con mi clave de KMS" → AWS cifra los datos al guardarlos (usando KMS) → AWS los descifra al leerlos (si tienes permiso) → todo automático y transparente para tu aplicación
Control de acceso a las claves
Una pieza clave: quién puede usar cada clave se controla con IAM (Capítulo 7) y las políticas de la clave. Esto es muy potente, porque añade una segunda barrera:
Aunque alguien tenga acceso a unos datos cifrados, si no tiene permiso para usar la clave de KMS que los descifra, no puede leerlos. Es una capa extra de protección: separas «acceder al dato» de «poder descifrarlo».
Aplica el mínimo privilegio (subcapítulo 7.2): solo quien realmente necesita descifrar ciertos datos debe tener permiso sobre esa clave.
La rotación de claves
Una buena práctica de seguridad es rotar las claves periódicamente: cambiarlas cada cierto tiempo, para que, si una clave se viera comprometida, su «ventana de utilidad» para un atacante sea limitada. Hacer esto a mano sería un lío enorme (habría que recifrar todo con la clave nueva).
KMS ofrece rotación automática: puedes activar que una clave se rote sola (por ejemplo, una vez al año) sin que tengas que hacer nada y sin romper el acceso a los datos ya cifrados. KMS gestiona las versiones de la clave por debajo de forma transparente.
Rotación automática activada: → KMS cambia la clave periódicamente, solo → los datos antiguos siguen siendo accesibles → sin trabajo manual, sin interrupciones
Auditoría: quién usó qué clave
KMS registra cada uso de cada clave (integrado con CloudTrail). Así puedes saber quién descifró qué y cuándo, lo cual es esencial para investigar incidentes y para cumplir normativas. Si hubiera un acceso indebido a datos sensibles, el rastro queda.
Ejemplo del mundo real: un hospital almacena historiales médicos en AWS, cifrados con KMS. Por ley, deben proteger esos datos y poder demostrar quién accede a ellos. Con KMS: los datos están cifrados, solo el personal autorizado tiene permiso sobre la clave que los descifra, las claves se rotan automáticamente cada año, y cada acceso queda registrado. Si un empleado intentara descifrar historiales sin autorización, no podría (no tiene permiso sobre la clave) y el intento quedaría registrado. El hospital cumple la normativa y protege a sus pacientes.
Lo que debes recordar
- El cifrado protege los datos (en reposo y en tránsito) volviéndolos ilegibles sin la clave; pero el cifrado es tan fuerte como la protección de las claves (no sirve «dejar la llave en la cerradura»).
- KMS (Key Management Service) es la caja fuerte de las claves de AWS: las crea, guarda y gestiona de forma ultrasegura; las claves maestras nunca salen sin protección.
- Se integra con casi todos los servicios (S3, RDS, EBS, estado de Terraform...) haciendo el cifrado transparente: tú dices «cifra con esta clave» y AWS cifra/descifra solo.
- El acceso a las claves se controla con IAM (mínimo privilegio): aunque alguien acceda a los datos cifrados, sin permiso sobre la clave no puede leerlos (barrera extra).
- Ofrece rotación automática de claves (sin trabajo manual ni interrupciones) y auditoría de cada uso (quién descifró qué y cuándo), esencial para entornos regulados.
En el último subcapítulo del capítulo veremos dónde guardar los secretos de tus aplicaciones (contraseñas, claves de API): Secrets Manager y Parameter Store.
Cloud, AWS & Terraform — De cero a experto
Capítulo 1 · Qué es el cloud computing
- 1.1 El modelo cliente-servidor tradicional
- 1.2 Problemas que venía a resolver la nube
- 1.3 On-premise vs cloud vs híbrido
- 1.4 Los tres modelos de servicio: IaaS, PaaS, SaaS
- 1.5 Los cinco pilares del cloud (según NIST)
- 1.6 Ventajas reales: elasticidad, pago por uso, disponibilidad global
Capítulo 2 · El mercado cloud y los grandes proveedores
- 2.1 AWS, Azure y GCP: diferencias y cuotas de mercado
- 2.2 Por qué aprender AWS primero
- 2.3 Conceptos que son universales entre proveedores
Capítulo 3 · Regiones, zonas de disponibilidad y edge
- 3.1 Qué es una región AWS y cómo elegirla
- 3.2 Availability Zones: alta disponibilidad desde el diseño
- 3.3 Edge locations y CloudFront
- 3.4 Latencia, resiliencia y soberanía de datos
Capítulo 4 · Cómputo: EC2
- 4.1 Instancias: tipos, familias y cuándo elegir cada una
- 4.2 AMIs, key pairs y Security Groups
- 4.3 Ciclo de vida de una instancia
- 4.4 Elastic IPs y Placement Groups
- 4.5 Savings Plans vs Reserved vs On-Demand vs Spot
Capítulo 5 · Almacenamiento: S3
- 5.1 Buckets, objetos y claves
- 5.2 Clases de almacenamiento (Standard, IA, Glacier…)
- 5.3 Versionado y ciclo de vida de objetos
- 5.4 Políticas de bucket y ACLs
- 5.5 Hosting de sitios web estáticos
Capítulo 6 · Redes: VPC
- 6.1 Qué es una VPC y por qué la necesitas
- 6.2 Subredes públicas y privadas
- 6.3 Internet Gateway y NAT Gateway
- 6.4 Route Tables y Network ACLs
- 6.5 VPC Peering y endpoints
Capítulo 7 · Identidad y acceso: IAM
- 7.1 Usuarios, grupos, roles y políticas
- 7.2 El principio de mínimo privilegio
- 7.3 Políticas basadas en identidad vs en recurso
- 7.4 MFA y credenciales temporales (STS)
- 7.5 Buenas prácticas de seguridad IAM
Capítulo 8 · Bases de datos gestionadas
- 8.1 RDS: motores, Multi-AZ y réplicas de lectura
- 8.2 Aurora y sus ventajas sobre RDS vanilla
- 8.3 DynamoDB: modelo clave-valor / documentos
- 8.4 ElastiCache para caché en memoria
- 8.5 Cuándo usar cada tipo de base de datos
Capítulo 9 · Por qué Infraestructura como Código
- 9.1 Problemas del aprovisionamiento manual
- 9.2 IaC declarativo vs imperativo
- 9.3 Terraform vs CloudFormation vs Pulumi vs CDK
- 9.4 El ciclo plan → apply → destroy
Capítulo 10 · HCL: el lenguaje de Terraform
- 10.1 Bloques resource, variable, output, locals
- 10.2 Tipos de datos: string, number, bool, list, map, object
- 10.3 Expresiones, referencias y funciones built-in
- 10.4 Condicionales y bucles (count, for_each, for)
Capítulo 11 · Providers y estado
- 11.1 Cómo funciona el provider de AWS
- 11.2 El fichero terraform.tfstate y su importancia
- 11.3 State local vs state remoto (S3 + DynamoDB)
- 11.4 Comandos esenciales: init, plan, apply, destroy, fmt, validate
Capítulo 12 · Tu primera infraestructura real en Terraform
- 12.1 Crear una VPC con subredes desde cero
- 12.2 Levantar una instancia EC2 pública
- 12.3 Asociar un Security Group y una Elastic IP
- 12.4 Outputs y referencias entre recursos
- 12.5 Flujo de trabajo en equipo: PR review de planes
Capítulo 13 · Balanceo de carga y autoescalado
- 13.1 Application Load Balancer vs Network Load Balancer
- 13.2 Target Groups, listeners y reglas
- 13.3 Auto Scaling Groups: políticas y métricas
- 13.4 Warm pools y lifecycle hooks
Capítulo 14 · Serverless con Lambda
- 14.1 El modelo de ejecución de Lambda
- 14.2 Triggers: API Gateway, S3, DynamoDB Streams, SQS
- 14.3 Gestión de dependencias y capas (Layers)
- 14.4 Cold starts y estrategias para reducirlos
- 14.5 Límites y antipatrones
Capítulo 15 · Mensajería y eventos
- 15.1 SQS: colas estándar vs FIFO, DLQ
- 15.2 SNS: topics, suscripciones, fan-out
- 15.3 EventBridge: event buses y reglas
- 15.4 Patrones: pub/sub, desacoplamiento, saga
Capítulo 16 · Entrega de contenido y DNS
- 16.1 Route 53: tipos de registros y routing policies
- 16.2 CloudFront: distribuciones, cachés y origins
- 16.3 ACM: certificados SSL/TLS gratuitos
- 16.4 WAF integrado con CloudFront
Capítulo 17 · Contenedores en AWS
- 17.1 Docker: repaso exprés de conceptos clave
- 17.2 ECR: registro privado de imágenes
- 17.3 ECS: task definitions, services, Fargate vs EC2
- 17.4 EKS: cuándo Kubernetes y cuándo no
Capítulo 18 · Módulos: reutilización y composición
- 18.1 Anatomía de un módulo Terraform
- 18.2 Variables de entrada, outputs y dependencias
- 18.3 Módulos locales vs módulos del Terraform Registry
- 18.4 Versionado de módulos con Git tags
- 18.5 Diseño de módulos genéricos vs específicos de dominio
Capítulo 19 · Workspaces y gestión de entornos
- 19.1 Workspaces de Terraform: casos de uso y limitaciones
- 19.2 Estrategia de directorios por entorno (dev/stg/prod)
- 19.3 Terragrunt: DRY para configuraciones de entorno
- 19.4 Variables de entorno y archivos .tfvars
Capítulo 20 · Backends remotos y locking
- 20.1 Configurar S3 + DynamoDB como backend
- 20.2 State locking: evitar corrupción en equipo
- 20.3 Migración de estado entre backends
- 20.4 terraform import: traer recursos existentes al estado
Capítulo 21 · Testing de infraestructura
- 21.1 Terraform validate y fmt en CI
- 21.2 Checkov y tfsec: análisis de seguridad estático
- 21.3 Terratest: tests de integración en Go
- 21.4 Contract testing entre módulos
Capítulo 22 · Terraform en CI/CD
- 22.1 Pipeline básico: lint → plan → apply en GitHub Actions
- 22.2 Atlantis: GitOps para Terraform
- 22.3 Terraform Cloud / HCP Terraform
- 22.4 Drift detection y reconciliación automática
Capítulo 23 · Seguridad en profundidad
- 23.1 AWS Organizations y Service Control Policies
- 23.2 AWS Config: compliance continuo
- 23.3 GuardDuty: detección de amenazas
- 23.4 Security Hub: visión centralizada
- 23.5 KMS: gestión de claves y rotación
- 23.6 Secrets Manager vs Parameter Store
Capítulo 24 · Observabilidad: logs, métricas y trazas
- 24.1 CloudWatch Logs, métricas y alarmas
- 24.2 CloudWatch Dashboards y Contributor Insights
- 24.3 X-Ray: trazado distribuido
- 24.4 OpenTelemetry en AWS
- 24.5 Managed Grafana y Managed Prometheus
Capítulo 25 · Optimización de costes
- 25.1 AWS Cost Explorer y presupuestos con alertas
- 25.2 Trusted Advisor y Compute Optimizer
- 25.3 Rightsizing: cómo detectar sobredimensionamiento
- 25.4 Savings Plans vs Reserved Instances: decisión estratégica
- 25.5 FinOps: cultura y procesos para controlar el gasto
Capítulo 26 · Alta disponibilidad y disaster recovery
- 26.1 RTO y RPO: definir los objetivos
- 26.2 Estrategias: backup/restore, pilot light, warm standby, multi-site
- 26.3 Route 53 health checks y failover automático
- 26.4 AWS Backup: política centralizada de copias
Capítulo 27 · Well-Architected Framework de AWS
- 27.1 Los seis pilares: excelencia operacional, seguridad, fiabilidad, eficiencia de rendimiento, optimización de costes, sostenibilidad
- 27.2 Well-Architected Tool: revisiones formales
- 27.3 Cómo aplicar el framework en decisiones de diseño
Capítulo 28 · Arquitecturas serverless a escala
- 28.1 Event-driven architecture con Lambda + EventBridge
- 28.2 Saga pattern para transacciones distribuidas
- 28.3 Step Functions: orquestación de workflows complejos
- 28.4 Lambda@Edge y CloudFront Functions
Capítulo 29 · Plataformas de datos en AWS
- 29.1 Data Lake con S3, Glue y Athena
- 29.2 Kinesis Data Streams y Firehose para streaming
- 29.3 Redshift: data warehousing a escala
- 29.4 Lake Formation: gobierno del dato
Capítulo 30 · Multi-cuenta y landing zones
- 30.1 Por qué separar workloads en cuentas distintas
- 30.2 AWS Control Tower y Account Factory
- 30.3 Gestión centralizada de logs y seguridad
- 30.4 Terraform a escala multi-cuenta con módulos compartidos
Capítulo 31 · Platform Engineering e Internal Developer Platform
- 31.1 Golden paths y abstracciones sobre Terraform
- 31.2 Service Catalog de AWS
- 31.3 Backstage como portal de desarrolladores
- 31.4 Módulos Terraform como producto interno
Capítulo 32 · Certificaciones AWS relevantes
- 32.1 Cloud Practitioner: ¿vale 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ítulo 33 · Proyectos para consolidar lo aprendido
- 33.1 Proyecto 1: blog serverless (S3 + CloudFront + Lambda + DynamoDB)
- 33.2 Proyecto 2: API REST con ECS Fargate + RDS + ALB
- 33.3 Proyecto 3: plataforma de datos con Glue + Athena + Redshift
- 33.4 Proyecto 4: landing zone multi-cuenta con Terraform y Control Tower
