共用方式為


適用於 PostgreSQL 的 Azure 資料庫中的 SCRAM 驗證: 彈性伺服器

適用範圍:適用於 PostgreSQL 的 Azure 資料庫 - 彈性伺服器

Salted Challenge Response Authentication Mechanism (SCRAM) 是密碼型相互驗證通訊協定。 這是一種挑戰回應配置,可增加數個安全性層級,並防止密碼探查未受信任的連線。 SCRAM 支援以密碼編譯哈希形式將密碼儲存在伺服器上,以提供進階安全性。

注意

若要使用 SCRAM 驗證方法來存取 適用於 PostgreSQL 的 Azure 資料庫 彈性伺服器實例,您的用戶端連結庫必須支援 SCRAM。 請參閱支援 SCRAM 的驅動程式清單。

注意

SCRAM 驗證會對您的應用程式伺服器施加額外的計算負載,這需要計算每個驗證的客戶端證明。 增加效能額外負荷的 SCRAM 可能會藉由限制應用程式連線集區中的連線數目(減少應用程式中的閒聊),或限制用戶端允許的並行交易數目(區塊化交易)。 建議先測試工作負載,再遷移至 SCRAM 驗證。

設定 SCRAM 驗證

  1. 將password_encryption變更為 SCRAM-SHA-256。 目前 適用於 PostgreSQL 的 Azure 資料庫 彈性伺服器僅支援使用SHA-256的 SCRAM。 啟用 SCRAM 密碼加密

  2. 允許 SCRAM-SHA-256 作為驗證方法。 選擇驗證方法

    重要

    您可以選擇只選取 SCRAM-SHA-256 方法來強制執行僅 SCRAM 驗證。 如此一來,具有 MD5 驗證的使用者可以更久地連線到伺服器。 因此,在強制執行 SCRAM 之前,建議您同時將 MD5 和 SCRAM-SHA-256 作為驗證方法,直到您將所有用戶密碼更新為 SCRAM-SHA-256 為止。 您可以使用步驟 7 中所述的查詢來驗證使用者的驗證類型。

  3. 儲存變更。 這些是動態屬性,不需要重新啟動伺服器。

  4. 從您的 適用於 PostgreSQL 的 Azure 資料庫 彈性伺服器用戶端,連線到 適用於 PostgreSQL 的 Azure 資料庫 彈性伺服器實例。 例如,

    psql "host=myPGServer.postgres.database.azure.com port=5432 dbname=postgres user=myDemoUser password=MyPassword 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. 確認密碼加密。

    postgres=> show password_encryption;
     password_encryption
    ---------------------
    scram-sha-256
    (1 row)
    
  6. 然後,您可以更新用戶的密碼。

    postgres=> \password myDemoUser
    Enter new password:
    Enter it again:
    postgres=>
    
  7. 您可以使用函式 azure_roles_authtype() 來驗證使用者驗證類型。

    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. 然後,您可以從支援 SCRAM 驗證的用戶端連線到您的伺服器。

注意

聯機到內建受控 PgBouncer 時,也支援 SCRAM 驗證。 上述教學課程適用於透過內建 PgBouncer 功能使用 SCRAM 驗證來設定連線。

下一步