Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Memahami peran dan izin PostgreSQL
Bila Anda membuat Aurora PostgreSQL DB cluster DB menggunakan, akun administrator dibuat pada saat yang sama. AWS Management Console Secara default, namanya adalah postgres
, seperti yang ditunjukkan dalam tangkapan layar berikut:
![Identitas login default untuk Kredensial di halaman Buat basis data adalah postgres.](images/default-login-identity-apg-rpg.png)
Anda dapat memilih nama lain daripada harus menerima default (postgres
). Jika ya, nama yang Anda pilih harus dimulai dengan huruf dan berada antara 1 dan 16 karakter alfanumerik. Untuk memudahkan, kami merujuk ke akun pengguna utama ini berdasarkan nilai default-nya (postgres
) di seluruh panduan ini.
Jika Anda menggunakan create-db-cluster
AWS CLI bukan AWS Management Console, Anda membuat nama pengguna dengan meneruskannya dengan master-username
parameter. Lihat informasi yang lebih lengkap di Langkah 2: Membuat klaster DB Aurora PostgreSQL.
Baik Anda menggunakan AWS Management Console, API AWS CLI, atau Amazon RDS, dan apakah Anda menggunakan postgres
nama default atau memilih nama yang berbeda, akun pengguna database pertama ini adalah anggota rds_superuser
grup dan memiliki rds_superuser
hak istimewa.
Topik
Memahami peran rds_superuser
Di PostgreSQL, peran dapat menentukan pengguna, grup, atau sekumpulan izin khusus yang diberikan kepada grup atau pengguna untuk berbagai objek dalam basis data. Perintah PostgreSQL ke CREATE USER
dan CREATE GROUP
telah digantikan oleh perintah yang lebih umum, CREATE ROLE
dengan properti khusus untuk membedakan pengguna basis data. Pengguna basis data dapat dianggap sebagai peran dengan hak istimewa LOGIN.
catatan
Perintah CREATE USER
dan CREATE GROUP
masih dapat digunakan. Untuk informasi selengkapnya, lihat Database Role
Pengguna postgres
adalah pengguna basis data yang paling istimewa di klaster DB Aurora PostgreSQL. Pengguna tersebut memiliki karakteristik yang ditentukan oleh pernyataan CREATE ROLE
berikut.
CREATE ROLE postgres WITH LOGIN NOSUPERUSER INHERIT CREATEDB CREATEROLE NOREPLICATION VALID UNTIL 'infinity'
Properti NOSUPERUSER
, NOREPLICATION
, INHERIT
, dan VALID UNTIL 'infinity'
merupakan opsi default untuk CREATE ROLE, kecuali ditentukan lain.
Secara default, postgres
memiliki hak istimewa yang diberikan untuk peran rds_superuser
, serta izin untuk membuat peran dan basis data. Peran rds_superuser
memungkinkan pengguna postgres
untuk melakukan berbagai hal berikut:
Menambahkan ekstensi yang tersedia untuk digunakan dengan Aurora PostgreSQL. Untuk informasi selengkapnya, lihat Menangani ekstensi dan pembungkus data asing.
-
Membuat peran untuk pengguna dan memberikan hak istimewa kepada pengguna. Untuk informasi selengkapnya, lihat CREATE ROLE
dan GRANT dalam dokumentasi PostgreSQL. -
Membuat basis data. Untuk informasi selengkapnya, lihat CREATE DATABASE
dalam dokumentasi PostgreSQL. Memberikan hak istimewa
rds_superuser
untuk peran pengguna yang tidak memiliki hak istimewa ini, dan mencabut hak istimewa sesuai kebutuhan. Sebaiknya Anda memberikan peran ini hanya kepada pengguna yang melakukan tugas pengguna super. Dengan kata lain, Anda dapat memberikan peran ini kepada administrator basis data (DBA) atau administrator sistem.Memberikan (dan mencabut) peran
rds_replication
kepada pengguna basis data yang tidak memiliki peranrds_superuser
.Memberikan (dan mencabut) peran
rds_password
kepada pengguna basis data yang tidak memiliki peranrds_superuser
.Mendapatkan informasi status semua koneksi basis data menggunakan tampilan
pg_stat_activity
. Jika diperlukan,rds_superuser
dapat menghentikan koneksi apa pun menggunakanpg_terminate_backend
ataupg_cancel_backend
.
Dalam pernyataan CREATE ROLE postgres...
, Anda dapat melihat bahwa peran pengguna postgres
secara khusus melarang izin superuser
PostgreSQL. Aurora PostgreSQL adalah layanan terkelola sehingga Anda tidak dapat mengakses OS host, dan tidak dapat terhubung menggunakan akun superuser
PostgreSQL. Banyak tugas yang memerlukan akses superuser
pada PostgreSQL mandiri dikelola secara otomatis oleh Aurora.
Untuk informasi pemberian hak istimewa selengkapnya, lihat GRANT
Peran rds_superuser
adalah salah satu dari beberapa peran yang telah ditentukan dalam klaster DB Aurora PostgreSQL.
catatan
Dalam PostgreSQL 13 dan rilis sebelumnya, peran yang telah ditentukan dikenal sebagai peran default.
Dalam daftar berikut, Anda akan menemukan beberapa peran standar lainnya yang dibuat secara otomatis untuk klaster DB Aurora PostgreSQL baru. Peran yang telah ditentukan dan hak istimewa mereka tidak dapat diubah. Anda tidak dapat menghapus, mengganti nama, atau memodifikasi hak istimewa untuk peran yang telah ditentukan ini. Mencoba untuk melakukannya akan menghasilkan kesalahan.
rds_password – Peran yang dapat mengubah kata sandi dan mengatur batasan kata sandi untuk pengguna basis data.
rds_superuser
Peran diberikan dengan peran ini secara default, dan dapat memberikan peran tersebut kepada pengguna database. Untuk informasi selengkapnya, lihat Mengontrol akses pengguna ke basis data PostgreSQL.Untuk RDS untuk PostgreSQL versi yang lebih tua dari 14
rds_password
, peran dapat mengubah kata sandi dan mengatur batasan kata sandi untuk pengguna database dan pengguna dengan peran.rds_superuser
Dari RDS untuk PostgreSQL versi 14 dan yang lebih barurds_password
, peran dapat mengubah kata sandi dan mengatur batasan kata sandi hanya untuk pengguna database. Hanya pengguna denganrds_superuser
peran yang dapat melakukan tindakan ini pada pengguna lain yang memilikirds_superuser
peran.
rdsadmin – Peran yang dibuat untuk menangani banyak tugas pengelolaan yang akan dilakukan oleh administrator dengan hak istimewa
superuser
di basis data PostgreSQL mandiri. Peran Aurora PostgreSQL untuk banyak tugas pengelolaan.
Untuk melihat semua peran yang telah ditentukan sebelumnya, Anda dapat terhubung ke instans utama klaster DB Aurora PostgreSQL dan menggunakan metacommand psql \du
. Output akan terlihat sebagai berikut:
List of roles
Role name | Attributes | Member of
--------------+-----------------------------------+------------------------------------
postgres | Create role, Create DB +| {rds_superuser}
| Password valid until infinity |
rds_superuser | Cannot login | {pg_monitor,pg_signal_backend,
| +| rds_replication,rds_password}
...
Dalam output, Anda dapat melihat bahwa rds_superuser
bukan merupakan peran pengguna basis data (tidak dapat masuk), tetapi memiliki hak istimewa dari banyak peran lainnya. Anda juga dapat melihat bahwa pengguna basis data postgres
adalah anggota peran rds_superuser
. Seperti yang disebutkan sebelumnya, postgres
adalah nilai default di halaman Buat basis data konsol Amazon RDS. Jika Anda memilih nama lain, nama tersebut akan ditampilkan dalam daftar peran sebagai gantinya.
catatan
Aurora PostgreSQL versi 15.2 dan 14.7 memperkenalkan perilaku restriktif peran rds_superuser
. Pengguna PostgreSQL Aurora perlu diberi hak istimewa CONNECT
pada basis data yang sesuai untuk terhubung meskipun pengguna diberi peran rds_superuser
. Sebelum Aurora PostgreSQL versi 14.7 dan 15.2, pengguna dapat terhubung ke basis data dan tabel sistem jika diberi peran rds_superuser
. Perilaku restriktif ini sejalan dengan komitmen Amazon Aurora AWS dan Amazon Aurora untuk peningkatan keamanan yang berkelanjutan.
Harap perbarui logika masing-masing dalam aplikasi Anda jika peningkatan di atas memberikan dampak.
Mengontrol akses pengguna ke basis data PostgreSQL
Basis data baru di PostgreSQL selalu dibuat dengan serangkaian hak istimewa default dalam skema public
basis data yang memungkinkan semua pengguna basis data dan peran untuk membuat objek. Dengan hak istimewa ini, pengguna basis data dapat terhubung ke basis data, misalnya, dan membuat tabel sementara saat terhubung.
Agar dapat lebih baik dalam mengontrol akses pengguna ke instans basis data yang Anda buat di simpul primer klaster DB Aurora PostgreSQL , sebaiknya Anda mencabut hak istimewa public
default. Setelah melakukannya, Anda kemudian dapat memberikan hak khusus untuk pengguna basis data dengan lebih terperinci, seperti yang diperlihatkan dalam prosedur berikut ini.
Untuk mengatur peran dan hak istimewa instans basis data baru
Misalkan Anda sedang menyiapkan basis data di klaster DB Aurora PostgreSQL untuk digunakan oleh beberapa peneliti yang semuanya membutuhkan akses baca-tulis ke basis data.
Gunakan
psql
(or pgAdmin) untuk terhubun ke instans DB utama di klaster DB Aurora PostgreSQL:psql --host=
your-cluster-instance-1.666666666666
.aws-region
.rds.amazonaws.com --port=5432 --username=postgres --passwordSaat diminta, masukkan kata sandi Anda. Klien
psql
menghubungkan dan menampilkan basis data koneksi administratif default,postgres=>
, sebagai prompt.Untuk mencegah pengguna basis data membuat objek dalam skema
public
, lakukan hal berikut:postgres=>
REVOKE CREATE ON SCHEMA public FROM PUBLIC;
REVOKE
Selanjutnya, Anda akan membuat instans basis data baru:
postgres=>
CREATE DATABASE
lab_db
;CREATE DATABASE
Cabut semua hak istimewa dari skema
PUBLIC
pada basis data baru ini.postgres=>
REVOKE ALL ON DATABASE
lab_db
FROM public;REVOKE
Buat peran untuk pengguna basis data.
postgres=>
CREATE ROLE
lab_tech
;CREATE ROLE
Beri kemampuan untuk terhubung ke basis data kepada pengguna basis data yang memiliki peran ini.
postgres=>
GRANT CONNECT ON DATABASE
lab_db
TOlab_tech
;GRANT
Beri semua hak istimewa pada basis data ini kepada semua pengguna dengan peran
lab_tech
.postgres=>
GRANT ALL PRIVILEGES ON DATABASE
lab_db
TOlab_tech
;GRANT
Buat pengguna basis data, sebagai berikut:
postgres=>
CREATE ROLE lab_user1 LOGIN PASSWORD 'change_me';
CREATE ROLE
postgres=>
CREATE ROLE lab_user2 LOGIN PASSWORD 'change_me';
CREATE ROLE
-
Beri hak istimewa yang terkait dengan peran lab_tech kepada dua pengguna ini:
postgres=>
GRANT lab_tech TO lab_user1;
GRANT ROLE
postgres=>
GRANT lab_tech TO lab_user2;
GRANT ROLE
Di titik ini, lab_user1
dan lab_user2
dapat terhubung ke basis data lab_db
. Contoh ini tidak mengikuti praktik terbaik untuk penggunaan perusahaan yang mungkin termasuk membuat beberapa instans basis data, skema yang berbeda, dan pemberian izin terbatas. Untuk informasi lengkap dan skenario tambahan selengkapnya, lihat Mengelola Pengguna dan Peran PostgreSQL
Untuk informasi hak istimewa di basis data PostgreSQL selengkapnya, lihat perintah GRANT
Mendelegasikan dan mengendalikan pengelolaan kata sandi pengguna
Sebagai DBA, Anda mungkin ingin mendelegasikan pengelolaan kata sandi pengguna. Mungkin Anda juga ingin mencegah pengguna basis data mengubah kata sandi mereka atau mengonfigurasi ulang batasan kata sandi, seperti masa pakai kata sandi. Untuk memastikan bahwa hanya pengguna basis data terpilih yang dapat mengubah pengaturan kata sandi, Anda dapat mengaktifkan fitur pengelolaan kata sandi terbatas. Saat Anda mengaktifkan fitur ini, hanya pengguna basis data yang telah diberi peran rds_password
yang dapat mengelola kata sandi.
catatan
Untuk menggunakan manajemen kata sandi terbatas, klaster DB Aurora PostgreSQL harus menjalankan Amazon Aurora PostgreSQL 10.6 atau yang lebih baru.
Secara default, fitur ini dalam keadaan off
, seperti yang ditunjukkan berikut:
postgres=>
SHOW rds.restrict_password_commands;
rds.restrict_password_commands -------------------------------- off (1 row)
Untuk mengaktifkan fitur ini, Anda harus menggunakan grup parameter khusus dan mengubah pengaturan rds.restrict_password_commands
ke 1. Pastikan untuk melakukan booting ulang instans DB utama Aurora PostgreSQL agar pengaturan dapat berlaku.
Dalam keadaan fitur ini aktif, hak istimewa rds_password
diperlukan untuk perintah SQL berikut:
CREATE ROLE myrole WITH PASSWORD 'mypassword';
CREATE ROLE myrole WITH PASSWORD 'mypassword' VALID UNTIL '2023-01-01';
ALTER ROLE myrole WITH PASSWORD 'mypassword' VALID UNTIL '2023-01-01';
ALTER ROLE myrole WITH PASSWORD 'mypassword';
ALTER ROLE myrole VALID UNTIL '2023-01-01';
ALTER ROLE myrole RENAME TO myrole2;
Mengganti nama peran (ALTER ROLE myrole RENAME TO newname
) juga dibatasi jika kata sandi menggunakan algoritma hashing MD5.
Jika fitur ini dalam keadaan aktif, mencoba salah satu perintah SQL ini tanpa izin peran rds_password
akan menghasilkan kesalahan berikut:
ERROR: must be a member of rds_password to alter passwords
Sebaiknya Anda memberikan rds_password
hanya untuk beberapa peran yang Anda gunakan semata untuk pengelolaan kata sandi. Jika memberikan hak istimewa rds_password
kepada pengguna basis data yang tidak memiliki hak istimewa rds_superuser
, Anda juga harus memberi mereka atribut CREATEROLE
.
Pastikan Anda memverifikasi persyaratan kata sandi seperti kedaluwarsa dan kompleksitas yang diperlukan di sisi klien. Jika Anda menggunakan utilitas sisi klien Anda sendiri untuk perubahan terkait kata sandi, utilitas harus menjadi anggota rds_password
dan memiliki hak istimewa CREATE ROLE
.
Menggunakan SCRAM untuk enkripsi kata sandi PostgreSQL
Salted Challenge Response Authentication Mechanism (SCRAM) adalah alternatif untuk algoritma intisari pesan (MD5) default PostgreSQL untuk mengenkripsi kata sandi. Mekanisme autentikasi SCRAM dianggap lebih aman daripada MD5. Untuk mempelajari dua pendekatan berbeda guna mengamankan kata sandi ini selengkapnya, lihat Password Authentication
Sebaiknya menggunakan SCRAM daripada MD5 sebagai skema enkripsi kata sandi untuk klaster DB Aurora PostgreSQL. Pada rilis Aurora PostgreSQL 14, SCRAM didukung di semua versi Aurora PostgreSQL yang tersedia, termasuk versi 10, 11, 12, 13, dan 14. Ini adalah mekanisme respons tantangan kriptografi yang menggunakan algoritma scram-sha-256 untuk autentikasi dan enkripsi kata sandi.
Anda mungkin perlu memperbarui pustaka untuk aplikasi klien Anda agar dapat mendukung SCRAM. Misalnya, versi JDBC sebelum 42.2.0 tidak mendukung SCRAM. Untuk informasi selengkapnya, lihat PostgreSQL JDBC Driver
catatan
Aurora PostgreSQL versi 14 dan yang lebih baru mendukung scram-sha-256 untuk enkripsi kata sandi klaster DB baru secara default. Artinya, grup parameter klaster DB default (default.aurora-postgresql14
) memiliki nilai password_encryption
yang disetel ke scram-sha-256.
Menyiapkan klaster DB Aurora PostgreSQL agar meminta SCRAM
Untuk Aurora PostgreSQL 14.3 dan versi yang lebih baru, Anda dapat meminta klaster DB Aurora PostgreSQL untuk hanya menerima kata sandi yang menggunakan algoritma scram-sha-256.
penting
Untuk Proksi RDS yang ada dengan basis data PostgreSQL, jika Anda mengubah autentikasi basis data untuk menggunakan SCRAM
saja, proksi akan menjadi tidak tersedia selama maksimal 60 detik. Untuk menghindari masalah ini, lakukan salah satu hal berikut:
Pastikan basis data memungkinkan autentikasi
SCRAM
danMD5
.Untuk hanya menggunakan autentikasi
SCRAM
, buat proksi baru, migrasi 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 klaster DB Aurora PostgreSQL untuk parameter yang mengontrol enkripsi kata sandi.
Jika klaster DB Aurora PostgreSQL menggunakan grup parameter default, Anda harus membuat grup parameter klaster DB khusus lalu mengaplikasikannya ke klaster DB Aurora PostgreSQL agar Anda dapat memodifikasi parameter saat saat diperlukan. Jika klaster DB Aurora PostgreSQL menggunakan grup parameter khusus, Anda dapat memodifikasi parameter yang diperlukan nanti sesuai kebutuhan saat proses berlangsung.
-
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 dienkripsi dan disimpan menggunakan algoritma scram-sha-256. Verifikasi bahwa semua kata sandi dienkripsi menggunakan jenis enkripsi.
-
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, setiap pengguna (peran) dengan kata sandi terenkripsi md5
tidak dapat terhubung.
Penyiapan meminta SCRAM untuk klaster DB Aurora PostgreSQL
Sebelum membuat perubahan apa pun pada klaster DB Aurora PostgreSQL periksa semua akun pengguna basis data yang ada. Periksa juga jenis enkripsi yang digunakan untuk kata sandi. Anda dapat melakukan tugas-tugas ini menggunakan ekstensi rds_tools
. Ekstensi ini didukung di Aurora PostgreSQL 13.1 dan rilis yang lebih baru.
Untuk mendapatkan daftar pengguna basis data (peran) dan metode enkripsi kata sandi
Gunakan
psql
untuk terhubung ke instans utama klaster DB Aurora PostgreSQL , seperti yang ditunjukkan di bawah ini.psql --host=
cluster-name-instance-1.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 klaster DB khusus
catatan
Jika klaster DB Aurora PostgreSQL sudah menggunakan grup parameter khusus, Anda tidak perlu membuat grup parameter yang baru.
Untuk ringkasan grup parameter Aurora, lihat Membuat grup parameter cluster DB di Amazon Aurora.
Jenis enkripsi kata sandi yang digunakan untuk kata sandi diatur dalam satu parameter, password_encryption
. Enkripsi yang diizinkan klaster DB Aurora PostgreSQL diatur dalam parameter lain, rds.accepted_password_auth_method
. Mengubah salah satu dari nilai default ini mengharuskan Anda membuat grup parameter klaster DB khusus dan mengaplikasikannya ke klaster.
Anda juga dapat menggunakan AWS Management Console atau RDS API untuk membuat grup parameter cluster DB kustom grup parameter . Untuk informasi selengkapnya, lihat Membuat grup parameter cluster DB di Amazon Aurora.
Anda kini dapat mengaitkan grup parameter khusus dengan instans DB.
Untuk membuat grup parameter klaster DB khusus
Gunakan perintah CLI
create-db-cluster-parameter-group
untuk membuat grup parameter khusus klaster. Contoh berikut menggunakanaurora-postgresql13
sebagai sumber untuk grup parameter khusus ini.Untuk Linux, macOS, atau Unix:
aws rds create-db-cluster-parameter-group --db-cluster-parameter-group-name '
docs-lab-scram-passwords
' \ --db-parameter-group-family aurora-postgresql13 --description 'Custom DB cluster parameter group for SCRAM
'Untuk Windows:
aws rds create-db-cluster-parameter-group --db-cluster-parameter-group-name "
docs-lab-scram-passwords
" ^ --db-parameter-group-family aurora-postgresql13 --description "Custom DB cluster parameter group for SCRAM
"Anda kini dapat mengaitkan grup parameter khusus dengan klaster.
Gunakan perintah CLI
modify-db-cluster
untuk menerapkan grup parameter khusus ini ke klaster DB Aurora PostgreSQL.Untuk Linux, macOS, atau Unix:
aws rds modify-db-cluster --db-cluster-identifier '
your-instance-name
' \ --db-cluster-parameter-group-name "docs-lab-scram-passwords
Untuk Windows:
aws rds modify-db-cluster --db-cluster-identifier "
your-instance-name
" ^ --db-cluster-parameter-group-name "docs-lab-scram-passwords
Untuk menyinkronkan ulang klaster DB Aurora PostgreSQL Anda dengan grup parameter klaster DB khusus, boot ulang instans utama dan semua instans lain klaster.
Mengonfigurasi enkripsi kata sandi agar menggunakan SCRAM
Mekanisme enkripsi kata sandi yang digunakan oleh klaster DB Aurora PostgreSQL diatur dalam grup parameter klaster DB di parameter password_encryption
. Nilai yang diizinkan tidak disetel, md5
, atau scram-sha-256
. Nilai default bergantung pada versi Aurora PostgreSQL , sebagai berikut:
Aurora PostgreSQL 14 – Default adalah
scram-sha-256
Aurora PostgreSQL 13 – Default adalah
md5
Dengan grup parameter klaster DB khusus yang dilampirkan ke klaster DB Aurora PostgreSQL, Anda dapat memodifikasi nilai untuk parameter enkripsi kata sandi.
![Berikutnya, konsol RDS akan menunjukkan nilai default parameter password_encryption untuk Aurora PostgreSQL.](images/apg-pwd-encryption-md5-scram-1.png)
Untuk mengubah pengaturan enkripsi kata sandi menjadi scram-sha-256
Ubah nilai enkripsi kata sandi menjadi scram-sha-256, seperti yang ditunjukkan berikut. Perubahan dapat diterapkan segera karena parameter bersifat dinamis sehingga tidak perlu memulai ulang agar perubahan diterapkan.
Untuk Linux, macOS, atau Unix:
aws rds modify-db-cluster-parameter-group --db-cluster-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"
Memigrasikan kata sandi untuk peran pengguna ke SCRAM
Anda dapat memigrasikan kata sandi untuk peran pengguna ke SCRAM seperti yang dijelaskan berikut.
Untuk memigrasikan kata sandi pengguna (peran) basis data dari MD5 ke SCRAM
Masuk sebagai pengguna administrator (nama pengguna default,
postgres
) seperti yang ditunjukkan berikut.psql --host=
cluster-name-instance-1.111122223333
.aws-region
.rds.amazonaws.com --port=5432 --username=postgres --passwordPeriksa pengaturan parameter
password_encryption
pada instans DB RDS for PostgreSQL menggunakan perintah berikut.postgres=>
SHOW password_encryption;
password_encryption --------------------- md5 (1 row)
Ubah nilai parameter ini menjadi scram-sha-256. Ini adalah parameter dinamis sehingga Anda tidak perlu melakukan boot ulang instans setelah melakukan perubahan ini. Periksa kembali nilainya untuk memastikan parameter sekarang telah 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 istimewards_superuser
).labdb=>
ALTER ROLE postgres WITH LOGIN PASSWORD 'change_me';ALTER ROLE
Ulangi proses untuk semua basis data di klaster DB Aurora PostgreSQL Anda.
Mengubah parameter agar memerlukan SCRAM
Ini adalah langkah terakhir dalam prosesnya. Setelah Anda membuat perubahan dalam prosedur berikut, setiap akun pengguna (peran) yang masih menggunakan enkripsi md5
untuk kata sandi tidak dapat masuk ke klaster DB Aurora PostgreSQL.
rds.accepted_password_auth_method
menentukan metode enkripsi yang diterima klaster DB Aurora PostgreSQL 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.
![Konsol RDS menunjukkan nilai default dan diizinkan untuk parameter rds.accepted_password_auth_method.](images/pwd-encryption-md5-scram-2.png)
Nilai yang diizinkan untuk parameter ini adalah md5+scram
atau scram
. Mengubah nilai parameter ini ke scram
akan menjadikannya sebagai persyaratan.
Untuk mengubah nilai parameter agar memerlukan autentikasi SCRAM untuk kata sandi
Verifikasi bahwa semua kata sandi pengguna basis data untuk semua basis data di klaster DB Aurora PostgreSQL menggunakan
scram-sha-256
untuk enkripsi kata sandi. Untuk melakukannya, 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 klaster DB Aurora PostgreSQL.
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-cluster-parameter-group --db-cluster-parameter-group-name 'docs-lab-scram-passwords' \ --parameters 'ParameterName=rds.accepted_password_auth_method,ParameterValue=scram,ApplyMethod=immediate'
Untuk Windows:
aws rds modify-db-cluster-parameter-group --db-cluster-parameter-group-name "docs-lab-scram-passwords" ^ --parameters "ParameterName=rds.accepted_password_auth_method,ParameterValue=scram,ApplyMethod=immediate"