多租用戶和 Azure Private Link
Azure Private Link 提供 Azure 平台服務的私人 IP 位址,以及裝載在 Azure 虛擬機上的您自己的應用程式。 您可以使用 Private Link 從租使用者的 Azure 環境啟用私人連線。 當租使用者透過虛擬專用網網關(VPN 閘道)或 ExpressRoute 連線時,租使用者也可以使用 Private Link 從其內部部署環境存取您的解決方案。
許多大型 SaaS 提供者都會使用 Azure Private Link,包括 Snowflake、Confluent Cloud 和 MongoDB Atlas。
在本文中,我們會檢閱如何為 Azure 裝載的多租使用者解決方案設定 Private Link。
主要考量
重疊的IP位址空間
Private Link 為多租用戶解決方案提供強大的功能,讓租使用者可以透過私人位址空間存取服務。
不同的租用戶經常使用相同的或重疊的私人IP位址空間。 例如,您的多租用戶解決方案可能會使用的 10.1.0.0/16
IP位址空間。 假設租使用者 A 使用自己的內部部署網路與相同的 IP 位址空間,而巧合的租使用者 B 也會使用相同的 IP 位址空間。 您無法直接連線或將網路對等互連,因為IP位址範圍重疊。
當您使用 Private Link 來啟用從每個租用戶連線到多租使用者解決方案的連線時,每個租使用者的流量會自動套用網路位址轉換 (NAT)。 每個租使用者都可以在各自的網路中使用私人IP位址,且流量會以透明方式流向多租用戶解決方案。 Private Link 會在流量上執行 NAT,即使租使用者和服務提供者都使用重疊的 IP 位址範圍:
當流量抵達多租用戶解決方案時,已轉譯。 這表示流量似乎源自多租用戶服務自己的虛擬網路IP位址空間。 Private Link 提供 TCP Proxy 通訊協定 v2 功能,可讓多租使用者服務知道傳送要求的租使用者,甚至是來源網路的原始 IP 位址。
服務選取
當您使用 Private Link 時,請務必考慮您想要允許輸入連線的服務。
Azure Private Link 服務 會與標準負載平衡器後方的虛擬機搭配使用。
您也可以搭配其他 Azure 服務使用 Private Link。 這些服務包括應用程式裝載平臺,例如 Azure App 服務。 它們也包括 Azure 應用程式閘道 或 Azure API 管理,也就是網路和 API 閘道。
您使用的應用程式平台會決定 Private Link 組態的許多層面,以及適用的限制。 此外,某些服務不支持輸入流量的 Private Link。 檢閱您用來瞭解其 Private Link 支援之 Azure 服務的檔。
限制
請仔細考慮您可以根據解決方案架構建立的私人端點數目。 如果您使用平臺即服務 (PaaS) 應用程式平臺,請務必注意單一資源可支援的私人端點數目上限。 如果您執行虛擬機,您可以將 Private Link 服務實例附加至標準負載平衡器 (SLB)。 在此設定中,您通常可以連線更多私人端點,但仍適用限制。 這些限制可能會決定您可以使用 Private Link 連線到資源的租用戶數目。 檢閱 Azure 訂用帳戶和服務限制、配額和條件約束 ,以瞭解端點和連線數目的限制。
此外,某些服務需要特殊的網路設定才能使用 Private Link。 例如,如果您使用 Private Link 搭配 Azure 應用程式閘道,除了 應用程式閘道 資源的標準子網之外,還必須布建專用子網。
仔細測試您的解決方案,包括您的部署和診斷設定,並啟用 Private Link 設定。 在某些 Azure 服務上啟用私人端點時,會封鎖公用因特網流量。 此行為可能需要您變更部署和管理程式。
Private Link 與公開服務結合
您可以選擇將解決方案部署為因特網對向,也可以透過私人端點公開。 例如,有些租使用者可能需要私人連線,而另一些租用戶則依賴公用因特網連線。 請考慮您的整體網路拓撲,以及每個租使用者流量所遵循的路徑。
當您的解決方案是以標準負載平衡器後方的虛擬機為基礎時,您可以透過 Private Link 服務公開您的端點。 在此情況下,Web 應用程式防火牆和應用程式路由可能已是虛擬機型工作負載的一部分。
許多 Azure PaaS 服務都支援 Private Link 來進行輸入連線,即使是跨不同的 Azure 訂用帳戶和Microsoft Entra 租使用者。 您可以使用該服務的 Private Link 功能來公開您的端點。
當您使用其他因特網面向的服務,例如 Azure Front Door 時,請務必考慮它們是否支援輸入流量的 Private Link。 如果沒有,請考慮您的流量如何流經解決方案的每個路徑。
例如,假設您建置在虛擬機擴展集上執行的因特網面向應用程式。 您可以使用 Azure Front Door,包括其 Web 應用程式防火牆 (WAF),以達到安全性和流量加速,並設定 Front Door 透過私人端點將流量傳送至後端 (origin) 服務。 租使用者 A 會使用公用端點連線到您的解決方案,而租使用者 B 則使用私人端點連線。 因為 Front Door 不支援連入連線的 Private Link,租使用者 B 的流量會略過您的 Front Door 及其 WAF:
隔離模型
Private Link 的設計訴求是支援多個個別用戶端可以使用單一應用層的案例,例如您的租使用者。 當您考慮隔離 Private Link 時,主要考慮的是必須部署的資源數目,以支援您的需求。 您可以用於 Private Link 的租使用者隔離模型取決於您所使用的服務。
Private Link 服務的隔離模型
如果您使用 Private Link 服務搭配標準負載平衡器後方的虛擬機,您可以考慮數個隔離模型。
考量事項 | 共用 Private Link 服務和共用負載平衡器 | 專用 Private Link 服務和專用負載平衡器 | 專用 Private Link 服務和共用負載平衡器 |
---|---|---|---|
部署複雜度 | 低 | 中高,視租用戶數目而定 | 中高,視租用戶數目而定 |
作業複雜度 | 低 | 中高,視資源數目而定 | 中高,視資源數目而定 |
要考慮的限制 | 相同 Private Link 服務上的私人端點數目 | 每個訂用帳戶的 Private Link 服務數目 | 每個標準負載平衡器的 Private Link 服務數目 |
範例案例 | 具有共用應用層的大型多租用戶解決方案 | 每個租用戶的個別部署戳記 | 單一戳記中的共享應用層,具有大量租使用者 |
在這三個模型中,數據隔離和效能層級取決於您解決方案的其他元素,而 Private Link 服務部署實際上不會影響這些因素。
共用 Private Link 服務和共用標準負載平衡器
您可以考慮部署連線至標準負載平衡器的共用 Private Link 服務。 每個租使用者都可以建立私人端點,並用它來連線到您的解決方案。
單一 Private Link 服務實例支援大量的私人端點。 如果您耗盡限制,則可以部署更多 Private Link 服務實例,不過您也可以限制您可以在單一負載平衡器上部署的 Private Link 服務數目。 如果您預期會接近這些限制,請考慮使用以部署戳記為基礎的方法,並將共用負載平衡器和 Private Link 服務實例部署到每個戳記中。
每個租使用者專用的 Private Link 服務和專用標準負載平衡器
您可以為每個租使用者部署專用的 Private Link 服務和專用負載平衡器。 當您針對每個租使用者有一組專用的虛擬機時,例如當您的租用戶有嚴格的合規性需求時,這個方法就很合理。
每個租用戶和共用標準負載平衡器的專用 Private Link 服務
您也可以使用共用的標準負載平衡器,為每個租使用者部署專用的 Private Link 服務實例。 不過,此模型不太可能提供許多好處。 此外,由於您可以在單一標準負載平衡器上部署的 Private Link 服務數目有限制,因此此模型不太可能超出小型多租用戶解決方案。
更常見的是,您可以部署多個共用 Private Link 服務。 此方法可讓您擴充解決方案可在一個共用負載平衡器上支援的私人端點數目。
使用私人端點的 Azure PaaS 服務隔離模型
當您部署 Azure 平臺即服務 (PaaS) 服務,並想要讓租用戶能夠使用私人端點存取這些服務時,請考慮特定服務的功能和條件約束。 此外,請考慮您的應用程式層資源是否專用於特定租使用者,或是否在租用戶之間共用。
如果您為每個租使用者部署一組專用應用層資源,您可能會為該租使用者部署一個私人端點,以用來存取其資源。 您不太可能耗盡任何 Private Link 相關服務限制,因為每個租使用者都有自己的專屬資源。
當您在租使用者之間共用應用層資源時,您可以考慮為每個租使用者部署私人端點。 可以附加至單一資源的私人端點數目有限制,而且每個服務的限制都不同。
支援多租使用者的 Azure Private Link 功能
Private Link 有數個在多租用戶環境中很有説明的功能。 不過,可用的特定功能取決於您所使用的服務。 虛擬機和負載平衡器的基本 Azure Private Link 服務支援下列所有功能。 具有 Private Link 支援的其他服務可能只提供這些功能的子集。
服務別名
當租使用者使用 Private Link 設定服務存取權時,他們必須能夠識別您的服務,讓 Azure 可以建立連線。
Private Link 服務,以及其他與 Private Link 相容的 Azure 服務,可讓您 設定提供給租使用者的別名 。 藉由使用別名,您可以避免公開 Azure 訂用帳戶標識碼和資源組名。
服務可見度
Private Link 服務可讓您 控制私人端點的可見度。 如果所有 Azure 客戶知道其別名或資源識別碼,您可能會允許所有 Azure 客戶連線到您的服務。 或者,您可以限制只存取一組已知的 Azure 客戶。
您也可以指定一組預先核准的 Azure 訂用帳戶標識碼,以連線到您的私人端點。 如果您選擇使用此方法,請考慮如何收集和授權訂用帳戶標識碼。 例如,您可能會在應用程式中提供系統管理使用者介面,以收集租用戶的訂用帳戶標識碼。 然後,您可以動態地重新設定 Private Link 服務實例,以預先核准連線的訂用帳戶標識碼。
線上核准
在用戶端(例如租使用者)與私人端點之間要求連線之後,Private Link 會要求核准連線。 在核准連線之前,流量無法流經私人端點連線。
Private Link 服務支持數種類型的核准流程,包括:
- 手動核准,您的小組會明確核准每個連線。 當您只有少數租使用者透過 Private Link 使用您的服務時,這種方法是可行的。
- 以 API 為基礎的核准,其中 Private Link 服務會將連線視為需要手動核准,而您的應用程式會使用 更新私人端點連線 API、Azure CLI 或 Azure PowerShell 來核准連線。 當您有已獲授權使用私人端點的租用戶清單時,此方法很有用。
- 自動核准,其中 Private Link 服務本身會維護應自動核准其連線的訂用帳戶標識碼清單。
如需詳細資訊,請參閱 控制服務存取。
Proxy 通訊協定 v2
當您使用 Private Link 服務時,根據預設,您的應用程式只能看到已透過網路位址轉換 (NAT) 的 IP 位址。 此行為表示流量似乎會從您自己的虛擬網路內流動。
Private Link 可讓您存取租使用者虛擬網路中的原始用戶端 IP 位址。 此功能使用 TCP Proxy 通訊協定 v2。
例如,假設租用戶的系統管理員需要新增IP位址型存取限制,例如 主機10.0.0.0.10可以存取服務,但主機10.0.0.20無法存取。 當您使用 Proxy 通訊協定 v2 時,您可以讓租使用者在您的應用程式中設定這些類型的存取限制。 不過,您的應用程式程式代碼必須檢查用戶端的原始IP位址,並強制執行限制。
相關資源
- 來自提供者 (SaaS ISV) 和取用者觀點的 Azure Private Link 服務說明和示範:查看 Azure Private Link 服務功能的影片,可啟用多租使用者服務提供者(例如建置 SaaS 產品的獨立軟體廠商)。 此解決方案可讓取用者使用取用者自有 Azure 虛擬網路的私人 IP 位址來存取提供者的服務。
- 搭配 Azure Private Link 服務的 TCP Proxy 通訊協定 v2 — 深入探討:呈現 TCP Proxy 通訊協定 v2 的影片,這是 Azure Private Link 服務的進階功能。 在多租使用者和 SaaS 案例中很有用。 影片示範如何在 Azure Private Link 服務中啟用 Proxy 通訊協定 v2。 它也會示範如何設定 NGINX 服務,以讀取原始用戶端的來源私人 IP 位址,而不是 NAT IP,以透過私人端點存取服務。
- 使用 NGINX Plus 從 Azure Private Link 服務譯碼 Proxy 通訊協定 TLV:影片會查看如何使用 NGINX Plus 從 Azure Private Link 服務取得 TCP Proxy 通訊協定 v2 TLV
linkIdentifier
。 影片示範如何擷取和譯碼私人端點聯機的數值linkIdentifier
,也稱為LINKID
。 此解決方案適用於需要識別建立連線之特定取用者租使用者的多租使用者提供者。 - SaaS 私人連線模式:範例解決方案說明使用 Azure 受控應用程式自動核准私人端點連線的方法。
參與者
本文由 Microsoft 維護。 原始投稿人如下。
主要作者:
- John Downs |首席軟體工程師
- 阿森·弗拉基米爾斯基 | 適用於 Azure 的主要客戶工程師 FastTrack
其他參與者:
- Sumeet Mittal |主要產品管理員、Azure Private Link
若要查看非公開的 LinkedIn 設定檔,請登入 LinkedIn。
下一步
檢閱 多租用戶的網路方法。