適用於 PostgreSQL 的 Azure 資料庫 - 彈性伺服器的防火牆規則
適用於:適用於 PostgreSQL 的 Azure 資料庫 - 彈性伺服器
當您執行適用於 PostgreSQL 的 Azure 資料庫 - 彈性伺服器時,會有兩個主要的網路選項。 選項為私人存取 (虛擬網路整合) 和公用存取 (允許的 IP 位址)。
使用公用存取,可以透過公用端點存取適用於 PostgreSQL 的 Azure 資料庫伺服器。 根據預設,防火牆會封鎖伺服器的所有存取。 若要指定哪些 IP 主機可以存取伺服器,您可以建立伺服器層級防火牆規則。 防火牆規則可指定允許的公用 IP 位址範圍。 此防火牆會根據每一個要求的來源 IP 位址來授與伺服器存取權。 使用私人存取時,沒有公用端點可以使用,而且只有位於相同網路的主機可以存取適用於 PostgreSQL 的 Azure 資料庫 - 彈性伺服器。
您可以使用 Azure 入口網站或使用 Azure CLI 命令,建立防火牆規則。 您必須是訂用帳戶擁有者或訂用帳戶參與者。
伺服器層級的防火牆規則可套用至相同「適用於 PostgreSQL 的 Azure 資料庫」伺服器上的所有資料庫。 這些規則不會影響 Azure 入口網站的存取。
下圖顯示來自網際網路和 Azure 的連線嘗試必須通過防火牆,才能到達 PostgreSQL 資料庫:
來自網際網路的連線
如果要求的來源 IP 位址在伺服器層級防火牆規則中指定的其中一個範圍內,就會允許連線。 否則會遭到拒絕。
例如,如果您的應用程式透過適用於 PostgreSQL 的 Java 資料庫連線 (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 Service 應用程式的傳出 IP 位址,或使用繫結至虛擬機器的公用 IP 位址。
如果您的 Azure 服務無法使用固定傳出 IP 位址,請考慮啟用來自所有 Azure 資料中心 IP 位址的連線:
- 在 Azure 入口網站的 [網路] 窗格中,選取 [允許 Azure 內的任何 Azure 服務對此伺服器進行公用存取] 核取方塊。
- 選取 [儲存]。
重要
[允許 Azure 內的任何 Azure 服務對此伺服器進行公用存取] 選項會設定防火牆,以允許所有來自 Azure 的連線,包括來自其他客戶訂用帳戶的連線。 使用此選項時,請確定您的登入和使用者權限限制為只有授權的使用者才能存取。
以程式設計方式管理防火牆規則
除了使用 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: FATAL: password authentication failed for user "yourusername"
防火牆不允許動態 IP 位址:如果您的網際網路連線是使用動態 IP 位址,並且在通過防火牆時遇到問題,請嘗試下列其中一個解決方案:
請向網際網路服務提供者 (ISP) 詢問存取適用於 PostgreSQL 的 Azure 資料庫伺服器的用戶端電腦,獲得指派的 IP 位址範圍。 然後將該 IP 位址範圍新增為防火牆規則。
改為針對您的用戶端電腦取得靜態 IP 位址,然後將該靜態 IP 位址新增為防火牆規則。
防火牆規則不適用於 IPv6 格式:防火牆規則必須是 IPv4 格式。 如果您指定 IPv6 格式的防火牆規則,將會收到驗證錯誤。