在 適用於 PostgreSQL 的 Azure 資料庫 中設定 TLS 連線 - 單一伺服器

適用於:適用於 PostgreSQL 的 Azure 資料庫 - 單一伺服器

重要

適用於 PostgreSQL 的 Azure 資料庫 - 單一伺服器位於淘汰路徑上。 強烈建議您升級至 適用於 PostgreSQL 的 Azure 資料庫 - 彈性伺服器。 如需移轉至 適用於 PostgreSQL 的 Azure 資料庫 - 彈性伺服器的詳細資訊,請參閱單一伺服器 適用於 PostgreSQL 的 Azure 資料庫 發生什麼事?

適用於 PostgreSQL 的 Azure 資料庫 偏好使用傳輸層安全性 (TLS) 將用戶端應用程式連線到 PostgreSQL 服務,先前稱為安全套接字層 (SSL)。 藉由加密伺服器與應用程式之間的數據流,強制執行資料庫伺服器與用戶端應用程式之間的 TLS 連線,有助於防止「中間人」攻擊。

根據預設,PostgreSQL 資料庫服務會設定為需要 TLS 連線。 如果您的用戶端應用程式不支援 TLS 連線,您可以選擇停用要求 TLS。

重要

SSL 中繼憑證將於 2024 年 1 月 31 日 (01/31/2024) 開始更新。 中繼憑證是由受信任的跟證書所發行的次級憑證,專門用來發行結束實體憑證。 結果是一個憑證鏈結,從受信任的根 CA 開始,透過中繼 CA(或 CA)開始,並以您簽發的 SSL 憑證結尾。 憑證釘選是一種安全性技術,只有在建立安全會話時,才會接受已授權或釘選的憑證。 任何使用不同憑證建立安全會話的嘗試,都遭到拒絕。 不同於我們目前一年已完整更新的受信任根 CA,以及可以使用 verify-caverify-full 連接字串 用戶端指示詞來釘選憑證,因此沒有標準且完善的方法可釘選中繼 CA 不過, 有理論能力建立自定義連線堆疊,以各種程式設計語言將中繼憑證釘選到用戶端 。 如上所述,在 您使用自定義程式代碼釘選中繼憑證的不太可能案例 中,您可能會受到這項變更的影響。 若要判斷您是否要釘選 CA,請參閱 憑證釘選和 Azure 服務

強制使用 TLS 連線

針對透過 Azure 入口網站 和 CLI 布建的所有 適用於 PostgreSQL 的 Azure 資料庫 伺服器,預設會啟用 TLS 連線的強制執行。

同樣地,連接字串 在 Azure 入口網站 伺服器底下的「連線 字串」設定中預先定義,包含通用語言使用 TLS 連線到資料庫伺服器的必要參數。 TLS 參數會根據連接器而有所不同,例如 “ssl=true” 或 “sslmode=require” 或 “sslmode=required” 和其他變化。

設定 TLS 強制

您可以選擇性地停用強制執行 TLS 連線。 Microsoft Azure 建議一律啟用 [ 強制執行 SSL 連線 ] 設定,以提高安全性。

使用 Azure 入口網站

請流覽您的 適用於 PostgreSQL 的 Azure 資料庫 伺服器,然後選取 [連線 ion 安全性]。 使用切換按鈕來啟用或停用 [強制執行 SSL 連線 ] 設定。 然後選取 [儲存]。

連線 ion 安全性 - 停用強制 TLS/SSL

您可以檢視 [ 概觀 ] 頁面來確認設定,以查看 SSL 強制狀態 指示器。

使用 Azure CLI

您可以在 Azure CLI 中分別使用 EnabledDisabled 值來啟用或停用 ssl-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由 21Vianet 營運的 Microsoft AzureAzure 德國

使用 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 設定 (部分機器翻譯)

適用於 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

下一步

檢閱 連線 ion 連結庫中的各種應用程式連線選項,以取得 適用於 PostgreSQL 的 Azure 資料庫

  • 瞭解如何設定 TLS