適用於 PostgreSQL 的 Azure 資料庫 中的防火牆規則 - 彈性伺服器

適用於:適用於 PostgreSQL 的 Azure 資料庫 - 彈性伺服器

當您執行 適用於 PostgreSQL 的 Azure 資料庫 彈性伺服器時,您有兩個主要的網路選項。 這些選項包括私人存取(虛擬網路整合)和公用存取(允許的IP位址)。

透過公用存取,適用於 PostgreSQL 的 Azure 資料庫 彈性伺服器實例會透過公用端點存取。 根據預設,防火牆會封鎖伺服器的所有存取。 若要指定哪些IP主機可以存取伺服器,您可以建立伺服器層級 防火牆規則。 防火牆規則會指定允許的公用IP位址範圍。 此防火牆會根據每一個要求的來源 IP 位址來授與伺服器存取權。 使用私人存取時,沒有公用端點可用,而且只有位於相同網路上的主機可以存取 適用於 PostgreSQL 的 Azure 資料庫 彈性伺服器。

您可以使用 Azure 入口網站 或使用 Azure CLI 命令來建立防火牆規則。 您必須是訂用帳戶擁有者或訂用帳戶參與者。

伺服器層級防火牆規則會套用至相同 適用於 PostgreSQL 的 Azure 資料庫 彈性伺服器實例上的所有資料庫。 這些規則不會影響 Azure 入口網站 網站的存取。

下圖顯示從因特網和 Azure 連線嘗試如何通過防火牆,才能連線到 適用於 PostgreSQL 的 Azure 資料庫 彈性伺服器資料庫:

Diagram that shows an overview of how the firewall works.

從因特網 連線

如果要求的來源IP位址位於伺服器層級防火牆規則中指定的其中一個範圍內,則會授與連線。 否則會遭到拒絕。

例如,如果您的應用程式與適用於 適用於 PostgreSQL 的 Azure 資料庫 彈性伺服器的 Java Database 連線 ivity (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 連線

我們建議您尋找任何應用程式或服務的傳出IP位址,並明確允許存取這些個別IP位址或範圍。 例如,您可以找到 Azure App 服務 應用程式的傳出 IP 位址,或使用系結至虛擬機的公用 IP 位址。

如果您的 Azure 服務無法使用固定傳出 IP 位址,請考慮啟用來自 Azure 資料中心所有 IP 位址的連線:

  1. 在 [Azure 入口網站] 的 [網络] 窗格中,選取 [允許從 Azure 內的任何 Azure 服務存取此伺服器] 複選框。
  2. 選取 [儲存]。

重要

[ 允許從 Azure 內的任何 Azure 服務存取此伺服器 ] 選項會設定防火牆以允許來自 Azure 的所有連線,包括來自其他客戶的訂用帳戶連線。 當您使用此選項時,請確定您的登入和用戶許可權只會限制對已授權使用者的存取。

Screenshot that shows selections for allowing access to Azure services in the portal.

以程序設計方式管理防火牆規則

除了使用 Azure 入口網站 之外,您還可以使用 Azure CLI 以程式設計方式管理防火牆規則。

從 Azure CLI 中,開頭和結束位址等於 0.0.0.0 的防火牆規則設定, 相當於在入口網站中允許從 Azure 內的任何 Azure 服務到此伺服器 選項的公用存取。 如果防火牆規則拒絕連線嘗試,應用程式將無法連線到 適用於 PostgreSQL 的 Azure 資料庫 彈性伺服器實例。

針對防火牆問題進行疑難解答

當您存取 適用於 PostgreSQL 的 Azure 資料庫 彈性伺服器實例時,請考慮下列可能性:

  • 允許清單的變更尚未生效:變更 適用於 PostgreSQL 的 Azure 資料庫 彈性伺服器實例的防火牆設定最多可能需要五分鐘的時間。

  • 登入未獲授權,或使用不正確的密碼:如果登入沒有 適用於 PostgreSQL 的 Azure 資料庫 彈性伺服器實例的許可權,或密碼不正確,則會拒絕與伺服器的連線。 建立防火牆設定只會讓用戶端有機會嘗試連線到您的伺服器。 每個客戶端仍必須提供必要的安全性認證。

    例如,如果 JDBC 用戶端的驗證失敗,可能會出現下列錯誤:

    java.util.concurrent.ExecutionException: java.lang.RuntimeException: org.postgresql.util.PSQLException: 嚴重: 使用者 “yourusername” 的密碼驗證失敗

  • 防火牆不允許動態IP位址:如果您有具有動態IP位址的因特網連線,且無法通過防火牆,請嘗試下列其中一個解決方案:

    • 請向因特網服務提供者 (ISP) 要求指派給用戶端電腦的IP位址範圍,以存取 適用於 PostgreSQL 的 Azure 資料庫彈性伺服器實例。 然後將IP位址範圍新增為防火牆規則。

    • 請改為取得用戶端計算機的靜態 IP 位址,然後將靜態 IP 位址新增為防火牆規則。

  • 防火牆規則不適用於 IPv6 格式:防火牆規則必須是 IPv4 格式。 如果您以 IPv6 格式指定防火牆規則,您會收到驗證錯誤。

下一步