AWS Secrets Manager
Una caja fuerte para contraseñas y claves de API, para que nunca vivan en tu código.
AWS Secrets Manager guarda los valores sensibles que necesita una aplicación: contraseñas de bases de datos, claves de API de servicios externos, claves privadas, tokens. Guardás un secreto bajo un nombre como prod/payments/stripe-key, y tu código lo pide por nombre en tiempo de ejecución a través de la API de AWS, con IAM decidiendo quién tiene permiso para leerlo. El valor está cifrado en reposo y nunca aparece en los logs.
El problema que ataca son los secretos en el lugar equivocado: adentro del código fuente, en un archivo de configuración subido a Git, en una variable de entorno que ve cualquiera que entre al servidor. Una vez que una contraseña llega a un repositorio es prácticamente pública, aunque después la borres. Secrets Manager además rota los secretos: para una base Amazon RDS puede cambiar la contraseña cada 30 días solo y actualizar el valor guardado, así una credencial filtrada dura poco.
Ejemplo: una función AWS Lambda necesita conectarse a una base de datos. Su rol de IAM permite secretsmanager:GetSecretValue sobre un secreto específico. Al arrancar, la función pide el secreto, se conecta, y lo cachea unos minutos. Cuando la contraseña rota, el próximo pedido trae la nueva. Ningún desarrollador ve jamás la contraseña de producción.
AWS también tiene Systems Manager Parameter Store, un lugar más simple y barato para valores de configuración (y para secretos que no necesitan rotación). Secrets Manager es la opción cuando importan la rotación y la auditoría.
Para quedarse
- Los secretos están cifrados, se leen por nombre a través de la API, y el acceso lo controla IAM.
- Rotación automática para RDS, Redshift y DocumentDB; rotación a medida con una función Lambda para cualquier otra cosa.
- Cada lectura queda registrada en CloudTrail, así sabés quién accedió a qué y cuándo.
- Se cobra por secreto por mes más llamadas a la API; Parameter Store es la opción barata para configuración común.