Rotacja haseł MySQL: używanie jednego użytkownika do zmiany haseł innych użytkowników

Aug 16 2020

Obecnie pracuję nad ustawieniem strategii rotacji haseł dla aplikacji opartej na AWS Aurora / MySQL.

Planowałem zastosować taką strategię ...

  • Nazwy użytkowników / hasła aplikacji przechowywane w zaszyfrowanych parametrach AWS SSM.
  • Serwery aplikacji mają dostęp do pobierania tylko swoich poświadczeń z SSM. Ograniczone ze względu na środowisko (przemieszczanie, produkcja itp.)
  • Lambda skonfigurowana do okresowego uruchamiania w celu zmiany haseł w MySQL i przechowywania nowych wartości w SSM. Lambda do uwierzytelniania w bazie danych przy użyciu ról AWS IAM zamiast używania hasła.

Ostatni fragment to ten, którego nie jestem pewien. Ta konfiguracja wymagałaby, aby rola / użytkownik lambda miał uprawnienia do zmiany haseł dla wszystkich innych użytkowników aplikacji.

Czy to rozsądny sposób, aby to zrobić, z punktu widzenia bezpieczeństwa? Ponieważ użytkownik lambda mysql będzie używał roli IAM zamiast hasła, powinno to powtórzyć jego użycie tylko dla autoryzowanych ról.

Alternatywą byłoby nie posiadanie specjalnego użytkownika bazy danych do logowania się przez lambdę, ale raczej umożliwienie funkcji lambda pobierania danych uwierzytelniających każdego użytkownika z SSM, a następnie zalogowania się jako każdy użytkownik w celu zmiany hasła.

Tak czy inaczej, lambda będzie musiała mieć dostęp do każdego użytkownika.

Zakładając, że mogę ostrożnie odzyskać dostęp do „lambda_user” w MySQL, czy są jakieś inne rażące problemy z posiadaniem uprawnień do zmiany haseł innych użytkowników przez użytkownika?

Ponadto, dla wyjaśnienia, są to użytkownicy aplikacji, a nie zwykli użytkownicy, którzy będą używać tych poświadczeń.

Odpowiedzi

1 ConorMancone Aug 16 2020 at 17:39

Jest to najlepszy sposób, aby to zrobić, dokładnie z powodów, które przedstawiłeś. Dzięki temu, że Lambda używa roli do uwierzytelniania zamiast poświadczeń, minimalizujesz liczbę sekretów, które przechowujesz, co jest zdecydowanie dobrą rzeczą. Warto zwrócić uwagę tylko na 2 rzeczy:

  1. Możesz teraz użyć CloudFormation, aby zautomatyzować udostępnianie i wdrażanie specjalnego przeznaczenia Lambda właśnie do tego. W rezultacie możesz to zrobić ze względną łatwością. Osobiście nie jestem wielkim fanem CloudFormation, ale i tak bym go tutaj użył.

  2. Przełączanie się na punkty końcowe V2 metadanych może zapewnić dodatkowe zabezpieczenia z SSRF znalezione w Twojej infrastrukturze, a także inne formy włamania, chociaż nie będzie to zbyt istotne w tym przypadku użycia.