適用於 PostgreSQL 的 Azure 資料庫中的 SCRAM 驗證: 彈性伺服器
適用於: 適用於 PostgreSQL 的 Azure 資料庫 - 彈性伺服器
Salted Challenge Response Authentication Mechanism (SCRAM) 是密碼型相互驗證通訊協定。 這是一種挑戰-回應配置,可增加數個安全性層級,並防止密碼探查未受信任的連線。 SCRAM 支援以密碼編譯哈希形式將密碼儲存在伺服器上,以提供進階安全性。
注意
若要使用 SCRAM 驗證方法來存取 適用於 PostgreSQL 的 Azure 資料庫 彈性伺服器執行個體,您的用戶端連結庫必須支援 SCRAM。 請參閱支援 SCRAM 的驅動程式清單。
注意
SCRAM 驗證會對您的應用程式伺服器施加額外的計算負載,這需要計算每個驗證的客戶端證明。 SCRAM 導入的效能額外負荷可能會藉由限制應用程式連線集區中的連線數目(減少應用程式中的閒聊),或限制用戶端允許的並行交易數目(較大的交易)。 建議您先測試工作負載,再遷移至 SCRAM 驗證。
設定 SCRAM 驗證
將 password_encryption 變更為 SCRAM-SHA-256。 目前 適用於 PostgreSQL 的 Azure 資料庫 彈性伺服器僅支援使用SHA-256的 SCRAM。
允許 SCRAM-SHA-256 作為驗證方法。
重要
您可以選擇只選取 SCRAM-SHA-256 方法來強制執行僅限 SCRAM 驗證。 如此一來,具有 MD5 驗證的使用者可以更久地連線到伺服器。 因此,在強制執行 SCRAM 之前,建議您將 MD5 和 SCRAM-SHA-256 同時作為驗證方法,直到您將所有用戶密碼更新為 SCRAM-SHA-256 為止。 您可以使用步驟 7 中所述的查詢來驗證使用者的驗證類型。
儲存變更。 這些是動態屬性,不需要重新啟動伺服器。
從適用於 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.
驗證密碼加密。
postgres=> show password_encryption; password_encryption --------------------- scram-sha-256 (1 row)
您可以更新使用者密碼。
postgres=> \password myDemoUser Enter new password: Enter it again: postgres=>
您可以使用函式
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)
然後,您可以從支援 SCRAM 驗證的用戶端連線到您的伺服器。
注意
聯機到內建受控 PgBouncer 時,也支援 SCRAM 驗證。 上述教學課程適用於透過內建 PgBouncer 功能使用 SCRAM 驗證來設定連線。
相關內容
- 使用 Azure CLI 建立和管理 適用於 PostgreSQL 的 Azure 資料庫 - 彈性伺服器虛擬網路。
- 適用於 PostgreSQL 的 Azure 資料庫 中的網路功能 - 彈性伺服器。
- 適用於 PostgreSQL 的 Azure 資料庫 中的防火牆規則 - 彈性伺服器。