具有公用存取 (允許的 IP 位址) 之適用於 PostgreSQL 的 Azure 資料庫 - 彈性伺服器的網路功能概觀
適用範圍:適用於 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 或 Azure 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) 取得指派給用戶端電腦的IP位址範圍,以存取 適用於 PostgreSQL 的 Azure 資料庫彈性伺服器。 然後將該 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 資料庫 彈性伺服器。