在適用於 PostgreSQL 的 Azure 資料庫 - 單一伺服器中設定 TLS 連線能力
適用於:適用於 PostgreSQL 的 Azure 資料庫 - 單一伺服器
重要
適用於 PostgreSQL 的 Azure 資料庫 - 單一伺服器位於淘汰路徑上。 強烈建議您升級至 適用於 PostgreSQL 的 Azure 資料庫 - 彈性伺服器。 如需移轉至 適用於 PostgreSQL 的 Azure 資料庫 - 彈性伺服器的詳細資訊,請參閱單一伺服器適用於 PostgreSQL 的 Azure 資料庫發生什麼事?
適用於 PostgreSQL 的 Azure 資料庫偏好使用先前稱為安全通訊端層 (SSL) 的傳輸層安全性 (TLS),將您的用戶端應用程式連線到 PostgreSQL 伺服器。 在資料庫伺服器與用戶端應用程式之間強制執行 TLS 連線,藉由將伺服器與應用程式之間的資料流加密來協助抵禦「中間人」攻擊。
預設會將 PostgreSQL 資料庫服務設定為需要 TLS 連線。 如果用戶端應用程式不支援 TLS 連線,您可以選擇將要求 TLS 的功能停用。
注意
根據客戶的意見反應,我們已將現有 Baltimore 根 CA 的根憑證淘汰延長至 2022 年 11 月 30 日 (11/30/2022)。
強制使用 TLS 連線
針對透過 Azure 入口網站和 CLI 佈建之所有適用於 PostgreSQL 的 Azure 資料庫伺服器,預設會啟用強制使用 TLS 連線。
同樣地,在 Azure 入口網站中,您的伺服器下方的 [連接字串] 設定中所預先定義的連接字串,也包含通用語言使用 SSL 連線至資料庫伺服器所需的參數。 TLS 參數會根據連接器而有所不同,例如,"ssl=true" 或 "sslmode=require" 或 "sslmode=required" 及其他變化。
設定強制使用 TLS
您可以選擇性地停用強制執行 TLS 連線能力。 Microsoft Azure 建議您一律啟用 [強制執行 SSL 連接] 設定,以取得增強的安全性。
使用 Azure 入口網站
瀏覽您適用於 PostgreSQL 的 Azure 資料庫伺服器,然後選取 [連接安全性]。 使用切換按鈕來啟用或停用 [強制使用 SSL 連線] 設定。 然後選取 [儲存]。
您可以檢視 [概觀] 頁面來查看 [SSL 強制執行狀態] 指標,以確認此設定。
使用 Azure CLI
您可以在 Azure CLI 中分別使用 Enabled
或 Disabled
值,來啟用或停用 sssl-enforcement 參數。
az postgres server update --resource-group myresourcegroup --name mydemoserver --ssl-enforcement Enabled
判斷 SSL 線上狀態
您也可以使用下列查詢,收集適用於 PostgreSQL 的 Azure 資料庫 - 單一伺服器實例 SSL 使用量的相關資訊:進程、用戶端和應用程式:
SELECT datname as "Database name", usename as "User name", ssl, client_addr, application_name, backend_type
FROM pg_stat_ssl
JOIN pg_stat_activity
ON pg_stat_ssl.pid = pg_stat_activity.pid
ORDER BY ssl;
確定您的應用程式或架構支援 TLS 連線
針對其資料庫服務使用 PostgreSQL 的某些應用程式架構,在安裝期間都預設不啟用 TLS。 如果您的 PostgreSQL 伺服器強制使用 TLS 連線,但未設定應用程式使用 TLS,應用程式可能無法連線到您的資料庫伺服器。 請參閱您的應用程式文件,以了解如何啟用 TLS 連線。
需要憑證驗證才能啟用 TLS 連線能力的應用程式
在某些案例下,應用程式需要從受信任憑證授權單位 (CA) 憑證檔案所產生的本地憑證檔,才能安全地連接。 用來連線至適用於 PostgreSQL 的 Azure 資料庫伺服器的憑證位於 https://www.digicert.com/CACerts/BaltimoreCyberTrustRoot.crt.pem 。 下載憑證檔案,並將其儲存至您慣用的位置。
關於主權雲端的伺服器憑證,請參閱下列連結:Azure Government、Azure 中國和 Azure 德國。
使用 psql 連線
下列範例會示範如何使用 psql 命令列公用程式連線到 PostgreSQL 伺服器。 使用 sslmode=verify-full
連接字串設定來強制執行 TLS/SSL 憑證驗證。 將本機憑證檔案路徑傳遞至 sslrootcert
參數。
下列命令是 psql 連接字串的範例:
psql "sslmode=verify-full sslrootcert=BaltimoreCyberTrustRoot.crt host=mydemoserver.postgres.database.azure.com dbname=postgres user=myusern@mydemoserver"
提示
確認傳遞給 sslrootcert
的值與您所儲存憑證的檔案路徑相符。
在適用於 PostgreSQL 的 Azure 資料庫單一伺服器中強制使用 TLS
適用於 PostgreSQL 的 Azure 資料庫 - 單一伺服器支援使用傳輸層安全性 (TLS) 連線到資料庫伺服器的用戶端加密。 TLS 是業界標準通訊協定,可確保資料庫伺服器與用戶端應用程式之間的網路連線安全,讓您遵守合規性需求。
TLS 設定
適用於 PostgreSQL 的 Azure 資料庫單一伺服器可讓您強制執行用戶端連線的 TLS 版本。 若要強制執行 TLS 版本,請使用 [最低 TLS 版本] 選項設定。 此選項設定允許下列值:
最低 TLS 設定 | 已支援用戶端 TLS 版本 |
---|---|
TLSEnforcementDisabled (預設) | 不需要 TLS |
TLS1_0 | TLS 1.0、TLS 1.1、TLS 1.2 和更新版本 |
TLS1_1 | TLS 1.1、TLS 1.2 和更新版本 |
TLS1_2 | TLS 1.2 版和更新版本 |
例如,將最低 TLS 設定版本設為 TLS 1.0,表示您的伺服器會允許使用 TLS 1.0、1.1 和 1.2+ 的用戶端連線。 或者,將此設為 1.2+,表示您只允許使用 TLS 1.2 的用戶端連線,且所有使用 TLS 1.0 和 TLS 1.1 的連線都會遭到拒絕。
注意
根據預設,適用於 PostgreSQL 的 Azure 資料庫不會強制執行最低 TLS 版本 (設定 TLSEnforcementDisabled
)。
強制執行最低 TLS 版本之後,您稍後就無法停用最低版本強制執行。
若要了解如何設定適用於 PostgreSQL 的 Azure 資料庫單一伺服器的 TLS 設定,請參閱如何設定 TLS 設定。
適用於 PostgreSQL 的 Azure 資料庫單一伺服器的加密支援
在 SSL/TLS 通訊中,加密套件會經過驗證,而且只允許支援加密套件與資料庫伺服器通訊。 加密套件驗證是在閘道層中控制,而不是在節點本身上明確控制。 如果加密套件不符合下面所列的其中一個套件,將拒絕傳入的用戶端連線。
已支援的加密套件
- TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
- TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
- TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384
- TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
後續步驟
如需各種應用程式連線能力選項,請檢閱適用於 PostgreSQL 的 Azure 資料庫的連線庫。
- 了解如何設定 TLS