Ротация паролей MySQL: использование одного пользователя для изменения паролей других пользователей

Aug 16 2020

В настоящее время я работаю над настройкой стратегии ротации паролей для приложения на базе AWS Aurora / MySQL.

Я планировал использовать такую ​​стратегию ...

  • Имена пользователей и пароли приложений хранятся в зашифрованных параметрах AWS SSM.
  • Серверы приложений имеют доступ для получения только своих учетных данных из SSM. Ограничено окружающей средой (постановка, производство и т. Д.)
  • Лямбда настроена на периодический запуск для изменения паролей в MySQL и сохранения новых значений в SSM. Lambda для аутентификации в базе данных с использованием ролей AWS IAM, а не с использованием пароля.

И последнее, в чем я не уверен. Эта конфигурация потребует, чтобы у лямбда-роли / пользователя было разрешение на изменение паролей для всех других пользователей приложения.

Это разумный способ сделать это с точки зрения безопасности? Поскольку пользователь lambda mysql будет использовать роль IAM, а не пароль, это должно ограничить его использование только авторизованными ролями.

Альтернативой было бы не иметь специального пользователя db для лямбда-входа для входа в систему, а, скорее, чтобы лямбда-функция извлекала учетные данные каждого пользователя из SSM, а затем входила в систему как каждый пользователь, чтобы изменить свой пароль.

В любом случае лямбда должен иметь доступ к каждому пользователю.

Предполагая, что я могу аккуратно получить доступ к "lambda_user" в MySQL, есть ли какие-либо другие вопиющие проблемы с предоставлением пользователю полномочий изменять пароли других пользователей?

Кроме того, чтобы уточнить, это пользователи приложения, а не обычные пользователи человеческого типа, которые будут использовать эти учетные данные.

Ответы

1 ConorMancone Aug 16 2020 at 17:39

Это лучший способ сделать это именно по указанным вами причинам. Если Lambda использует роль для аутентификации вместо учетных данных, вы минимизируете количество хранимых секретов, что определенно хорошо. Стоит отметить только 2 вещи:

  1. Теперь вы можете использовать CloudFormation для автоматизации подготовки и развертывания специальной лямбда-функции только для этого. В результате вы можете сделать это относительно легко. Я лично не большой поклонник CloudFormation, но я все равно использовал бы его здесь.

  2. Переключение на конечные точки метаданных V2 может обеспечить некоторую дополнительную защиту от SSRF, обнаруженного в вашей инфраструктуре, а также другие формы взлома, хотя в данном случае это не будет иметь большого значения.