Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Menggunakan SCRAM enkripsi kata sandi Postgre SQL
Salted Challenge Response Authentication Mechanism (SCRAM) adalah alternatif dari algoritma message digest (MD5) default Postgre SQL untuk mengenkripsi kata sandi. Mekanisme SCRAM otentikasi dianggap lebih aman daripadaMD5. Untuk mempelajari lebih lanjut tentang dua pendekatan berbeda untuk mengamankan kata sandi ini, lihat Otentikasi Kata Sandi dalam dokumentasi
Kami menyarankan Anda menggunakan SCRAM bukan MD5 sebagai skema enkripsi kata sandi untuk cluster DB Anda. RDSuntuk contoh Postgre SQL DB. Ini adalah mekanisme respons tantangan kriptografi yang menggunakan algoritma scram-sha-256 untuk autentikasi dan enkripsi kata sandi.
Anda mungkin perlu memperbarui pustaka untuk mendukung SCRAM aplikasi klien Anda. Misalnya, JDBC versi sebelum 42.2.0 tidak mendukung. SCRAM Untuk informasi lebih lanjut, lihat Postgre SQL JDBC Driver di dokumentasi
catatan
RDSuntuk Postgre SQL versi 13.1 dan dukungan yang lebih tinggi scram-sha-256. Versi ini juga memungkinkan Anda mengonfigurasi instans DB Anda untuk memerlukanSCRAM, seperti yang dibahas dalam prosedur berikut.
Menyiapkan yang diperlukan SQL SCRAM
Anda dapat meminta untuk hanya menerima kata sandi yang menggunakan algoritma scram-sha-256 SQL.
penting
Untuk RDS Proxy yang ada dengan SQL database Postgre, jika Anda memodifikasi otentikasi database untuk digunakan SCRAM
saja, proxy menjadi tidak tersedia hingga 60 detik. Untuk menghindari masalah ini, lakukan salah satu tindakan berikut:
Pastikan basis data mengizinkan autentikasi
SCRAM
danMD5
.Untuk hanya menggunakan autentikasi
SCRAM
, buat proksi baru, migrasikan lalu lintas aplikasi Anda ke proksi baru, lalu hapus proksi yang sebelumnya terkait dengan basis data.
Sebelum melakukan perubahan pada sistem, pastikan Anda telah memahami proses lengkapnya, sebagai berikut:
Dapatkan informasi semua peran dan enkripsi kata sandi untuk semua pengguna basis data.
Periksa kembali pengaturan parameter untuk RDScluster untuk parameter yang SQL mengontrol enkripsi kata sandi.
Jika Anda RDSuntuk instans Postgre SQL DB menggunakan grup parameter default, Anda perlu membuat grup parameter parameter bila diperlukan. SQL Jika Anda RDSuntuk instans Postgre SQL DB menggunakan grup parameter khusus, Anda dapat memodifikasi parameter yang diperlukan nanti dalam proses, sesuai kebutuhan.
-
Ubah parameter
password_encryption
kescram-sha-256
. -
Beri tahu semua pengguna basis data bahwa mereka perlu memperbarui kata sandi. Lakukan hal yang sama untuk akun
postgres
Anda. Kata sandi baru telah dienkripsi dan disimpan menggunakan algoritma scram-sha-256. Verifikasikan bahwa semua kata sandi telah dienkripsi menggunakan jenis enkripsi tersebut.
-
Jika semua kata sandi menggunakan scram-sha-256, Anda dapat mengubah parameter
rds.accepted_password_auth_method
darimd5+scram
kescram-sha-256
.
Awas
Setelah Anda mengubah rds.accepted_password_auth_method
ke scram-sha-256 saja, setiap pengguna (peran) dengan kata sandi terenkripsi md5
tidak dapat terhubung.
Bersiap-siap SCRAM untuk meminta SQL
Sebelum membuat perubahan apa pun pada periksa semua akun pengguna database yang ada. Periksa juga jenis enkripsi yang digunakan untuk kata sandi. Anda dapat melakukan semua tugas ini menggunakan ekstensi rds_tools
. Ekstensi ini didukung pada dan rilis yang lebih tinggi.
Untuk mendapatkan daftar pengguna (peran) basis data dan metode enkripsi kata sandi
Gunakan
psql
untuk terhubung ke Anda, seperti yang ditunjukkan SQL pada berikut ini.psql --host=
db-name.111122223333
.aws-region
.rds.amazonaws.com --port=5432 --username=postgres --passwordInstal ekstensi
rds_tools
.postgres=>
CREATE EXTENSION rds_tools;
CREATE EXTENSION
Dapatkan daftar peran dan enkripsi.
postgres=>
SELECT * FROM rds_tools.role_password_encryption_type();Anda akan melihat output yang mirip dengan berikut ini.
rolname | encryption_type ----------------------+----------------- pg_monitor | pg_read_all_settings | pg_read_all_stats | pg_stat_scan_tables | pg_signal_backend | lab_tester | md5 user_465 | md5 postgres | md5 (8 rows)
Membuat grup parameter DB kustom
catatan
Jika Anda RDSuntuk instans Postgre SQL DB sudah menggunakan grup parameter khusus, Anda tidak perlu membuat yang baru.
Untuk ikhtisar grup parameter untuk AmazonRDS, lihatBekerja dengan parameter pada instans DB RDS for PostgreSQL.
Jenis enkripsi kata sandi yang digunakan untuk kata sandi yang diatur dalam satu parameter, password_encryption
. Enkripsi yang memungkinkan untuk instans Postgre SQL DB diatur dalam parameter lain,. rds.accepted_password_auth_method
Mengubah salah satu dari nilai default ini mengharuskan Anda membuat grup parameter DB kustom, lalu menerapkannya ke instans.
Anda juga dapat menggunakan AWS Management Console atau RDS API untuk membuat parameter DB. Untuk informasi lebih lanjut, lihat
Anda kini dapat mengaitkan grup parameter kustom dengan instans DB.
Untuk membuat grup parameter DB kustom
Gunakan
create-db-parameter-group
CLI perintah untuk membuat grup parameter DB kustom. Contoh ini menggunakanpostgres13
sebagai sumber untuk grup parameter kustom ini.Untuk Linux, macOS, atau Unix:
aws rds create-db-parameter-group --db-parameter-group-name '
docs-lab-scram-passwords
' \ --db-parameter-group-family postgres13 --description 'Custom parameter group for SCRAM
'Untuk Windows:
aws rds create-db-parameter-group --db-parameter-group-name "
docs-lab-scram-passwords
" ^ --db-parameter-group-family postgres13 --description "Custom DB parameter group for SCRAM
"Gunakan
modify-db-instance
CLI perintah untuk menerapkan grup parameter kustom ini ke cluster Postgre SQL DB AndaRDS.Untuk Linux, macOS, atau Unix:
aws rds modify-db-instance --db-instance-identifier '
your-instance-name
' \ --db-parameter-group-name "docs-lab-scram-passwords
Untuk Windows:
aws rds modify-db-instance --db-instance-identifier "
your-instance-name
" ^ --db-parameter-group-name "docs-lab-scram-passwords
Untuk menyinkronkan ulang instans Postgre SQL DB Anda dengan grup parameter DB kustom Anda, Anda perlu me-reboot instance utama dan semua instance cluster lainnya. RDS Untuk meminimalkan dampak pada pengguna Anda, jadwalkan proses ini agar berlangsung selama masa pemeliharaan rutin.
Mengkonfigurasi enkripsi kata sandi untuk digunakan SCRAM
Mekanisme enkripsi kata sandi yang digunakan oleh untuk instance Postgre SQL DB diatur dalam . password_encryption
Nilai yang diizinkan tidak ditentukan, md5
, atau scram-sha-256
. Nilai default tergantung pada , sebagai berikut SQL:
RDSuntuk Postgre SQL 14 dan di atas — Default adalah
scram-sha-256
RDSuntuk Postgre SQL 13 — Default adalah
md5
Dengan DB yang dilampirkan ke Anda dapat memodifikasi nilai untuk parameter enkripsi kata sandi.
Untuk mengubah pengaturan enkripsi kata sandi menjadi scram-sha-256
Ubah nilai enkripsi kata sandi menjadi scram-sha-256, sebagaimana ditunjukkan berikut ini. Perubahan dapat langsung diterapkan karena parameternya dinamis, jadi mulai ulang tidak diperlukan agar perubahan diterapkan.
Untuk Linux, macOS, atau Unix:
aws rds modify-db-parameter-group --db-parameter-group-name \ 'docs-lab-scram-passwords' --parameters 'ParameterName=password_encryption,ParameterValue=scram-sha-256,ApplyMethod=immediate'
Untuk Windows:
aws rds modify-db-parameter-group --db-parameter-group-name ^ "docs-lab-scram-passwords" --parameters "ParameterName=password_encryption,ParameterValue=scram-sha-256,ApplyMethod=immediate"
Memigrasi kata sandi untuk peran pengguna ke SCRAM
Anda dapat memigrasikan kata sandi untuk peran pengguna SCRAM seperti yang dijelaskan berikut ini.
Untuk memigrasikan kata sandi pengguna (peran) basis data dari ke MD5 SCRAM
Masuk sebagai pengguna administrator (nama pengguna default,
postgres
) sebagaimana ditunjukkan berikut.psql --host=
db-name.111122223333
.aws-region
.rds.amazonaws.com --port=5432 --username=postgres --passwordPeriksa pengaturan
password_encryption
parameter pada instans Postgre SQL DB Anda RDS dengan menggunakan perintah berikut.postgres=>
SHOW password_encryption;
password_encryption --------------------- md5 (1 row)
Ubah nilai parameter ini menjadi scram-sha-256. Ini adalah parameter dinamis, jadi Anda tidak perlu mem-boot ulang instans setelah melakukan perubahan ini. Periksa kembali nilainya untuk memastikan bahwa sekarang diatur ke
scram-sha-256
, sebagai berikut.postgres=>
SHOW password_encryption;
password_encryption --------------------- scram-sha-256 (1 row)
Beri tahu semua pengguna basis data untuk mengubah kata sandi mereka. Pastikan juga untuk mengubah kata sandi Anda sendiri untuk akun
postgres
(pengguna basis data dengan hak aksesrds_superuser
).labdb=>
ALTER ROLE postgres WITH LOGIN PASSWORD 'change_me';ALTER ROLE
Ulangi proses untuk semua database di cluster DB Anda. RDSuntuk contoh Postgre SQL DB.
Mengubah parameter untuk membutuhkan SCRAM
Ini adalah langkah terakhir dalam proses. Setelah Anda membuat perubahan dalam prosedur berikut, setiap akun pengguna (peran) yang masih menggunakan md5
enkripsi untuk kata sandi tidak dapat masuk ke cluster DB. RDSuntuk contoh Postgre SQL DB.
rds.accepted_password_auth_method
Ini menentukan metode enkripsi yang RDSklaster menerima untuk kata sandi pengguna selama proses login. Nilai default-nya adalah md5+scram
, yang berarti bahwa salah satu metode diterima. Pada gambar berikut, Anda dapat menemukan pengaturan default untuk parameter ini.
Nilai yang diizinkan untuk parameter ini adalah md5+scram
atau scram
saja. Mengubah nilai parameter ini ke scram
akan menjadikannya sebagai persyaratan.
Untuk mengubah nilai parameter untuk memerlukan SCRAM otentikasi untuk kata sandi
Verifikasi bahwa semua kata sandi pengguna database untuk semua database di RDScluster untuk SQL enkripsi kata sandi.
scram-sha-256
Untuk melakukannya, buat kuerirds_tools
untuk peran (pengguna) dan jenis enkripsi, sebagai berikut.postgres=>
SELECT * FROM rds_tools.role_password_encryption_type();
rolname | encryption_type ----------------------+----------------- pg_monitor | pg_read_all_settings | pg_read_all_stats | pg_stat_scan_tables | pg_signal_backend | lab_tester | scram-sha-256 user_465 | scram-sha-256 postgres | scram-sha-256 ( rows)
Ulangi kueri di semua instans DB di cluster DB Anda. RDSuntuk contoh Postgre SQL DB.
Jika semua kata sandi menggunakan scram-sha-256, Anda dapat melanjutkan.
Ubah nilai autentikasi kata sandi yang diterima menjadi scram-sha-256, sebagai berikut.
Untuk Linux, macOS, atau Unix:
aws rds modify-db-parameter-group --db-parameter-group-name 'docs-lab-scram-passwords' \ --parameters 'ParameterName=rds.accepted_password_auth_method,ParameterValue=scram,ApplyMethod=immediate'
Untuk Windows:
aws rds modify-db-parameter-group --db-parameter-group-name "docs-lab-scram-passwords" ^ --parameters "ParameterName=rds.accepted_password_auth_method,ParameterValue=scram,ApplyMethod=immediate"