Menggunakan SCRAM enkripsi kata sandi Postgre SQL - Amazon Aurora

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 SQL Postgre.

Kami menyarankan Anda menggunakan SCRAM bukan MD5 sebagai skema enkripsi kata sandi untuk cluster Aurora SQL Postgre DB Anda. Pada rilis Aurora Postgre SQL 14, SCRAM didukung di semua versi Aurora Postgre yang tersedia, termasuk SQL 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 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 SQL JDBC Postgre Driver. Untuk daftar SQL driver dan SCRAM dukungan Postgre lainnya, lihat Daftar driver di dokumentasi SQL Postgre.

catatan

Aurora Postgre SQL versi 14 dan yang lebih tinggi mendukung scram-sha-256 untuk enkripsi kata sandi secara default untuk cluster DB baru. Artinya, grup parameter klaster DB default (default.aurora-postgresql14) memiliki nilai password_encryption yang ditetapkan ke scram-sha-256.

Menyiapkan cluster Aurora Postgre SQL DB RDS untuk instans Postgre DB SCRAM

Untuk Aurora Postgre SQL 14.3 dan versi yang lebih tinggi, Anda dapat meminta cluster Aurora Postgre SQL DB untuk instance Postgre DB RDS .

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

  • 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 kata sandi.

  • Jika cluster Aurora Postgre SQL DB Anda menggunakan grup parameter khusus, Anda dapat memodifikasi parameter yang diperlukan nanti dalam proses, sesuai kebutuhan.

  • 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 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 dari md5+scram ke scram-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.

Sebelum membuat perubahan apa pun pada cluster Aurora Postgre SQL DB Anda, 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 Aurora Postgre SQL 13.1 13.1 dan rilis yang lebih tinggi.

Untuk mendapatkan daftar pengguna (peran) basis data dan metode enkripsi kata sandi
  1. Gunakan psql untuk terhubung ke instance utama cluster Aurora Postgre SQL DB Anda RDS untuk instance Postgre DB pada berikut 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

catatan

Jika cluster Aurora Postgre SQL DB Anda sudah menggunakan grup parameter khusus, Anda tidak perlu membuat 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 yang diatur dalam satu parameter, password_encryption. Enkripsi yang memungkinkan cluster Aurora Postgre SQL DB RDS dalam parameter lain,. rds.accepted_password_auth_method Mengubah salah satu dari nilai default ini mengharuskan Anda membuat grup parameter klaster DB , lalu menerapkannya ke klaster.

Anda juga dapat menggunakan AWS Management Console atau RDS API untuk membuat grup parameter cluster DB kustom grup . Untuk informasi lebih lanjut, lihat Membuat grup parameter cluster DB di Amazon Aurora.

Anda kini dapat mengaitkan grup parameter kustom dengan instans DB.

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

  2. Gunakan modify-db-cluster CLI perintah untuk menerapkan grup parameter kustom ini ke cluster Aurora SQL Postgre DB Anda.

    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 cluster Aurora Postgre SQL DB Anda dengan grup parameter cluster DB kustom Anda, RDS cluster lainnya.

Mengkonfigurasi enkripsi kata sandi untuk digunakan SCRAM

Mekanisme enkripsi kata sandi yang digunakan oleh cluster Aurora Postgre SQL DB RDS diatur dalam grup parameter cluster DB grup parameter dalam parameter. password_encryption Nilai yang diizinkan tidak ditentukan, md5, atau scram-sha-256. Nilai default tergantung pada Aurora Postgre SQL RDS untuk versi Postgre:

  • Aurora Postgre SQL 14 — Default adalah scram-sha-256

  • Aurora Postgre SQL 13 — Default adalah md5

Dengan grup parameter cluster DB kustom grup parameter yang dilampirkan ke cluster DB Aurora Postgre Anda, Anda dapat memodifikasi nilai untuk parameter enkripsi kata sandi.

Berikut, RDS konsol menunjukkan nilai default untuk password_encryption parameter untuk Aurora Postgre. SQL
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-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"

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
  1. Masuk sebagai pengguna administrator (nama pengguna default, postgres) sebagaimana ditunjukkan berikut.

    psql --host=cluster-name-instance-1.111122223333.aws-region.rds.amazonaws.com --port=5432 --username=postgres --password
  2. Periksa pengaturan password_encryption parameter pada instans Postgre SQL DB Anda RDS dengan 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, jadi Anda tidak perlu mem-boot ulang instans setelah melakukan perubahan ini. Periksa kembali nilainya untuk memastikan bahwa sekarang diatur kescram-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 akses rds_superuser).

    labdb=> ALTER ROLE postgres WITH LOGIN PASSWORD 'change_me'; ALTER ROLE
  5. Ulangi proses untuk semua database di cluster Aurora SQL Postgre DB Anda.

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 Aurora SQL Postgre DB.

rds.accepted_password_auth_methodIni menentukan metode enkripsi yang 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.

RDSKonsol yang menampilkan nilai default dan diizinkan untuk rds.accepted_password_auth_method parameter.

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
  1. Verifikasi bahwa semua kata sandi pengguna database untuk semua database di kata sandi. scram-sha-256 Untuk melakukannya, buat 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 cluster Aurora SQL Postgre DB Anda.

    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"