適用範圍:適用於 PostgreSQL 的 Azure 資料庫 - 彈性伺服器
本文說明適用於 PostgreSQL 的 Azure 資料庫彈性伺服器的連線和網路概念。
當您建立適用於 PostgreSQL 的 Azure 資料庫彈性伺服器時,必須選擇下列其中一個網路選項:
- 私人存取 (虛擬網路整合)
- 公用存取 (允許的 IP 位址) 和私人端點
無論您選擇使用私人存取或公用存取選項,都適用下列特性:
- 來自允許的 IP 位址的連線需要使用有效的認證向適用於 PostgreSQL 的 Azure 資料庫彈性伺服器進行驗證。
- 系統會針對您的網路流量強制執行連線加密。
- 伺服器具有完整網域名稱 (FQDN)。 針對連接字串中的
hostname
屬性,建議使用 FQDN 而不是 IP 位址。 - 這兩個選項都會控制伺服器層級的存取,而不是資料庫層級或資料表層級。 您會使用 PostgreSQL 的角色屬性來控制資料庫、資料表及其他物件存取。
附註
因為適用於 PostgreSQL 的 Azure 資料庫彈性伺服器是受控資料庫服務,因此不會提供使用者主機或作系統存取權來檢視或修改組態檔,例如 pg_hba.conf
。 檔案內容會根據網路設定自動更新。
搭配適用於 PostgreSQL 的 Azure 資料庫彈性伺服器使用公用存取網路功能
當您選擇公用存取方法時,系統會透過網際網路上的公用端點來存取適用於 PostgreSQL 的 Azure 資料庫彈性伺服器。 公用端點是可公開解析的 DNS 位址。 「允許的 IP 位址」一詞指的是您選擇授與伺服器存取權的 IP 位址範圍。 這些權限稱為防火牆規則。
如果您想使用下列功能,請選擇此網路選項:
- 透過不支援虛擬網路的 Azure 資源連線。
- 從未由 VPN 或 ExpressRoute 連線的 Azure 外部資源進行連線。
- 請確定適用於 PostgreSQL 的 Azure 資料庫彈性伺服器有可以透過網際網路存取的公用端點。
公用存取機制的特性包括:
- 只有您允許的 IP 位址有權限存取您適用於 PostgreSQL 的 Azure 資料庫彈性伺服器。 根據預設,不允許任何 IP 位址。 您可以在伺服器建立期間或之後新增 IP 位址。
- 您適用於 PostgreSQL 的 Azure 資料庫彈性伺服器有可公開解析的 DNS 名稱。
- 您適用於 PostgreSQL 的 Azure 資料庫彈性伺服器不在您其中一個 Azure 虛擬網路中。
- 進出您伺服器的網路流量不會通過私人網路。 流量會使用一般網際網路路徑。
防火牆規則
伺服器層級的防火牆規則可套用至相同適用於 PostgreSQL 的 Azure 資料庫彈性伺服器上的所有資料庫。 如果要求的來源 IP 位址在伺服器層級防火牆規則中指定的其中一個範圍內,就會允許連線。 否則會遭到拒絕。 例如,如果您的應用程式透過適用於 PostgreSQL 的 JDBC 驅動程式進行連線,則您若在防火牆封鎖連線時嘗試進行連線,可能會遇到此錯誤。
java.util.concurrent.ExecutionException: java.lang.RuntimeException: org.postgresql.util.PSQLException: FATAL: no pg_hba.conf entry for host "123.45.67.890", user "adminuser", database "postgresql", SSL
附註
若要從您的本機電腦存取適用於 PostgreSQL 的 Azure 資料庫彈性伺服器,請確定您的網路和本機電腦上的防火牆允許 TCP 連接埠 5432 的傳出通訊。
以程式設計方式管理的防火牆規則
除了使用 Azure 入口網站外,您還可以使用 Azure CLI 透過程式設計方式來管理防火牆規則。 如需詳細資訊,請參閱 使用 Azure CLI 建立和管理適用於 PostgreSQL 的 Azure 資料庫彈性伺服器防火牆規則。
允許所有 Azure IP 位址
建議您尋找任何應用程式或服務的傳出 IP 位址,並明確允許存取這些個別 IP 位址或範圍。 如果您的 Azure 服務無法使用固定傳出 IP 位址,則您可以考慮啟用來自所有 Azure 資料中心 IP 位址的連線。
若要從 Azure 入口網站啟用此設定,請在 [網路] 窗格上,選取 [允許 Azure 內的任何 Azure 服務對此伺服器進行公用存取] 核取方塊,然後選取 [儲存]。
重要事項
[允許從 Azure 中的 Azure 服務和資源進行公用存取] 選項會設定防火牆,以允許所有來自 Azure 的連線,包括來自其他客戶訂用帳戶的連線。 選取此選項時,請確定您的登入和使用者權限會限制為只有授權的使用者才能存取。
針對公用存取問題進行疑難排解
當適用於 PostgreSQL 的 Azure 資料庫彈性伺服器的存取未如預期般運作時,請考慮下列幾點:
允許清單的變更尚未生效。 適用於 PostgreSQL 的 Azure 資料庫彈性伺服器防火牆設定變更可能會延遲最多 5 分鐘才能生效。
驗證失敗。 如果使用者在適用於 PostgreSQL 的 Azure 資料庫彈性伺服器上沒有權限,或密碼不正確,則與適用於 PostgreSQL 的 Azure 資料庫彈性伺服器的連線會遭到拒絕。 建立防火牆設定只會讓用戶端有機會嘗試連線至您的伺服器。 每個用戶端必須提供必要的安全性認證。
動態用戶端 IP 位址防止存取。 如果您有使用動態 IP 位址的網際網路連線,並且在通過防火牆時遇到問題,請嘗試下列其中一項解決方案:
- 請向網際網路服務提供者 (ISP) 詢問會存取適用於 PostgreSQL 的 Azure 資料庫彈性伺服器的用戶端電腦所獲派的 IP 位址範圍。 然後將該 IP 位址範圍新增為防火牆規則。
- 改為針對您的用戶端電腦取得靜態 IP 位址。 然後,將靜態 IP 位址新增為防火牆規則。
防火牆規則不適用於 IPv6 格式。 防火牆規則必須是 IPv4 格式。 如果指定 IPv6 格式的防火牆規則,您會收到驗證錯誤。
主機名稱
無論您選擇哪個網路選項,建議在連線至適用於 PostgreSQL 的 Azure 資料庫彈性伺服器時,一律使用 FQDN 做為主機名稱。 不保證伺服器的 IP 位址會保持靜態。 使用 FQDN 可協助您避免變更連接字串。
hostname = servername.postgres.database.azure.com
是使用 FQDN 做為主機名稱的範例。 請盡量避免使用 hostname = 10.0.0.4
(私人位址) 或 hostname = 40.2.45.67
(公用位址)。
相關內容
- 了解如何在 Azure 入口網站或 Azure CLI 中使用公用存取 (允許的 IP 位址) 選項以建立適用於 PostgreSQL 的 Azure 資料庫彈性伺服器。