AWS Secrets Manager
Guarda contraseñas, claves de API y tokens fuera del código, con rotación automática y permisos de IAM.
En palabras simples
Es la caja de seguridad del banco en vez del papelito bajo el teclado: hay que identificarse para abrirla, queda registrado quién la abrió, y el contenido se puede cambiar sin avisar a nadie.
Cuándo aplicarlo
Cuando una aplicación necesita una credencial para funcionar y esa credencial no debe estar en el código, en el repositorio ni en una variable de entorno escrita a mano.
- ▸La contraseña con la que la aplicación se conecta a RDS o Aurora
- ▸Claves de API de servicios de terceros
- ▸Rotar automáticamente la contraseña de la base de datos cada 30 días
- ▸Compartir una credencial entre varias cuentas sin copiarla
Vocabulario mínimo
- Secreto
- El valor protegido, cifrado con KMS y recuperable solo por quien tenga el permiso de IAM adecuado.
- Rotación
- El cambio periódico y automático del valor, ejecutado por una función Lambda que también lo actualiza en el destino.
- Versión y etiqueta de fase
- Cada rotación crea una versión nueva; las etiquetas marcan cuál es la vigente y cuál la anterior.
- Política de recursos
- El permiso que vive en el propio secreto y permite compartirlo con otra cuenta de forma controlada.
Costo y capa gratuita
- Cómo se cobra
- Una tarifa mensual por cada secreto almacenado, más un costo por cada diez mil llamadas de recuperación.
- Capa gratuita
- Solo una prueba gratuita de 30 días. Después, cada secreto genera cargo mensual, aunque sea pequeño.
Cuidado con los créditos
- ⚠Un secreto por cada variable de configuración: conviene agrupar valores relacionados en un solo secreto en formato JSON.
- ⚠Recuperar el secreto en cada invocación de Lambda en vez de guardarlo en caché fuera del controlador.
- ⚠Secretos de proyectos terminados que nadie borra y siguen facturando cada mes.
Descripción
La credencial escrita en el código es el error de seguridad más repetido de la industria, y el más difícil de deshacer: una vez que entra al historial de un repositorio, sigue ahí aunque se borre la línea. Secrets Manager existe para que ese valor nunca llegue a escribirse.
Lo que aporta frente a guardar el secreto en una variable de entorno es la rotación. Cambiar una contraseña de base de datos a mano implica coordinar el cambio en la base y en todas las aplicaciones que la usan. Secrets Manager hace las dos cosas con una función de rotación, sin tiempo de caída.
Cómo funciona
- Guardas el secreto, que queda cifrado con una clave de KMS.
- La aplicación lo pide por API en tiempo de ejecución, usando su rol de IAM. No hay contraseña escrita en ningún archivo.
- Cada recuperación queda registrada en CloudTrail: se sabe quién leyó qué y cuándo.
- Si activas la rotación, una función Lambda genera un valor nuevo, lo cambia en el servicio destino y publica la versión nueva del secreto.
- Las etiquetas de fase permiten que las conexiones abiertas terminen con el valor anterior mientras las nuevas ya usan el actual.
Manos a la obra
- Crea un secreto con la contraseña de una instancia de RDS de pruebas.
- Recupéralo desde una función Lambda con
boto3, guardándolo en caché fuera del controlador. - Revisa en CloudTrail el evento
GetSecretValueque acabas de generar. - Activa la rotación automática cada 30 días y observa la función que crea el asistente.
- Borra el secreto al terminar, teniendo en cuenta que hay un periodo de espera antes del borrado definitivo.
Ejemplo visual
La prueba de que el patrón funciona es sencilla: si alguien clona el repositorio completo, no obtiene ninguna credencial útil.
Cuándo NO es la mejor opción
- Parameter Store de Systems Manager — si no necesitas rotación automática: los parámetros seguros son gratuitos en su nivel estándar.
- Variables de entorno cifradas con KMS — si el valor cambia con cada despliegue y no necesita rotarse por separado.
Se usa junto con
Aparece en certificaciones
- AWS Certified Solutions Architect – Associate
- AWS Certified Developer – Associate
- AWS Certified Security – Specialty