共用方式為


適用於 PostgreSQL 的 Azure 資料庫的私人存取 (虛擬網路整合) 網路

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

當您建立適用於 PostgreSQL 的 Azure 資料庫彈性伺服器執行個體時,您必須選擇下列其中一個網路選項:

  • 私人存取 (虛擬網路整合)
  • 公用存取 (允許的 IP 位址) 和私人端點

此文件描述私人存取 (虛擬網路整合) 網路選項。

私人存取 (虛擬網路整合)

您可以使用虛擬網路注入,將 Azure Database for PostgreSQL 彈性伺服器實例部署到Azure 虛擬網路中。 Azure 虛擬網路提供私人且安全的網路通訊。 這可讓虛擬網路中的資源透過在此網路上所指派的私人 IP 位址通訊。

如果您想使用下列功能,請選擇此網路選項:

  • 使用私人 IP 位址,從相同虛擬網路中的 Azure 資源連線到適用於 PostgreSQL 的 Azure 資料庫彈性伺服器執行個體。
  • 使用 VPN 或 Azure ExpressRoute 從非 Azure 資源連線到適用於 PostgreSQL 的 Azure 資料庫彈性伺服器執行個體。
  • 請確定適用於 PostgreSQL 的 Azure 資料庫彈性伺服器執行個體沒有可透過網際網路存取的公用端點。

圖表顯示虛擬網路之間的對等互連工作狀況,其中之一包括適用於 PostgreSQL 的 Azure 資料庫彈性伺服器執行個體。

在上圖中︰

  • Azure Database for PostgreSQL 的彈性伺服器實例會部署到 VNet-1 虛擬網路的子網路 10.0.1.0/24。
  • 部署在相同虛擬網路內不同子網路上的應用程式可以直接存取適用於 PostgreSQL 的 Azure 資料庫彈性伺服器執行個體。
  • 部署在另一個虛擬網路(VNet-2)上的應用程式無法直接存取 Azure Database for PostgreSQL 的彈性伺服器實例。 您必須先執行私人 DNS 區域的虛擬網路對等互連,才能讓應用程式存取彈性伺服器執行個體。

虛擬網路概念

Azure 虛擬網路包含已設定供您使用的私人 IP 位址空間。 您的虛擬網路必須與適用於 PostgreSQL 的 Azure 資料庫彈性伺服器執行個體位於相同的 Azure 區域中。 若要深入了解虛擬網路,請參閱 Azure 虛擬網路概觀

