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áticamente

Analogí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

Capítulo 2 · El mercado cloud y los grandes proveedores

Capítulo 3 · Regiones, zonas de disponibilidad y edge

Capítulo 4 · Cómputo: EC2

Capítulo 5 · Almacenamiento: S3

Capítulo 6 · Redes: VPC

Capítulo 7 · Identidad y acceso: IAM

Capítulo 8 · Bases de datos gestionadas

Capítulo 9 · Por qué Infraestructura como Código

Capítulo 10 · HCL: el lenguaje de Terraform

Capítulo 11 · Providers y estado

Capítulo 12 · Tu primera infraestructura real en Terraform

Capítulo 13 · Balanceo de carga y autoescalado

Capítulo 14 · Serverless con Lambda

Capítulo 15 · Mensajería y eventos

Capítulo 16 · Entrega de contenido y DNS

Capítulo 17 · Contenedores en AWS

Capítulo 18 · Módulos: reutilización y composición

Capítulo 19 · Workspaces y gestión de entornos

Capítulo 20 · Backends remotos y locking

Capítulo 21 · Testing de infraestructura

Capítulo 22 · Terraform en CI/CD

Capítulo 23 · Seguridad en profundidad

Capítulo 24 · Observabilidad: logs, métricas y trazas

Capítulo 25 · Optimización de costes

Capítulo 26 · Alta disponibilidad y disaster recovery

Capítulo 27 · Well-Architected Framework de AWS

Capítulo 28 · Arquitecturas serverless a escala

Capítulo 29 · Plataformas de datos en AWS

Capítulo 30 · Multi-cuenta y landing zones

Capítulo 31 · Platform Engineering e Internal Developer Platform

Capítulo 32 · Certificaciones AWS relevantes

Capítulo 33 · Proyectos para consolidar lo aprendido

Capítulo 34 · Recursos y comunidad

© Copyright 2024. Todos los derechos reservados