Rotación de contraseñas de MySQL: usar un solo usuario para cambiar las contraseñas de otros usuarios
Actualmente estoy trabajando en la configuración de una estrategia de rotación de contraseñas para una aplicación basada en AWS Aurora / MySQL.
Mi plan era usar una estrategia como esta ...
- Nombres de usuario / contraseñas de aplicaciones almacenados en parámetros cifrados de AWS SSM.
- Los servidores de aplicaciones tienen acceso para recuperar solo sus credenciales de SSM. Restringido por el entorno (puesta en escena, producción, etc.)
- Lambda configurado para ejecutarse periódicamente para cambiar contraseñas en MySQL y almacenar los nuevos valores en SSM. Lambda para autenticarse con la base de datos mediante roles de AWS IAM, en lugar de utilizar una contraseña.
La última parte es la parte de la que no estoy seguro. Esta configuración requeriría que el rol / usuario lambda tenga permiso para cambiar las contraseñas de todos los demás usuarios de la aplicación.
¿Es esta una forma razonable de hacerlo, desde una perspectiva de seguridad? Dado que el usuario lambda mysql usará un rol de IAM en lugar de una contraseña, esto debería volver a aplicar su uso solo a roles autorizados.
La alternativa sería no tener un usuario de base de datos especial para que la lambda inicie sesión, sino que la función lambda recupere las credenciales de cada usuario de SSM y luego inicie sesión como cada usuario para cambiar su contraseña.
De cualquier manera, la lambda necesitará tener acceso a cada usuario.
Suponiendo que pueda recuperar con cuidado el acceso al "lambda_user" en MySQL, ¿existen otros problemas evidentes para que un usuario tenga autoridad para cambiar las contraseñas de otros usuarios?
Además, solo para aclarar, estos son usuarios de la aplicación, no usuarios normales de tipo humano que usarán estas credenciales.
Respuestas
Esta es la mejor forma de hacerlo, exactamente por las razones que describe. Al hacer que Lambda use una función para la autenticación en lugar de las credenciales, minimiza la cantidad de secretos que guarda, lo que definitivamente es algo bueno. Solo hay 2 cosas que vale la pena señalar:
Ahora puede usar CloudFormation para automatizar el aprovisionamiento y la implementación de un Lambda de propósito especial solo para esto. Como resultado, puede hacer esto con relativa facilidad. Personalmente, no soy un gran admirador de CloudFormation, pero lo usaría aquí de todos modos.
El cambio a los extremos de metadatos V2 puede proporcionar cierta seguridad adicional de SSRF que se encuentra en su infraestructura, así como otras formas de intrusión, aunque eso no será muy relevante en este caso de uso.