以下是在使用虛擬網路時需要熟悉的一些概念,其中資源透過適用於 PostgreSQL 的 Azure 資料庫彈性伺服器執行個體整合到虛擬網路 (部分機器翻譯) 中:

  • 委派的子網路:虛擬網路包含子網路。 子網路可讓您將虛擬網路分割成較小的位址空間。 Azure 資源會部署到虛擬網路內的特定子網路。

    整合至虛擬網路中的 Azure Database for PostgreSQL 彈性伺服器實例,必須位於 委派 的子網路中。 也就是說,只有適用於 PostgreSQL 的 Azure 資料庫彈性伺服器執行個體可以使用該子網路。 委派的子網路中不可以有其他 Azure 資源類型。 您可以將子網路的委派屬性指派為 Microsoft.DBforPostgreSQL/flexibleServers 來委派子網路。

    您可以為子網路指定的最小 CIDR 範圍是 /28,此範圍可提供 16 個 IP 位址。 任何網路或子網路中的第一個和最後一個位址都無法指派給任何個別主機。 Azure 會保留五個 IP 供 Azure 網路內部使用,其中包括兩個不能指派給主機的 IP,如上所述。 這會針對 /28 CIDR 範圍保留 11 個可用 IP 位址。 具有高可用性功能的單一適用於 PostgreSQL 的 Azure 資料庫彈性伺服器執行個體會使用四個位址。

    針對複寫和 Microsoft Entra 連線,請確定路由表不會影響流量。 常見的模式是,透過 Azure 防火牆或自訂內部部署網路篩選設備來路由傳送所有輸出流量。

    如果子網路具有與將所有流量路由到虛擬設備的規則相關聯的路由表:

    • 新增目的地服務標籤為 AzureActiveDirectory 且下一個躍點為 Internet 的規則。
    • 新增目的地 IP 範圍與適用於 PostgreSQL 的 Azure 資料庫彈性伺服器執行個體子網路範圍相同,且下一個躍點為 Virtual Network 的規則。

    重要事項

    AzureFirewallSubnetAzureFirewallManagementSubnetAzureBastionSubnetGatewaySubnet 名稱會保留在 Azure 內。 請勿使用其中任何一個名稱作為子網路名稱。 此外,為了建立跨區域複本,虛擬網路的位址空間不應重疊。

  • 網路安全性群組 (NSG)︰NSG 中的安全性規則能讓您篩選可在虛擬網路子網路及網路介面中流入和流出的網路流量類型。 如需詳細資訊,請參閱 NSG 概觀

    應用程式安全性群組 (ASG) 可針對一般網路使用 NSG 輕鬆控制第 4 層安全性。 您可以迅速:

    • 將虛擬機器加入 ASG,或從 ASG 移除虛擬機器。
    • 將規則動態地套用至這些虛擬機器,或是移除虛擬機器中的規則。

    如需詳細資訊,請參閱 ASG 概觀

    在 NSG 中,如果 ASG 是適用於 PostgreSQL 的 Azure 資料庫彈性伺服器執行個體的規則一部分,我們目前並不支援。 我們目前建議在 NSG 中使用以 IP 為主的來源或目的地篩選條件

    適用於 PostgreSQL 的 Azure 資料庫伺服器的高可用性和其他功能需要能夠將流量傳送/接收至部署適用於 PostgreSQL 的 Azure 資料庫彈性伺服器執行個體的 Azure 虛擬網路子網路內 的目的地埠 5432 ,以及傳送至 Azure 儲存體以進行記錄封存。 如果您在部署適用於 PostgreSQL 的 Azure 資料庫彈性伺服器執行個體的子網路內建立 NSG,以拒絕進出該執行個體的流量,「請務必允許進入子網路內目的地連接埠 5432 的流量」,以及允許進入儲存體的流量 (透過使用服務標籤儲存體作為目的地)。 為了實現高可用性,最佳做法是新增 Microsoft.Storage 服務端點,因為這樣才能確保流量正確路由至用於上傳預寫日誌(WAL)檔案的 Azure 儲存體帳戶。

    您可以透過將 Azure 區域新增至 us-east.storage 等標籤來進一步篩選 (部分機器翻譯) 此例外狀況規則。 此外,若您選擇採用 Microsoft Entra 身分驗證來驗證登入至 PostgreSQL 使用的 Azure 資料庫彈性伺服器實例,請透過 Microsoft Entra 服務標籤來允許對 Microsoft Entra ID 的輸出流量。

    在設定跨 Azure 區域的讀取複本時,適用於 PostgreSQL 的 Azure 資料庫彈性伺服器執行個體需要能夠傳送或接收進入「目的地連接埠 5432」的主要和複本區域流量,以及能夠傳送或接收從主要和複本伺服器進入主要和複本區域中 Azure 儲存體的流量。 儲存體所需的目的地 TCP 連接埠是 443。

  • 私人 DNS 區域整合︰Azure 私人 DNS 區域整合可讓您在目前的虛擬網路中,或任何與私人 DNS 區域連結的區域內對等互連虛擬網路中,解析私人 DNS。

使用私人 DNS 區域

Azure 私人 DNS 會為虛擬網路提供安全可靠的 DNS 服務。 Azure 私人 DNS 可管理及解析虛擬網路的網域名稱,而無需設定自訂的 DNS 解決方案。

搭配 Azure 虛擬網路使用私人網路存取時,「必須」提供私人 DNS 區域資訊,才能進行 DNS 解析。 若要使用私人網路存取建立新的適用於 PostgreSQL 的 Azure 資料庫彈性伺服器執行個體,則在設定具有私人存取的適用於 PostgreSQL 的 Azure 資料庫彈性伺服器執行個體時,需要使用私人 DNS 區域。

