← Volver al catálogo

AWS Secrets Manager

En una frase: Guarda contraseñas y claves de API cifradas y las rota automáticamente cada cierto tiempo

Qué es

AWS Secrets Manager guarda secretos (credenciales de bases de datos, claves de API (Application Programming Interface: interfaz para que los programas se comuniquen), tokens OAuth) cifrados con KMS (Key Management Service) y los entrega a las aplicaciones mediante una llamada a la API con permisos de IAM (Identity and Access Management). Su punto fuerte es la rotación automática: cambia la contraseña en la base de datos y en el secreto sin que tengas que tocar la aplicación. Así los secretos salen del código, de los ficheros de configuración y de los repositorios.

Conceptos clave

  • Secreto: un valor (a menudo un JSON (JavaScript Object Notation: formato de datos en texto) con usuario, contraseña, host y puerto) de hasta 64 KB, cifrado con una clave de KMS (la de AWS aws/secretsmanager o una tuya).
  • Versiones y etiquetas: AWSCURRENT (la vigente), AWSPENDING (durante la rotación) y AWSPREVIOUS (la anterior).
  • Rotación:
    • Gestionada para RDS (Relational Database Service), Aurora, Redshift y DocumentDB: RDS puede gestionar él mismo la contraseña maestra en Secrets Manager.
    • Con una función Lambda para cualquier otro secreto, con plantillas para los casos habituales.
    • Estrategias de un usuario (se cambia su contraseña) o de usuarios alternos (se alternan dos usuarios para no cortar conexiones).
  • Caché en el cliente: bibliotecas de caché y la extensión de Lambda reducen las llamadas y la latencia.
  • Replicación entre regiones de un secreto para aplicaciones multirregión y recuperación ante desastres.
  • Políticas de recursos para compartir un secreto con otras cuentas (con una clave de KMS gestionada por el cliente).
  • Borrado: ventana de recuperación de 7 a 30 días, o borrado forzado sin recuperación desde la API.
  • Integraciones: referencias dinámicas en CloudFormation, secretos en definiciones de tareas de ECS (Elastic Container Service), en EKS (Elastic Kubernetes Service) y como parámetros de Parameter Store.

Casos de uso típicos

  • Credenciales de RDS o Aurora con rotación automática.
  • Claves de API de terceros para funciones Lambda o contenedores.
  • Eliminar contraseñas de ficheros de configuración y de pipelines de CI/CD (Continuous Integration / Continuous Delivery: integración y entrega continuas).
  • Secretos compartidos entre cuentas de una organización.

Cuándo NO usarlo

  • Parámetros de configuración que no son secretos o secretos sin rotación con muchísimos valores: Parameter Store es más barato (el nivel estándar es gratuito).
  • Certificados TLS (Transport Layer Security: cifrado de las conexiones): AWS Certificate Manager.
  • Claves criptográficas: KMS (Secrets Manager guarda valores, no hace operaciones criptográficas).

Secrets Manager frente a Parameter Store

CaracterísticaSecrets ManagerParameter Store
Rotación automáticaSí, gestionada o con LambdaNo integrada
CifradoSiempre, con KMSOpcional (SecureString)
Replicación entre regionesSíNo
Compartir entre cuentasSí, con política de recursosSolo parámetros avanzados
PrecioPor secreto al mes y por llamadasEstándar gratis; avanzado de pago

Modelo de precios

Se paga una cuota mensual por cada secreto (y por cada réplica en otra región) y por cada 10 000 llamadas a la API. Las rotaciones con Lambda añaden el coste de la función, y usar una clave de KMS propia añade el de KMS. Cachear los secretos en el cliente reduce las llamadas.

Seguridad y alta disponibilidad

  • Cifrado en reposo con KMS y en tránsito con TLS.
  • Acceso con políticas de IAM y de recursos, con mínimo privilegio por secreto.
  • Endpoint de VPC (Virtual Private Cloud) para leer secretos sin salir a internet.
  • Auditoría de cada acceso en CloudTrail.
  • Servicio regional; réplicas en otras regiones para recuperación ante desastres.

Trampas de examen

  • "Rotar automáticamente la contraseña de la base de datos": Secrets Manager.
  • "Guardar configuración de forma barata, sin rotación": Parameter Store.
  • "Contraseña en el código o en el repositorio": mover a Secrets Manager y darle permiso al rol.
  • "Rotación de un secreto que no es de RDS": función Lambda de rotación.
  • "Secreto disponible en la región de recuperación": replicación de secretos.
  • "No se puede crear un secreto con el mismo nombre": el anterior está en su ventana de recuperación.

Preguntas de práctica

Preguntas originales escritas para estos apuntes. No son preguntas reales de examen.

Fuentes