Rotação de senha MySQL: usando um único usuário para alterar outras senhas de usuário

Aug 16 2020

Atualmente estou trabalhando na configuração de uma estratégia de rotação de senha para um aplicativo baseado em AWS Aurora / MySQL.

Meu plano era usar uma estratégia como esta ...

  • Nomes de usuários / senhas de aplicativos armazenados em parâmetros criptografados AWS SSM.
  • Os servidores de aplicativos têm acesso para recuperar apenas suas credenciais do SSM. Restrito pelo ambiente (teste, produção etc.)
  • Lambda configurado para executar periodicamente para alterar senhas no MySQL e armazenar os novos valores no SSM. Lambda para autenticar com o banco de dados usando funções AWS IAM, em vez de usar uma senha.

A última parte é a parte da qual não tenho certeza. Esta configuração requer que a função / usuário lambda tenha permissão para alterar as senhas de todos os outros usuários do aplicativo.

É uma maneira razoável de fazer isso, do ponto de vista da segurança? Visto que o usuário lambda mysql usará uma função IAM em vez de uma senha, isso deve restringir seu uso apenas a funções autorizadas.

A alternativa seria não ter um usuário db especial para o lambda fazer o login, mas, em vez disso, fazer com que a função lambda recupere as credenciais de cada usuário do SSM e, em seguida, faça o login como cada usuário para alterar sua senha.

De qualquer forma, o lambda precisará ter acesso a cada usuário.

Supondo que eu possa recuperar o acesso ao "lambda_user" no MySQL com cuidado, há algum outro problema evidente em ter um usuário autoridade para alterar as senhas de outros usuários?

Além disso, apenas para esclarecer, esses são usuários do aplicativo, não usuários normais do tipo humano que usarão essas credenciais.

Respostas

1 ConorMancone Aug 16 2020 at 17:39

Essa é a melhor prática para fazer isso, exatamente pelos motivos que você descreveu. Ao fazer com que o Lambda use uma função para autenticação em vez de credenciais, você minimiza o número de segredos que mantém, o que é definitivamente uma coisa boa. Existem apenas 2 coisas que vale a pena destacar:

  1. Agora você pode usar o CloudFormation para automatizar o provisionamento e a implantação de um Lambda de propósito especial apenas para isso. Como resultado, você pode fazer isso com relativa facilidade. Pessoalmente, não sou um grande fã do CloudFormation, mas o usaria aqui de qualquer maneira.

  2. Mudar para os terminais V2 de metadados pode fornecer alguma segurança adicional de SSRF encontrada em sua infraestrutura, bem como outras formas de invasão, embora isso não seja muito relevante neste caso de uso.