Share via


Azure Cosmos DB for PostgreSQL 中的公用存取

適用於: Azure Cosmos DB for PostgreSQL (由 PostgreSQL 的超大規模 (Citus) 資料庫延伸模組提供)

Azure Cosmos DB for PostgreSQL 支援三個網路選項:

  • 無存取權
    • 如果沒有啟用公用或私人存取,這便是新建立叢集的預設值。 無論在 Azure 內部或外部,任何電腦都無法連線至資料庫節點。
  • 公用存取權
    • 系統會指派公用 IP 位址給協調器節點。
    • 協調器節點的存取權受防火牆保護。
    • 您可以選擇性啟用所有背景工作節點的存取權。 在此情況下,系統會指派公用 IP 位址給背景工作節點,並受到相同防火牆保護。
  • 私人存取
    • 系統只會指派私人 IP 位址給叢集的節點。
    • 每個節點都需要有私人端點,以允許所選虛擬網路中的主機存取節點。
    • Azure 虛擬網路的安全性功能 (例如網路安全性群組) 可用於存取控制。

建立叢集時,您可以啟用公用或私人存取,或選擇預設值 (無存取權)。 建立叢集之後,您可以選擇在公用或私人存取之間切換,或同時啟用兩者。

此頁面描述公用存取選項。 如需了解私人存取,請參閱 Azure Cosmos DB for PostgreSQL 中的私人存取

防火牆概觀

Azure Cosmos DB for PostgreSQL 伺服器防火牆會防止對您的協調器節點進行的所有存取,直到您指定哪些電腦擁有權限為止。 此防火牆會根據每一個要求的來源 IP 位址來授與伺服器存取權。 若要設定您的防火牆,您可以建立防火牆規則,指定可接受的 IP 位址範圍。 您可以在伺服器層級建立防火牆規則。

防火牆規則:這些規則可讓用戶端存取協調器節點,也就是相同邏輯伺服器內的所有資料庫。 使用 Azure 入口網站,即可設定伺服器層級的防火牆規則。 若要建立伺服器層級的防火牆規則,您必須是訂用帳戶擁有者或訂用帳戶參與者。

防火牆預設會封鎖對協調器節點的所有資料庫存取。 若要從其他電腦開始使用您的伺服器,請指定一或多個伺服器層級的防火牆規則,以便啟用對伺服器的存取。 使用防火牆規則,來指定允許從網際網路存取的 IP 位址範圍。 存取 Azure 入口網站本身,並不會受到防火牆規則所影響。 來自網際網路和 Azure 的連線嘗試必須先通過防火牆,才能到達您的 PostgreSQL 資料庫,如下圖所示:

Diagram that shows server-level firewall rules between remote and local systems and failed connections.

從網際網路和從 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 "citus", database "citus", SSL

若要了解規則的定義方式,請參閱建立和管理防火牆規則

針對資料庫伺服器防火牆問題進行疑難排解

存取 Microsoft Azure Cosmos DB for PostgreSQL 服務未如預期般運作時,請考慮下列幾點:

  • 對允許清單的變更尚未生效:對 Azure Cosmos DB for PostgreSQL 防火牆設定的變更最多可能會延遲五分鐘才會生效。

  • 使用者未獲授權或使用的密碼不正確:如果使用者在伺服器上沒有權限,或所使用的密碼不正確,對伺服器的連線就會遭到拒絕。 建立防火牆設定只會讓用戶端有機會嘗試連線至您的伺服器。 每個用戶端必須提供必要的安全性認證。

    例如,使用 JDBC 用戶端,可能會出現下列錯誤。

    java.util.concurrent.ExecutionException: java.lang.RuntimeException: org.postgresql.util.PSQLException: FATAL: password authentication failed for user "yourusername"

  • 動態 IP 位址:如果您有使用動態 IP 位址的網際網路連線,並且在通過防火牆時遇到問題,您可以嘗試下列其中一個解決方案:

    • 要求您的網際網路服務提供者 (ISP) 以取得指派給您的用戶端電腦、存取協調器節點的 IP 位址範圍,然後將 IP 位址範圍新增為防火牆規則。

    • 改為針對您的用戶端電腦取得靜態 IP 位址,然後將該靜態 IP 位址新增為防火牆規則。

下一步

如需有關建立伺服器層級和資料庫層級防火牆規則的文章,請參閱: