Untuk memperkuat keamanan autentikasi database bawaan, Anda dapat menetapkan dan mengelola kebijakan sandi untuk pengguna database di instance AlloyDB untuk PostgreSQL.
Untuk ringkasan metode autentikasi yang tersedia di AlloyDB, lihat Autentikasi.
Tentang kebijakan sandi
Jika pengguna database aplikasi Anda melakukan autentikasi dengan instance AlloyDB menggunakan metode bawaan berbasis sandi, Anda dapat membuat autentikasi lebih aman dengan menerapkan sandi yang kuat. Anda dapat menentukan dan mengaktifkan penerapan sandi dengan menetapkan kebijakan sandi pada instance Anda.
Batasan kebijakan sandi
Kebijakan sandi AlloyDB memiliki batasan berikut:
Kebijakan sandi hanya berlaku untuk pengguna database bawaan (
BUILT_IN). Pengguna database berbasis IAM (IAM_BASED) dikecualikan dari kebijakan sandi instance.Kebijakan sandi hanya berlaku untuk sandi yang dibuat setelah Anda menetapkan kebijakan. Sandi pengguna yang ada tidak terpengaruh oleh perubahan kebijakan sandi.
Kebijakan sandi hanya berlaku untuk sandi yang dimasukkan sebagai teks biasa. Kebijakan sandi tidak berlaku untuk sandi yang dimasukkan sebagai string terenkripsi.
Menetapkan kebijakan sandi instance
Anda dapat menetapkan kebijakan sandi pada instance dengan mengonfigurasi flag sandi pada instance.
Larang nama pengguna: mencegah penggunaan nama pengguna dalam sandi.
Kompleksitas sandi: periksa apakah sandi berisi jumlah karakter huruf kecil, huruf besar, numerik, dan non-alfanumerik yang diizinkan. Periksa juga apakah panjang sandi valid.
Masa berlaku sandi: mewajibkan rotasi sandi berkala.
Untuk mengetahui daftar flag kebijakan sandi yang didukung AlloyDB, lihat Flag kebijakan sandi.
Untuk mematuhi standar keamanan dan selaras dengan panduan pemberi rekomendasi keamanan, Anda harus mengaktifkan ketiga opsi tersebut bersama-sama dengan mengonfigurasi flag penerapan utamanya ke ON:
password.enforce_password_does_not_contain_usernamepassword.enforce_complexitypassword.enforce_expiration
Jika Anda menetapkan salah satu dari tiga flag ini ke OFF atau menghilangkannya, pemberi rekomendasi keamanan akan menandai instance sebagai tidak mengaktifkan kebijakan sandi.
Terapkan kerumitan sandi
Untuk menerapkan kebijakan kerumitan sandi, lakukan hal berikut:
- Tetapkan flag
password.enforce_complexitykeON. - Gunakan flag kebijakan sandi untuk menentukan kebijakan sandi Anda.
Misalnya, untuk menerapkan kebijakan sandi yang menyatakan bahwa sandi harus berisi setidaknya satu huruf besar, satu angka, dan panjangnya minimal 10 karakter, Anda harus menetapkan flag berikut:
Flag
password.enforce_complexitykeONFlag
password.min_uppercase_letterske1Flag
password.min_numerical_charske1Flag
password.min_pass_lengthke10
Setelah flag ini ditetapkan, upaya untuk menetapkan sandi pengguna database yang
tidak mematuhi kebijakan sandi ini akan gagal. Misalnya, dengan kebijakan ini, perintah klien psql berikut akan gagal karena sandi foo kurang dari 10 karakter dan tidak berisi angka atau karakter huruf besar.
CREATE USER USERNAME WITH PASSWORD 'foo';
Menerapkan masa berlaku sandi
Untuk menerapkan kebijakan masa berlaku sandi, lakukan hal berikut:
Tetapkan flag
password.enforce_expirationkeON.Tetapkan flag
password.expiration_in_dayske jumlah hari setelah sandi ditetapkan hingga masa berlakunya berakhir.Tetapkan flag
password.notify_expiration_in_dayske jumlah hari sebelum masa berlaku sandi berakhir, saat pengguna mulai menerima notifikasi masa berlaku sandi.
Misalnya, untuk menerapkan kebijakan sandi yang menyatakan bahwa masa berlaku sandi berakhir setelah 30 hari dan pengguna diberi tahu 15 hari sebelum masa berlaku sandi berakhir, Anda menetapkan hal berikut:
Flag
password.enforce_expirationkeONFlag
password.expiration_in_dayske30Flag
password.notify_expiration_in_dayske15
Saat pengguna terhubung selama periode notifikasi sebelum sandinya
berakhir, AlloyDB akan menampilkan pesan berikut di koneksi
klien dan menulisnya ke postgres.log:
Caution: Password is set to expire soon. Be sure to update the password before the expiration time.
Jika masa berlaku sandi pengguna berakhir, pengguna tersebut tidak dapat terhubung ke instance AlloyDB. Untuk mereset sandi pengguna, lihat Mengubah sandi pengguna database.
Jangan izinkan nama pengguna dalam sandi
Untuk menerapkan kebijakan yang mencegah sandi berisi nama pengguna, lakukan hal berikut:
- Tetapkan flag
password.enforce_password_does_not_contain_usernamekeON.
Misalnya, untuk mencegah sandi berisi nama pengguna sebagai substring, tetapkan hal berikut:
- Flag
password.enforce_password_does_not_contain_usernamekeON
Jika flag ini ditetapkan, operasi berikut akan gagal karena sandi
alex-secret berisi nama pengguna alex:
CREATE USER alex WITH PASSWORD 'alex-secret';