Rotasi kata sandi MySQL: Menggunakan satu pengguna untuk mengubah kata sandi pengguna lain
Saat ini saya sedang menyiapkan strategi rotasi kata sandi untuk aplikasi berbasis AWS Aurora / MySQL.
Rencanaku adalah menggunakan strategi seperti ini ...
- Nama pengguna / kata sandi aplikasi yang disimpan di parameter terenkripsi AWS SSM.
- Server aplikasi memiliki akses untuk mengambil hanya kredensial mereka dari SSM. Dibatasi oleh lingkungan (pementasan, produksi, dll.)
- Lambda dikonfigurasi untuk berjalan secara berkala untuk mengubah kata sandi di MySQL dan menyimpan nilai baru di SSM. Lambda untuk mengautentikasi dengan database menggunakan peran AWS IAM, daripada menggunakan kata sandi.
Bagian terakhir adalah bagian yang tidak saya yakini. Konfigurasi ini akan membutuhkan peran lambda / pengguna memiliki izin untuk mengubah sandi untuk semua pengguna aplikasi lain.
Apakah ini cara yang masuk akal untuk melakukannya, dari perspektif keamanan? Karena pengguna lambda mysql akan menggunakan peran IAM daripada kata sandi, ini harus membatasi penggunaannya hanya untuk peran yang diotorisasi.
Alternatifnya adalah tidak memiliki pengguna db khusus untuk lambda untuk masuk, melainkan memiliki fungsi lambda yang mengambil kredensial setiap pengguna dari SSM, dan kemudian masuk sebagai setiap pengguna untuk mengubah kata sandinya.
Bagaimanapun lambda harus memiliki akses ke setiap pengguna.
Dengan asumsi saya dapat dengan hati-hati mengambil akses ke "lambda_user" di MySQL, apakah ada masalah mencolok lainnya dengan memiliki pengguna yang memiliki kewenangan untuk mengubah sandi pengguna lain?
Selain itu, hanya untuk memperjelas, ini adalah pengguna aplikasi, bukan pengguna tipe manusia biasa yang akan menggunakan kredensial ini.
Jawaban
Ini adalah cara praktik terbaik untuk melakukannya, untuk alasan yang Anda uraikan. Dengan meminta Lambda menggunakan peran untuk otentikasi, bukan kredensial, Anda meminimalkan jumlah rahasia yang Anda simpan, yang tentunya merupakan hal yang baik. Hanya ada 2 hal yang perlu diperhatikan:
Anda sekarang dapat menggunakan CloudFormation untuk mengotomatiskan penyediaan dan penerapan Lambda tujuan khusus hanya untuk ini. Hasilnya, Anda dapat melakukan ini dengan relatif mudah. Secara pribadi saya bukan penggemar CloudFormation, tetapi saya akan tetap menggunakannya di sini.
Beralih ke titik akhir metadata V2 dapat memberikan keamanan tambahan dari SSRF yang ditemukan di infrastruktur Anda serta bentuk pembobolan lainnya, meskipun itu tidak terlalu relevan dalam kasus penggunaan ini.