重要事項

在不同的訂用帳戶中使用私人 DNS 區域時,該訂用帳戶也 必須 註冊 Microsoft.DBforPostgreSQL 資源提供者,否則您的 Azure 適用於 PostgreSQL 資料庫彈性伺服器執行個體的部署將無法完成。

若要透過私人網路存取,並使用 API、Azure 資源管理員範本(ARM 範本)、Bicep 或 Terraform 來建立新的 Azure Database for PostgreSQL 彈性伺服器實例,請建立私人 DNS 區域。 然後,在設定具有私人存取的適用於 PostgreSQL 的 Azure 資料庫彈性伺服器執行個體時,使用這些區域。 如需詳細資訊,請參閱 Azure 的 REST API 規格 (英文)。

如果您使用 Azure 入口網站Azure CLI 來建立適用於 PostgreSQL 的 Azure 資料庫彈性伺服器執行個體,您可以提供先前在相同或不同訂用帳戶中建立的私人 DNS 區域名稱,或在您的訂用帳戶中自動建立預設私人 DNS 區域。

如果您使用 Azure API、ARM 範本、Bicep 或 Terraform,請建立以 .postgres.database.azure.com 結尾的私人 DNS 區域。 當您配置具有私人存取的 Azure Database for PostgreSQL 彈性伺服器執行個體時,請使用這些區域。 例如,使用表單 [name1].[name2].postgres.database.azure.com[name].postgres.database.azure.com。 如果您選擇使用的格式為 [name].postgres.database.azure.com,則名稱「不能」是您其中一個適用於 PostgreSQL 的 Azure 資料庫彈性伺服器執行個體所用的名稱,否則在佈建時會顯示錯誤訊息。 如需詳細資訊,請參閱私人 DNS 區域概觀 (部分機器翻譯)。

當您使用 Azure 入口網站、API、Azure CLI 或 ARM 範本時,您也可以將私人 DNS 區域從建立適用於 PostgreSQL 的 Azure 資料庫彈性伺服器執行個體時提供的區域變更為相同或不同訂用帳戶存在的另一個私人 DNS 區域。

重要事項

將建立適用於 PostgreSQL 的 Azure 資料庫彈性伺服器執行個體時所提供的私人 DNS 區域變更為另一個私人 DNS 區域的功能,在啟用高可用性功能的伺服器中目前會停用。

在 Azure 中建立私人 DNS 區域之後,您必須將虛擬網路連結 (部分機器翻譯) 至該區域。 連結的虛擬網路中所裝載的資源隨後便可存取私人 DNS 區域。

重要事項

在為具有私人網路的適用於 PostgreSQL 的 Azure 資料庫彈性伺服器執行個體建立伺服器時,我們不會再驗證虛擬網路連結是否存在。 當您透過 Azure 入口網站建立伺服器時,我們會提供選擇權給客戶,您可以在建立伺服器時,於 Azure 入口網站中核取 [將私人 DNS 區域連結到您的虛擬網路] 核取方塊,以建立連結。

DNS 私人區域能夠復原區域中斷,因為區域資料全域可用。 私人區域中的資源記錄,會自動跨區域複製。 Azure 私人 DNS 是可用性區域的基礎區域備援服務。 如需詳細資訊,請參閱提供可用性區域支援的 Azure 服務

與自訂 DNS 伺服器整合

如果您使用自訂 DNS 伺服器,則必須使用 DNS 轉寄站來解析適用於 PostgreSQL 的 Azure 資料庫彈性伺服器執行個體的 FQDN。 轉寄站 IP 位址應為 168.63.129.16

自訂 DNS 伺服器應位於虛擬網路內部,或可透過虛擬網路的 DNS 伺服器設定連線。 若要深入了解,請參閱使用自有 DNS 伺服器的名稱解析

私人 DNS 區域和虛擬網路對等互連

