Mengelola autentikasi bawaan menggunakan kebijakan sandi

Pilih versi dokumentasi:

Halaman ini menjelaskan cara Anda dapat menyetel dan mengelola kebijakan sandi untuk AlloyDB Omni.

Tentang kebijakan sandi

Jika pengguna database aplikasi Anda melakukan autentikasi dengan AlloyDB Omni menggunakan metode bawaan berbasis sandi, Anda dapat meningkatkan keamanan autentikasi dengan menerapkan sandi kuat. Anda dapat menentukan dan mengaktifkan penerapan sandi dengan menetapkan kebijakan sandi AlloyDB Omni.

Batasan kebijakan sandi

Kebijakan sandi AlloyDB Omni memiliki batasan berikut:

  • Kebijakan sandi berlaku untuk sandi yang dibuat hanya 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 AlloyDB Omni

Anda menetapkan kebijakan sandi dengan memperbarui parameter sandi Konfigurasi Terpadu Besar (GUC) di file konfigurasi postgresql.conf. Untuk mempelajari cara menyetel parameter GUC, lihat Mengonfigurasi flag database AlloyDB Omni.

Kebijakan sandi untuk AlloyDB Omni dapat mencakup opsi berikut:

  • Larang nama pengguna: mencegah nama pengguna digunakan dalam sandi.

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

  • Masa berlaku sandi: pastikan sandi diubah secara berkala.

Untuk mengetahui daftar tanda kebijakan sandi yang didukung AlloyDB Omni, lihat Tanda kebijakan sandi.

Memuat library validasi sandi terlebih dahulu

Agar kebijakan sandi berlaku di AlloyDB Omni, library alloydb_password_validation harus dimuat. Untuk memuat library ini, lakukan hal berikut:

  1. Temukan file konfigurasi postgresql.conf untuk penginstalan AlloyDB Omni Anda dan buka di editor teks.

  2. Temukan baris shared_preload_libraries dan periksa apakah baris tersebut menyertakan alloydb_password_validation. Jika tidak ada, Anda harus menambahkannya. Setelah selesai, baris shared_preload_libraries Anda akan terlihat seperti berikut:

    shared_preload_libraries='google_columnar_engine,google_job_scheduler,google_storage,alloydb_password_validation'
    

Menerapkan kerumitan sandi

Untuk menerapkan kebijakan kompleksitas sandi, lakukan hal berikut:

  1. Verifikasi file postgresql.conf Anda memuat library validasi sandi terlebih dahulu.

  2. Tetapkan password.enforce_complexity flag ke ON.

  3. 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 minimal 10 karakter, Anda menetapkan hal berikut dalam file postgresql.conf:

  • password.enforce_complexity = ON
  • password.min_uppercase_letters = 1
  • password.min_numerical_chars = 1
  • password.min_pass_length = 10

Setelah tanda ini disetel, upaya untuk menyetel sandi pengguna database yang tidak mematuhi kebijakan sandi ini akan gagal. Misalnya, dengan kebijakan ini ditetapkan, perintah klien psql berikut gagal karena sandi foo kurang dari 10 karakter dan tidak berisi angka atau karakter huruf kapital.

CREATE USER USERNAME WITH PASSWORD foo;

Menerapkan masa berlaku sandi

Untuk menerapkan kebijakan masa berlaku sandi, lakukan hal berikut:

  1. Verifikasi file postgresql.conf Anda memuat library validasi sandi terlebih dahulu.

  2. Tetapkan password.enforce_expiration flag ke ON.

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

  4. Tetapkan password.notify_expiration_in_days flag ke jumlah hari sebelum masa berlaku sandi habis saat pengguna mulai menerima notifikasi habis 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 mereka berakhir, Anda harus menetapkan hal berikut dalam file postgresql.conf:

  • password.enforce_expiration = ON
  • password.expiration_in_days = 30
  • password.notify_expiration_in_days = 15

Jika masa berlaku sandi pengguna berakhir, pengguna tersebut tidak dapat terhubung ke AlloyDB Omni. Untuk mereset sandi pengguna, lakukan hal berikut:

  1. Hubungkan ke AlloyDB Omni menggunakan psql. Misalnya, jika Anda menginstal AlloyDB Omni menggunakan Docker, jalankan perintah berikut:

    docker exec -it CONTAINER-NAME psql -h localhost -U postgres
    
  2. Di prompt postgres=#, jalankan perintah berikut:

    ALTER USER USERNAME WITH 'NEW-PASSWORD';
    

Untuk mengetahui informasi selengkapnya tentang cara mengubah sandi pengguna, lihat ALTER ROLE dalam dokumentasi PostgreSQL.

Jangan izinkan nama pengguna dalam sandi

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

  1. Verifikasi file postgresql.conf Anda memuat library validasi sandi terlebih dahulu.

  2. Tetapkan password.enforce_password_does_not_contain_username ke ON.

Misalnya, untuk memastikan bahwa sandi tidak berisi nama pengguna sebagai substring, Anda menetapkan hal berikut dalam file postgresql.conf:

  • password.enforce_password_does_not_contain_username = ON

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

CREATE USER alex WITH PASSWORD 'alex-secret';

Langkah berikutnya