Halaman ini menjelaskan cara menetapkan dan mengelola kebijakan sandi untuk AlloyDB Omni.
Tentang kebijakan sandi
Jika pengguna database aplikasi Anda melakukan autentikasi dengan AlloDB Omni 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 AlloyDB Omni.
Batasan kebijakan sandi
Kebijakan sandi AlloyDB Omni memiliki batasan berikut:
Kebijakan sandi hanya berlaku untuk sandi yang dibuat setelah Anda menetapkan kebijakan. Sandi pengguna yang ada tidak terpengaruh oleh perubahan kebijakan sandi.
Kebijakan sandi berlaku untuk sandi yang dimasukkan hanya 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 Grand Unified Configuration (GUC)
dalam file konfigurasi postgresql.conf
. Untuk mempelajari cara menetapkan
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 dirotasi secara berkala.
Untuk mengetahui daftar flag kebijakan sandi yang didukung AlloyDB Omni, lihat Flag kebijakan sandi.
Memuat ulang library validasi sandi
Agar kebijakan sandi diterapkan di AlloyDB Omni, library
alloydb_password_validation
harus dimuat. Untuk memuat library ini,
lakukan hal berikut:
Temukan file konfigurasi
postgresql.conf
untuk penginstalan AlloDB Omni dan buka di editor teks.Temukan baris
shared_preload_libraries
dan periksa apakah baris tersebut menyertakanalloydb_password_validation
. Jika tidak, Anda harus menambahkannya. Setelah selesai, barisshared_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:
Verifikasi bahwa file
postgresql.conf
Anda memuat library validasi sandi secara otomatis.Tetapkan flag
password.enforce_complexity
keON
.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 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 flag ini ditetapkan, upaya untuk menetapkan sandi pengguna database yang tidak mematuhi kebijakan sandi ini akan gagal. Misalnya, dengan kumpulan 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:
Verifikasi bahwa file
postgresql.conf
Anda memuat library validasi sandi secara otomatis.Tetapkan flag
password.enforce_expiration
keON
.Tetapkan flag
password.expiration_in_days
ke jumlah hari setelah sandi ditetapkan hingga masa berlakunya berakhir.Tetapkan flag
password.notify_expiration_in_days
ke jumlah hari sebelum masa berlaku sandi berakhir 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 AlloDB Omni. Untuk mereset sandi pengguna, lakukan hal berikut:
Terhubung 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
Di prompt
postgres=#
, jalankan perintah berikut:ALTER USER USERNAME WITH 'NEW-PASSWORD';
Untuk 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:
Verifikasi bahwa file
postgresql.conf
Anda memuat library validasi sandi secara otomatis.Tetapkan
password.enforce_password_does_not_contain_username
keON
.
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 ditetapkan, operasi berikut akan gagal karena sandi
alex-secret
berisi nama pengguna alex
:
CREATE USER alex WITH PASSWORD 'alex-secret';