共用方式為


具有公用存取 (允許的 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 (公用位址)。