共用方式為


「適用於 PostgreSQL 的 Azure 資料庫」中的 SCRAM 驗證

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 達成的驗證的螢幕擷取畫面。

    這很重要

    您可以只選取 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=<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. 驗證密碼加密。

    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 驗證。