Memahami peran dan izin PostgreSQL - Amazon Aurora

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.

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.

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 dalam dokumentasi PostgreSQL.

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 peran rds_superuser.

  • Memberikan (dan mencabut) peran rds_password kepada pengguna basis data yang tidak memiliki peran rds_superuser.

  • Mendapatkan informasi status semua koneksi basis data menggunakan tampilan pg_stat_activity. Jika diperlukan, rds_superuser dapat menghentikan koneksi apa pun menggunakan pg_terminate_backend atau pg_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 dalam dokumentasi PostgreSQL.

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_superuserPeran 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 14rds_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 dengan rds_superuser peran yang dapat melakukan tindakan ini pada pengguna lain yang memiliki rds_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.

  1. 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 --password

    Saat diminta, masukkan kata sandi Anda. Klien psql menghubungkan dan menampilkan basis data koneksi administratif default, postgres=>, sebagai prompt.

  2. Untuk mencegah pengguna basis data membuat objek dalam skema public, lakukan hal berikut:

    postgres=> REVOKE CREATE ON SCHEMA public FROM PUBLIC; REVOKE
  3. Selanjutnya, Anda akan membuat instans basis data baru:

    postgres=> CREATE DATABASE lab_db; CREATE DATABASE
  4. Cabut semua hak istimewa dari skema PUBLIC pada basis data baru ini.

    postgres=> REVOKE ALL ON DATABASE lab_db FROM public; REVOKE
  5. Buat peran untuk pengguna basis data.

    postgres=> CREATE ROLE lab_tech; CREATE ROLE
  6. Beri kemampuan untuk terhubung ke basis data kepada pengguna basis data yang memiliki peran ini.

    postgres=> GRANT CONNECT ON DATABASE lab_db TO lab_tech; GRANT
  7. Beri semua hak istimewa pada basis data ini kepada semua pengguna dengan peran lab_tech.

    postgres=> GRANT ALL PRIVILEGES ON DATABASE lab_db TO lab_tech; GRANT
  8. 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
  9. 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 dalam dokumentasi PostgreSQL.

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 dalam dokumentasi PostgreSQL.

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 dalam dokumentasi Driver JDBC PostgreSQL. Untuk daftar driver PostgreSQL lainnya dan dukungan SCRAM, lihat List of drivers dalam dokumentasi PostgreSQL.

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 dan MD5.

  • 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 ke scram-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 dari md5+scram ke scram-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
  1. 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 --password
  2. Instal ekstensi rds_tools.

    postgres=> CREATE EXTENSION rds_tools; CREATE EXTENSION
  3. 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 klaster DB.

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 klaster DB.

Anda kini dapat mengaitkan grup parameter khusus dengan instans DB.

Untuk membuat grup parameter klaster DB khusus
  1. Gunakan perintah CLI create-db-cluster-parameter-group untuk membuat grup parameter khusus klaster. Contoh berikut menggunakan aurora-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.

  2. 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.
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
  1. 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 --password
  2. Periksa pengaturan parameter password_encryption pada instans DB RDS for PostgreSQL menggunakan perintah berikut.

    postgres=> SHOW password_encryption; password_encryption --------------------- md5 (1 row)
  3. 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)
  4. 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 istimewa rds_superuser).

    labdb=> ALTER ROLE postgres WITH LOGIN PASSWORD 'change_me'; ALTER ROLE
  5. 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.

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
  1. 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, kueri rds_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)
  2. Ulangi kueri di semua instans DB di klaster DB Aurora PostgreSQL.

    Jika semua kata sandi menggunakan scram-sha-256, Anda dapat melanjutkan.

  3. 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"