Cerramos el capítulo de seguridad con un problema muy práctico que hemos ido aplazando: ¿dónde guardas los secretos de tus aplicaciones? Las contraseñas de bases de datos, las claves de API, los tokens... no pueden estar escritos en el código ni en archivos .tfvars versionados (lo advertimos en el subcapítulo 19.4). AWS ofrece dos servicios para guardarlos de forma segura: Secrets Manager y Parameter Store. Veamos qué son y cuándo usar cada uno.

El problema: los secretos no pueden ir en el código

Toda aplicación necesita secretos: datos sensibles que le dan acceso a otros sistemas. Por ejemplo, la contraseña para conectarse a su base de datos. El error de principiante es ponerlos directamente en el código o en la configuración:

❌ MAL:  password = "MiContraseña123"  escrito en el código o en Git
   → cualquiera con acceso al repositorio ve el secreto
   → queda en el historial de Git para siempre
   → un desastre de seguridad esperando a ocurrir

Recuerda lo que vimos en el subcapítulo 19.4: nunca escribas secretos en archivos versionados. La solución es guardarlos en un gestor de secretos y que la aplicación los lea en el momento que los necesita.

La idea: guardar el secreto fuera y leerlo bajo demanda

Un gestor de secretos guarda los datos sensibles de forma cifrada y con acceso controlado. La aplicación, cuando arranca o cuando lo necesita, pide el secreto al gestor (demostrando que tiene permiso) y lo recibe. El secreto nunca está escrito en el código.

Aplicación  ──"dame la contraseña de la BD"──►  Gestor de secretos (cifrado)
            ◄──── la contraseña (si tienes permiso) ───
   → el secreto NO está en el código, se obtiene en el momento

Los secretos se cifran con KMS (subcapítulo 23.5) y el acceso se controla con IAM (Capítulo 7), aplicando el mínimo privilegio: solo la aplicación que necesita un secreto tiene permiso para leerlo.

Las dos opciones de AWS

AWS ofrece dos servicios para esto, y conviene saber distinguirlos:

Secrets Manager

Secrets Manager está diseñado específicamente para secretos (contraseñas, claves de API, credenciales). Su característica estrella es la rotación automática: puede cambiar automáticamente las contraseñas de forma periódica, integrándose con bases de datos como RDS para actualizar la contraseña tanto en el secreto como en la base de datos, sin interrupciones.

Secrets Manager:
  ✓ pensado para secretos
  ✓ ROTACIÓN AUTOMÁTICA de credenciales (su gran ventaja)
  ✓ integración nativa con bases de datos (RDS...)
  - tiene un coste por secreto

Parameter Store

Parameter Store (parte de AWS Systems Manager) es un servicio más general para guardar parámetros de configuración, que también puede guardar secretos (como «cadenas seguras» cifradas con KMS). Es más sencillo y su uso básico es gratuito, pero no ofrece la rotación automática de Secrets Manager.

Parameter Store:
  ✓ guarda configuración Y secretos (como "SecureString" cifrado)
  ✓ su nivel estándar es GRATIS
  ✓ sencillo y versátil
  - NO tiene rotación automática integrada

Tabla comparativa

Secrets Manager Parameter Store
Pensado para Secretos específicamente Configuración general (y secretos)
Rotación automática Sí (su gran ventaja) No
Integración con BD Nativa (RDS, etc.) No
Coste De pago (por secreto) Nivel estándar gratuito
Ideal para Credenciales que deben rotarse Configuración y secretos sencillos

Analogía: Parameter Store es como una caja fuerte general donde guardas documentos importantes y también algunas joyas; cumple, es barata y versátil. Secrets Manager es como una caja fuerte especializada para joyas de altísimo valor, con un servicio extra que cambia la combinación periódicamente por ti (la rotación). Cuesta más, pero para tus secretos más críticos, ese servicio de rotación vale la pena.

¿Cuál elijo?

La decisión depende sobre todo de si necesitas rotación automática y del coste:

  • Usa Secrets Manager cuando: necesitas rotación automática de credenciales (especialmente contraseñas de bases de datos), o quieres su integración nativa con RDS. Es la opción más robusta para secretos críticos.
  • Usa Parameter Store cuando: quieres una opción sencilla y gratuita para guardar configuración y secretos que no necesitan rotación automática, o estás empezando y quieres minimizar costes.

Para empezar: Parameter Store (nivel gratuito) es perfecto para guardar tus primeras configuraciones y secretos de forma segura. Cuando manejes credenciales críticas que deban rotarse (como en producción con bases de datos sensibles), da el salto a Secrets Manager.

Cómo se usa con Terraform y las aplicaciones

El patrón habitual conecta todo lo aprendido:

1. El secreto se guarda en Secrets Manager / Parameter Store (cifrado con KMS)
2. La aplicación (o Terraform) lo LEE en el momento, con permisos IAM
3. El secreto NUNCA aparece en el código ni en Git

Por ejemplo, Terraform puede leer un secreto existente con un bloque data (recuerda los data sources del subcapítulo 14.2) en lugar de tenerlo escrito. Y una aplicación en una Lambda o un contenedor pide el secreto al arrancar. ⚠️ Recuerda (del subcapítulo 11.2) que, si Terraform lee un secreto, este puede acabar en el estado, así que el estado debe estar cifrado y protegido.

Ejemplo del mundo real: una aplicación necesita conectarse a su base de datos de producción. La contraseña se guarda en Secrets Manager con rotación automática mensual. La aplicación, al arrancar, pide la contraseña a Secrets Manager (tiene permiso IAM para ese secreto concreto, y para ningún otro). Cuando Secrets Manager rota la contraseña, actualiza tanto el secreto como la base de datos, y la aplicación simplemente vuelve a pedir la nueva: todo sin que ningún humano vea ni escriba la contraseña jamás. Si un atacante consiguiera el código de la aplicación, no encontraría ninguna contraseña en él.

Lo que debes recordar

  • Los secretos (contraseñas, claves de API, tokens) nunca deben ir en el código ni en archivos versionados; se guardan en un gestor de secretos y la aplicación los lee en el momento, con permisos.
  • Los secretos se cifran con KMS (subcap. 23.5) y el acceso se controla con IAM (mínimo privilegio).
  • Secrets Manager: diseñado para secretos, con rotación automática de credenciales (su gran ventaja) e integración nativa con bases de datos; de pago.
  • Parameter Store: servicio general para configuración y secretos (como cadenas cifradas), sencillo y con nivel gratuito, pero sin rotación automática.
  • Elige Secrets Manager si necesitas rotación automática (credenciales críticas, BD de producción); Parameter Store para lo sencillo y gratuito. Para empezar, Parameter Store basta.
  • Patrón: el secreto vive en el gestor (cifrado), la app/Terraform lo lee con IAM, y nunca aparece en el código. ⚠️ Si Terraform lo lee, protege el estado (que puede contenerlo).

¡Has terminado el Capítulo 23! Ya dominas la seguridad en profundidad en AWS: límites organizativos, cumplimiento, amenazas, visión centralizada, cifrado y secretos. En el Capítulo 24 veremos la otra cara imprescindible de operar en producción: la observabilidad (logs, métricas y trazas).

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