Bagikan melalui


Autentikasi SCRAM di Azure Database for PostgreSQL

Mekanisme Autentikasi Respons Tantangan Asin (SCRAM) adalah protokol autentikasi bersama berbasis kata sandi. Ini adalah skema respons tantangan yang menambahkan beberapa tingkat keamanan dan mencegah pengendusan kata sandi pada koneksi yang tidak tepercaya. SCRAM mendukung penyimpanan kata sandi di server dalam bentuk hash kriptografis, yang memberikan keamanan tingkat lanjut.

Nota

Untuk mengakses instans server fleksibel Azure Database for PostgreSQL menggunakan metode autentikasi SCRAM, pustaka klien Anda perlu mendukung SCRAM. Lihat daftar driver yang mendukung SCRAM.

Autentikasi SCRAM memberlakukan beban komputasi tambahan di server aplikasi Anda, yang perlu menghitung bukti klien untuk setiap autentikasi. Pengantar SCRAM overhead performa mungkin dimitigasi dengan membatasi jumlah koneksi di kumpulan koneksi aplikasi Anda (mengurangi obrolan dalam aplikasi Anda) atau membatasi jumlah transaksi bersamaan yang diizinkan klien Anda (transaksi yang lebih besar). Disarankan untuk menguji beban kerja Anda sebelum bermigrasi ke autentikasi SCRAM.

Mengonfigurasi autentikasi SCRAM

  1. Ubah password_encryption ke SCRAM-SHA-256. Saat ini Azure Database for PostgreSQL hanya mendukung SCRAM menggunakan SHA-256.

    Cuplikan layar halaman enkripsi untuk SCRAM.

  2. Izinkan SCRAM-SHA-256 sebagai metode autentikasi.

    Cuplikan layar autentikasi yang dicapai oleh SCRAM.

    Penting

    Anda dapat memilih untuk memberlakukan autentikasi scram saja dengan memilih hanya metode SCRAM-SHA-256. Dengan demikian, pengguna dengan autentikasi MD5 dapat lebih lama terhubung ke server. Oleh karena itu, sebelum memberlakukan SCRAM, bahwa Anda memiliki MD5 dan SCRAM-SHA-256 sebagai metode autentikasi hingga Anda memperbarui semua kata sandi pengguna ke SCRAM-SHA-256. Anda dapat memverifikasi jenis autentikasi untuk pengguna menggunakan kueri yang disebutkan di langkah #7.

  3. Simpan perubahan. Ini adalah properti dinamis dan tidak memerlukan hidupkan ulang server.

  4. Dari klien server fleksibel Azure Database for PostgreSQL Anda, sambungkan ke instans server fleksibel Azure Database for PostgreSQL. Contohnya,

    psql "host=myPGServer.postgres.database.azure.com port=5432 dbname=postgres user=myDemoUser password=<password> sslmode=require"
    
    psql (12.3 (Ubuntu 12.3-1.pgdg18.04+1), server 12.6)
    SSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384, bits: 256, compression: off)
    Type "help" for help.
    
  5. Verifikasi enkripsi kata sandi.

    postgres=> show password_encryption;
       password_encryption
    ---------------------
    scram-sha-256
    (1 row)
    
  6. Anda kemudian dapat memperbarui kata sandi untuk pengguna.

    postgres=> \password myDemoUser
    Enter new password:
    Enter it again:
    postgres=>
    
  7. Anda dapat memverifikasi jenis autentikasi pengguna menggunakan azure_roles_authtype() fungsi.

    postgres=> SELECT * from azure_roles_authtype();
             rolename          | authtype
    ---------------------------+-----------
    azuresu                   | NOLOGIN
    pg_monitor                | NOLOGIN
    pg_read_all_settings      | NOLOGIN
    pg_read_all_stats         | NOLOGIN
    pg_stat_scan_tables       | NOLOGIN
    pg_read_server_files      | NOLOGIN
    pg_write_server_files     | NOLOGIN
    pg_execute_server_program | NOLOGIN
    pg_signal_backend         | NOLOGIN
    replication               | NOLOGIN
    myDemoUser                | SCRAM-256
    azure_pg_admin            | NOLOGIN
    srtest                    | SCRAM-256
    sr_md5                    | MD5
    (14 rows)
    
  8. Anda kemudian dapat terhubung dari klien yang mendukung autentikasi SCRAM ke server Anda.

    Autentikasi SCRAM juga didukung saat terhubung ke PgBouncer terkelola bawaan.