Salted Challenge Response Authentication Mechanism (SCRAM) 為以密碼為基礎的相互驗證通訊協定。 這是一種質詢-回應方案,可增加多層安全性,並防止在不受信任的連線上嗅探密碼。 SCRAM 支援以密碼編譯雜湊形式,將密碼儲存在伺服器上,以提供進階安全性。
備註
若要使用 SCRAM 認證方法存取 適用於 PostgreSQL 的 Azure 資料庫 彈性伺服器,您的用戶端函式庫必須支援 SCRAM。 欲了解更多資訊,請參閱支援 SCRAM 的驅動程式列表 。
SCRAM 認證會增加應用伺服器額外的運算負擔,因為每次驗證都需要計算用戶端證明。 你可以透過限制應用程式連線池中的連線數量(減少應用程式的聊天聲)或限制客戶端允許的同時交易數量(較大的交易)來降低 SCRAM 帶來的效能負擔。 在遷移到 SCRAM 認證前,先測試你的工作負載。
設定 SCRAM 驗證
前往參數設定
要設定 SCRAM 認證,請在 Azure 入口網站的參數頁面存取:
- 登入 Azure 入口網站。
- 移至您適用於 PostgreSQL 的 Azure 資料庫彈性伺服器。
- 在左側選單的 設定中,選擇 參數。
- 請使用搜尋框找到以下步驟中提到的參數。
設定步驟
將
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 驗證。