私人 DNS 區域設定和虛擬網路對等互連彼此各自獨立。 如果您想要從相同區域或不同區域的另一個虛擬網路中佈建的用戶端連線到適用於 PostgreSQL 的 Azure 資料庫彈性伺服器執行個體,您必須將私人 DNS 區域與虛擬網路 連結 。 如需詳細資訊,請參閱連結虛擬網路

附註

只能連結以 postgres.database.azure.com 結尾的私人 DNS 區域名稱。 您的 DNS 區域名稱不能與 Azure Database for PostgreSQL 的彈性伺服器執行個體名稱相同。 否則,名稱解析會失敗。

若要將伺服器名稱對應至 DNS 記錄,您可使用 Azure PowerShell 或 Bash,在 Azure Cloud Shell (部分機器翻譯) 中執行 nslookup 命令。 在下列範例中,將 <server_name> 參數替換為您的伺服器名稱:

nslookup -debug <server_name>.postgres.database.azure.com | grep 'canonical name'

使用中樞和支點私人網路設計

中樞和支點是一種熱門的網路模型,可有效地管理常見通訊或安全性需求。

中樞是一個虛擬網路,可用來集中管理外部連線。 其也會裝載多個工作負載所使用的服務。 中樞會協調所有進出支點的通訊。 安全性等 IT 規則或流程可以檢查、路由傳送和集中管理流量。 支點也是虛擬網路,可裝載工作負載,並透過虛擬網路對等互連來連線到中央的中樞。 共用服務會裝載在自己的子網路中,以便與支點共用。 然後,周邊子網路會作為安全性設備。

支點也是 Azure 中用來隔離個別工作負載的虛擬網路。 內部部署總部與 Azure 之間的流量會透過 Azure ExpressRoute 或站對站 VPN 連線到中樞虛擬網路。 從支點到中樞的虛擬網路會對等互連,且允許與內部部署資源進行通訊。 您可以在不同訂用帳戶或資源群組中,實作中樞和每個支點。

支點虛擬網路相互連線有三種主要模式:

  • 支點彼此直接連線︰支點虛擬網路之間會建立虛擬網路對等互連或 VPN 通道,以提供直接連線,而無需周遊中樞虛擬網路。
  • 支點透過網路設備進行通訊:每個支點虛擬網路都會與虛擬 WAN 或中樞虛擬網路對等互連。 設備在中樞之間路由流量。 該設備可由 Microsoft 管理 (與虛擬 WAN 一樣),也可由您管理。
  • 虛擬網路閘道連結至中樞網路並利用使用者定義的路由︰啟用支點之間的通訊。

此圖表顯示基本的中樞和支點結構,此結構會透過 Express Hub 進行混合式連線。

使用 Azure Virtual Network Manager 建立新的 (以及上線現有的) 中樞和支點虛擬網路拓撲,以集中管理連線和安全性控制。

與不同區域的私人網路用戶端通訊

客戶經常需要連線到用戶端的不同 Azure 區域。 更具體地說,這個問題通常歸結為如何連線兩個虛擬網路 (其中一個具有適用於 PostgreSQL 的 Azure 資料庫彈性伺服器執行個體,另一個具有應用程式用戶端) 位於不同區域。

有多種方式可以達成這種連線,包括:

  • 全域虛擬網路對等互連。 這種方法最常見,因為這是將不同區域的網路連線在一起的最簡單方式。 全域虛擬網路對等互連會透過 Azure 骨幹直接在兩個對等互連的虛擬網路之間建立連線。 此方法可提供最佳的網路輸送量和最低的連線延遲。 當虛擬網路對等互連時,Azure 也會自動為您處理路由作業。 這些虛擬網路可與 VPN 閘道上建立的對等互連虛擬網路中的所有資源通訊。
  • 網路對網路連線 (部分機器翻譯)。 虛擬網路間的連線 (網路對網路連線) 本質上是兩個 Azure 位置之間的 VPN。 網路對網路連線會建立在 VPN 閘道上。 相較於全域虛擬網路對等互連,您的流量會多經過兩個流量躍點。 與該方法相比,還會額外增加延遲並降低頻寬。
  • 透過中樞和支點結構中的網路設備進行通訊。 您可以使用網路設備在支點之間轉送流量,而不是直接將支點虛擬網路相互連線。 網路設備提供更多的網路服務,例如深度封包檢查和流量分割或監控,但如果它們的大小不合適,可能會引進延遲和效能瓶頸。

