Saltar al contenido
← Catálogo
Seguridad e identidadIntermedio

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

  1. Guardas el secreto, que queda cifrado con una clave de KMS.
  2. 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.
  3. Cada recuperación queda registrada en CloudTrail: se sabe quién leyó qué y cuándo.
  4. 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.
  5. 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 GetSecretValue que 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

Una aplicación que nunca guarda la contraseñapidedescifrarotaAWS LambdaaplicaciónSecrets ManagercredencialAWS KMScifraAmazon RDSbase de datos
Una aplicación que nunca guarda la contraseñaLa función de AWS Lambda pide la credencial a AWS Secrets Manager usando su propio rol de IAM, y solo entonces se conecta a la base de datos de Amazon RDS. El secreto está cifrado con una clave de AWS KMS y cada recuperación queda registrada en AWS CloudTrail. Una función de rotación cambia periódicamente la contraseña en la base de datos y publica la versión nueva del secreto, sin que nadie tenga que editar el código ni reiniciar la aplicación.

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

Se usa junto con

Aparece en certificaciones

  • AWS Certified Solutions Architect – Associate
  • AWS Certified Developer – Associate
  • AWS Certified Security – Specialty