Aracılığıyla paylaş


PostgreSQL için Azure Veritabanı'nda SCRAM kimlik doğrulaması

Salted Challenge Response Authentication Mechanism (SCRAM), parola tabanlı bir karşılıklı kimlik doğrulama protokolüdür. Bu, birkaç güvenlik düzeyi ekleyen ve güvenilmeyen bağlantılarda parola algılamayı önleyen bir sınama yanıtı şemasıdır. SCRAM, parolaların sunucuda şifrelemeyle karma olarak depolanmasını destekler ve bu da gelişmiş güvenlik sağlar.

Uyarı

SCRAM kimlik doğrulama yöntemini kullanarak PostgreSQL için Azure Veritabanı esnek sunucu örneğine erişmek için istemci kitaplıklarınızın SCRAM'ı desteklemesi gerekir. SCRAM'ı destekleyen sürücülerin listesine bakın.

SCRAM kimlik doğrulaması, uygulama sunucularınıza fazladan hesaplama yükü uygular ve her kimlik doğrulaması için istemci kanıtını hesaplaması gerekir. SCRAM'ın sunduğu performans yükü, uygulamanızın bağlantı havuzundaki bağlantı sayısı sınırlanarak (uygulamanızdaki sohbetin azaltılması) veya istemcinizin izin verdiği eş zamanlı işlem sayısını sınırlayarak (daha büyük işlemler) azaltılabilir. SCRAM kimlik doğrulamasına geçmeden önce iş yüklerinizin test edilmesi önerilir.

SCRAM kimlik doğrulamayı yapılandırma

  1. password_encryption SCRAM-SHA-256 olarak değiştirin. Şu anda PostgreSQL için Azure Veritabanı yalnızca SHA-256 kullanan SCRAM'ı destekler.

    SCRAM için şifreleme sayfasının ekran görüntüsü.

  2. Kimlik doğrulama yöntemi olarak SCRAM-SHA-256'ya izin verin.

    SCRAM tarafından ulaşılan kimlik doğrulamasının ekran görüntüsü.

    Önemli

    Yalnızca SCRAM-SHA-256 yöntemini seçerek yalnızca SCRAM kimlik doğrulamasını zorunlu kılmayı seçebilirsiniz. Bunu yaptığınızda, MD5 kimlik doğrulamasına sahip kullanıcılar sunucuya daha uzun süre bağlanabilir. Bu nedenle, SCRAM'ı zorlamadan önce, tüm kullanıcı parolalarını SCRAM-SHA-256'ya güncelleştirene kadar kimlik doğrulama yöntemleri olarak hem MD5 hem de SCRAM-SHA-256'ya sahip olursunuz. 7. adımda belirtilen sorguyu kullanarak kullanıcılar için kimlik doğrulama türünü doğrulayabilirsiniz.

  3. Değişiklikleri kaydedin. Bunlar dinamik özelliklerdir ve sunucunun yeniden başlatılmasını gerektirmez.

  4. PostgreSQL için Azure Veritabanı esnek sunucu istemcinizden PostgreSQL için Azure Veritabanı esnek sunucu örneğine bağlanın. Örneğin

    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. Parola şifrelemesini doğrulayın.

    postgres=> show password_encryption;
       password_encryption
    ---------------------
    scram-sha-256
    (1 row)
    
  6. Ardından kullanıcılar için parolayı güncelleştirebilirsiniz.

    postgres=> \password myDemoUser
    Enter new password:
    Enter it again:
    postgres=>
    
  7. İşlevi kullanarak azure_roles_authtype() kullanıcı kimlik doğrulama türlerini doğrulayabilirsiniz.

    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. Ardından SCRAM kimlik doğrulamasını destekleyen istemciden sunucunuza bağlanabilirsiniz.

    SCRAM kimlik doğrulaması, yerleşik yönetilen PgBouncer'a bağlanıldığında da desteklenir.