使用私人網路跨 Azure 區域和虛擬網路進行複寫

資料庫複製是將資料從中央或主要伺服器複製到多個稱為複本的伺服器的流程。 主要伺服器接受讀取和寫入作業,複本伺服器則提供唯讀交易。 主要伺服器和複本共同構成資料庫叢集。 資料庫複製的目標是確保資料的備援、一致性、高可用性和可存取性,特別是在高流量、任務關鍵性應用程式中。

適用於 PostgreSQL 的 Azure 資料庫提供兩種複寫方法:透過內建的唯讀副本功能進行的實體(串流)複寫,以及邏輯複寫。 兩者都是不同使用案例的理想選擇,使用者可以根據最後目標選擇其中之一。

跨 Azure 區域複寫且每個區域都有單獨的虛擬網路時,需要跨區域虛擬網路界限的連線,這可以透過虛擬網路對等互連或在中樞和支點結構中透過網路設備來提供。

依預設,DNS 名稱解析的範圍限於虛擬網路內。 一個虛擬網路 (VNET1) 中的任何用戶端都無法解析另一個虛擬網路 (VNET2) 中的適用於 PostgreSQL 的 Azure 資料庫彈性伺服器執行個體 FQDN。

若要解決此問題,您必須確定 VNET1 中的用戶端可以存取適用於 PostgreSQL 的 Azure 資料庫彈性伺服器執行個體私人 DNS 區域。 將 虛擬網路連結 新增至適用於 PostgreSQL 的 Azure 資料庫彈性伺服器執行個體的私人 DNS 區域。

不支援的虛擬網路案例

以下是使用透過虛擬網路整合建立的虛擬網路的一些限制:

  • 將適用於 PostgreSQL 的 Azure 資料庫彈性伺服器執行個體部署至虛擬網路和子網路之後,您無法將它移至另一個虛擬網路或子網路。 您無法將虛擬網路移至另一個資源群組或訂用帳戶。
  • 在子網路中有資源存在之後,就無法增加子網路大小 (位址空間)。
  • 依預設,虛擬網路插入的資源無法與私人連結互動。 如果您想要使用 Private Link 進行私人網路,請參閱 Azure Database for PostgreSQL 搭配 Private Link 網路

重要事項

Azure Resource Manager 支援以安全性控制的形式「鎖定」資源。 資源鎖定會套用至資源,效力及於所有使用者和角色。 資源鎖定有兩種類型︰CanNotDeleteReadOnly。 這些鎖定類型可以套用至私人 DNS 區域或個別記錄集。

針對私人 DNS 區域或個別記錄集套用任一類型的鎖定,可能會干擾適用於 PostgreSQL 的 Azure 資料庫彈性伺服器執行個體更新 DNS 記錄的能力。 這也可能會在 DNS 上進行重要操作時產生問題,例如在進行從主要伺服器到次要伺服器的高可用性容錯移轉時。 基於這些原因,當您搭配 PostgreSQL 的 Azure 資料庫彈性伺服器使用高可用性功能時,請確定您 沒有 使用 DNS 專用區域或記錄鎖定。

主機名稱

無論您選擇何種網路選項,建議您在連線到適用於 PostgreSQL 的 Azure 資料庫彈性伺服器執行個體時,一律使用 FQDN 作為主機名稱。 不保證伺服器的 IP 位址會保持靜態。 使用 FQDN 可協助您避免變更連接字串。

hostname = servername.postgres.database.azure.com 是使用 FQDN 做為主機名稱的範例。 請盡量避免使用 hostname = 10.0.0.4 (私人位址) 或 hostname = 40.2.45.67 (公用位址)。