Mengelola autentikasi bawaan menggunakan kebijakan sandi

Anda dapat menetapkan dan mengelola kebijakan sandi untuk pengguna database instance AlloyDB untuk PostgreSQL.

Untuk mengetahui ringkasan metode autentikasi yang tersedia di AlloyDB, lihat Autentikasi.

Tentang kebijakan sandi

Jika pengguna database aplikasi Anda melakukan autentikasi dengan instance AlloyDB menggunakan metode berbasis sandi bawaan, Anda dapat membuat autentikasi lebih aman dengan menerapkan sandi yang kuat. Anda dapat menentukan dan mengaktifkan penerapan sandi dengan menetapkan kebijakan sandi pada instance.

Batasan kebijakan sandi

Kebijakan sandi AlloyDB memiliki batasan berikut:

  • Kebijakan sandi hanya berlaku untuk sandi yang dibuat setelah Anda menetapkan kebijakan. Sandi pengguna yang ada tidak terpengaruh oleh perubahan dalam 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 nama pengguna digunakan dalam sandi.

  • Kompleksitas sandi: memeriksa apakah sandi berisi jumlah karakter huruf kecil, huruf besar, numerik, dan non-alfanumerik yang diizinkan. Periksa juga apakah panjang sandi valid.

  • Masa berlaku sandi: pastikan sandi dirotasi secara berkala.

Untuk mengetahui daftar flag kebijakan sandi yang didukung AlloyDB, lihat Flag kebijakan sandi.

Untuk mematuhi standar keamanan dan menyelaraskan 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_username
  • password.enforce_complexity
  • password.enforce_expiration

Jika Anda menetapkan salah satu dari ketiga flag ini ke OFF atau menghapusnya, pemberi rekomendasi keamanan akan menandai instance sebagai tidak memiliki kebijakan sandi yang diaktifkan.

Menerapkan kompleksitas sandi

Untuk menerapkan kebijakan kompleksitas sandi, lakukan hal berikut:

  1. Tetapkan flag ke ON.password.enforce_complexity
  2. 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:

  • password.enforce_complexity ke ON
  • Flag password.min_uppercase_letters ke 1
  • Flag password.min_numerical_chars ke 1
  • Flag password.min_pass_length ke 10

Setelah flag ini ditetapkan, upaya untuk menetapkan sandi pengguna database yang tidak mematuhi kebijakan sandi ini akan gagal. Misalnya, dengan kebijakan ini ditetapkan, 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:

  1. Tetapkan flag ke ON.password.enforce_expiration

  2. Tetapkan flag password.expiration_in_days ke jumlah hari setelah sandi ditetapkan hingga masa berlakunya berakhir.

  3. Tetapkan password.notify_expiration_in_days flag ke jumlah hari sebelum masa berlaku sandi berakhir hingga pengguna mulai menerima notifikasi masa berlaku sandi.

Misalnya, untuk menerapkan kebijakan sandi yang menyatakan bahwa masa berlaku sandi berakhir setelah 30 hari dan pengguna akan diberi tahu 15 hari sebelum masa berlaku sandi berakhir, Anda menetapkan hal berikut:

  • password.enforce_expiration ke ON
  • Flag password.expiration_in_days ke 30
  • Flag password.notify_expiration_in_days ke 15

Jika masa berlaku sandi pengguna berakhir, pengguna tersebut tidak dapat terhubung ke instance AlloyDB. Untuk mereset sandi pengguna, lihat Mengubah sandi pengguna database.

Tidak mengizinkan nama pengguna dalam sandi

Untuk menerapkan kebijakan yang mencegah sandi berisi nama pengguna, lakukan hal berikut:

Misalnya, untuk memastikan sandi tidak berisi nama pengguna sebagai substring, Anda menetapkan hal berikut:

  • password.enforce_password_does_not_contain_username ke ON

Jika flag ini ditetapkan, operasi berikut akan gagal karena sandi alex-secret berisi nama pengguna alex:

CREATE USER alex WITH PASSWORD 'alex-secret';

Langkah berikutnya