共用方式為


具有公用存取權的適用於 PostgreSQL 的 Azure 資料庫網路概觀 (允許的 IP 位址)

本文描述 Azure 資料庫適用於 PostgreSQL 的彈性伺服器執行個體的連接性和網路概念。

當您建立適用於 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 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 (公用位址)。

防火牆設定的輸出 IP 位址

當您的適用於 PostgreSQL 的 Azure 資料庫彈性伺服器執行個體需要建立與外部服務的輸出連線時 (例如,針對邏輯複寫、連線到外部資源的延伸模組或外部資料來源),您可能需要在這些外部服務上設定防火牆規則,以允許來自資料庫伺服器的流量。

尋找伺服器的 IP 位址

若要尋找目前指派給「適用於 PostgreSQL 的 Azure 資料庫 - 彈性伺服器」執行個體的 IP 位址:

  • 使用 DNS 解析:您可以解析伺服器的 FQDN (servername.postgres.database.azure.com) 以取得目前的 IP 位址。 使用 nslookupdig 等工具:

    nslookup servername.postgres.database.azure.com
    
  • 使用 Azure 入口網站:在 Azure 入口網站中導覽到 Azure Database for PostgreSQL 彈性伺服器執行個體。 伺服器的公用 IP 位址不會直接顯示,但您可以藉由解析伺服器的 FQDN 來找到它。

  • 使用 Azure CLI:您可以使用 Azure CLI 來取得伺服器的相關資訊,然後解析主機名稱:

    az postgres flexible-server show --resource-group myResourceGroup --name myServerName
    

出埠連線的重要考量

  • IP 位址可能會變更:指派給適用於 PostgreSQL 的 Azure 資料庫彈性伺服器執行個體的公用 IP 位址不是靜態的,而且可能會在維護、更新或其他作業事件期間變更。 盡可能使用 FQDN,並視需要定期更新外部防火牆規則。

  • Azure 資料中心 IP 範圍:若要取得更可預測的防火牆設定,您可以允許來自伺服器所在區域的整個 Azure 資料中心 IP 範圍的流量。 Azure 會在 Azure IP 範圍和服務標籤 下載中發佈每個區域的 IP 範圍。

  • 服務標籤:如果您要連線的外部服務也裝載在 Azure 中,請考慮使用 Azure 服務標籤 來取得更動態且可維護的防火牆規則。

  • 私人端點替代方案:若要取得更穩定的連線能力,並避免公用 IP 位址,請考慮使用 私人端點 ,而不是公用存取。