本文說明如何從內部部署網路或 Azure 虛擬網路內設定 App Service Web 應用程式或函式應用程式的改善安全性私人連線。 它也會示範如何透過 Azure Private Link 設定應用程式與其他 Azure PaaS 服務之間的改善安全性連線,而不使用公用因特網。
在本文中,Azure App 服務 是指與其他 App Service 客戶共用基礎結構的定價層,例如基本、標準和進階層。 App Service 環境 直接部署至具有專用支援基礎結構的虛擬網路,並使用隔離定價層,而不是本文的重點。
架構
下載此架構的 Visio 檔案。
資料流程
透過使用 Azure App 服務 區域虛擬網路整合,Web 應用程式會透過 Azure 虛擬網路中的委派子網 VNet 整合子網連線到 Azure 服務。
- VNet 整合子網和私人端點子網網路是不同訂用帳戶中的個別虛擬網路。 這兩個網路都會與中樞 虛擬網絡 對等互連,作為中樞和輪輻網路組態的一部分。 針對區域虛擬網路整合,對等互連的虛擬網路必須位於相同的 Azure 區域中。
Azure Private Link 服務會為私人端點中的 PaaS 服務、Web 應用程式、Azure SQL 資料庫、Azure 記憶體帳戶和私人端點中的 Azure 密鑰保存庫設定私人端點 虛擬網絡。
在此範例中,此虛擬網路專用於僅部署私人端點。 此虛擬網路中不會部署任何其他資源,例如虛擬機(VM)。 選取子網大小時,會考慮未來新增私人端點的需求。
內部部署網路和 Azure 虛擬網路可以透過 站對站 VPN 或 Azure ExpressRoute 私人對等互連進行連線。 內部部署網路中的使用者會私下存取應用程式,並僅透過專用網改善安全性。
在此範例中,內部部署網路和 Azure 虛擬網路會透過 ExpressRoute 私人對等互連進行連線。
針對已經有功能變數名稱系統 (DNS) 解決方案的內部部署網路,內部部署 DNS 解決方案已設定為透過 條件式轉寄站 將 DNS 流量轉送至 Azure 私人 DNS 記錄(例如,azurewebsites.net),將要求轉送至部署在 Azure 中的 DNS 私人解析程式服務的輸入端點。 DNS 私人解析程式會查詢 Azure DNS,並接收 Azure 私用 DNS 虛擬網路連結的相關信息。 然後,解析是由 連結至虛擬網路的私人 DNS 區域來完成。
私用 DNS 區域也會部署在與 相同的訂用帳戶中私人端點 虛擬網絡。
在此範例中,內部部署網路中IP位址為192.168.0.254的 DNS 轉寄站電腦會將所有 DNS 解析要求轉送至主機名 azurewebsites.net 至 Azure 中 DNS 私人解析程式服務的輸入端點,位址為 10.0.0.132。 然後,Azure 提供的 DNS 服務會透過連結至虛擬網路的 Azure 私用 DNS 區域解析要求,此服務具有 IP 位址 168.63.129.16。
需要輸出端點,才能使用 DNS 轉送規則集,啟用從 Azure 到內部部署、其他雲端提供者或外部 DNS 伺服器的條件式轉送名稱解析。
此案例不需要設定 DNS 轉送規則集。
此 App Service 組態應存在:
機碼 值 WEBSITE_DNS_SERVER 168.63.129.16 虛擬網路會連結至所有 Azure 私人 DNS 區域。
- 具有私人端點的虛擬網路會自動連結至私人 DNS 區域。 您必須個別連結其他虛擬網路。
Web 應用程式會透過 Azure 防火牆 與私人端點中 PaaS 服務的私人端點通訊 虛擬網絡。
在 Azure 防火牆 上,應用程式規則會設定為允許 VNet 整合子網與 PaaS 資源的私人端點之間的通訊。 目標完整網域名稱 (FQDN) 為:
*.azurewebsites.net
*.database.windows.net
*.core.windows.net
*.vaultcore.azure.net
Azure SQL、Azure 儲存體 帳戶和 Azure 金鑰保存庫 的防火牆和虛擬網路組態僅允許來自 VNet 整合子網的流量。 設定不允許與任何其他虛擬網路或公用因特網通訊。
元件
- Azure App 服務 裝載 Web 應用程式和函式應用程式,允許自動調整和高可用性,而不需要您管理基礎結構。
- Azure SQL 資料庫 是一般用途的關係資料庫受控服務,可支持關係型數據、空間數據、JSON 和 XML。
- Azure 儲存體 帳戶為 Azure 儲存體 資料提供唯一的命名空間,可從世界各地透過 HTTP 或 HTTPS 存取。 其中包含所有 Azure 儲存體 數據物件:Blob、檔案共用、佇列、數據表和磁碟。
- Azure 金鑰保存庫 是一項服務,可用來安全地儲存和存取雲端應用程式和服務所使用的 API 金鑰、密碼、憑證、密碼編譯密鑰或任何其他秘密。
- Azure 虛擬網路是私人網路在 Azure 中的基本建置組塊。 VM 之類的 Azure 資源可以透過虛擬網路安全地彼此通訊、因特網和內部部署網路。
- Azure Private Link 會在虛擬網路中提供私人端點,以連線到 Azure PaaS 服務,例如 Azure 儲存體 和 SQL 資料庫,或客戶或合作夥伴服務。
- Azure ExpressRoute 私人對等互連會透過私人連線,將內部部署網路延伸至Microsoft雲端。 您也可以在內部部署與 Azure 網路之間建立站對站 VPN,而不是使用 Azure ExpressRoute。
- Azure 防火牆 是受控的雲端式網路安全性服務,可協助保護 Azure 虛擬網絡 資源。
- 私用 DNS 區域提供可靠且安全的 DNS 服務,以管理和解析虛擬網路中的功能變數名稱。
- DNS 私人解析程式 可讓您從內部部署環境查詢 Azure DNS 私人區域,反之亦然,而不需要部署 VM 型 DNS 伺服器。
替代項目
針對私人連線,替代方法是使用 App Service 環境 在隔離的環境中裝載 Web 應用程式。 App Service 環境 可避免App Service客戶之間的共用裝載基礎結構。 針對資料庫,您可以在虛擬網路中原生部署 Azure SQL 受控執行個體,因此您不需要虛擬網路整合或私人端點。 這些供應專案通常較昂貴,因為它們提供單一租用戶隔離部署和其他功能。
如果您有 App Service 環境 但未使用 SQL 受管理執行個體,您仍然可以使用私人端點來私人連線至 Azure SQL 資料庫。 如果您已經有 SQL 受管理執行個體 但正在使用 App Service,您仍然可以使用區域 VNet 整合來連線到 SQL 受管理執行個體 私人位址。
對於其他一些 Azure 服務,例如 金鑰保存庫 或記憶體,除了使用私人端點從 Web Apps 進行高度安全且私人連線之外,也別無選擇。
潛在使用案例
- 從內部部署網路或 Azure 虛擬網路內,透過其 私人端點 的改善安全性,私下存取 App Service Web 應用程式或函式應用程式。
- 從 Web 應用程式或函式應用程式連線到 Azure 平臺即服務 (PaaS) 供應專案:
- 另一個 Web 應用程式
- SQL Database
- Azure 儲存體
- 金鑰保存庫
- 支援 Azure 私人端點進行輸入連線的任何其他服務
考量
這些考量能實作 Azure Well-Architected Framework 的支柱,其為一組指導原則,可以用來改善工作負載的品質。 如需更多資訊,請參閱 Microsoft Azure 結構完善的架構。
安全性
安全性可提供保證,以避免刻意攻擊和濫用您寶貴的資料和系統。 如需詳細資訊,請參閱安全性支柱的概觀。
使用 Web 應用程式的私人端點可讓您:
- 藉由設定私人端點來協助保護您的 Web 應用程式,避免公開公開。
- 使用 VPN 或 ExpressRoute 私人對等互連,從聯機到虛擬網路的內部部署網路,使用改良的安全性連線至 Web Apps。 只允許來自內部部署網路或 Azure 虛擬網路內的 Web 應用程式輸入連線。
- 避免從您的虛擬網路外流任何資料。
您可以透過 azure Azure 應用程式閘道 或 Azure Front Door 等服務,選擇性地使用 Azure Web 應用程式防火牆,進一步改善 Web 應用程式的輸入連線安全性。 當您為 Web 應用程式啟用私人端點時, 不會評估 Web 應用程式的存取限制 設定。
此案例也會改善從 App Service Web 應用程式到下游相依性的安全性,例如資料庫、記憶體或 金鑰保存庫。
您可以設定應用程式路由,將所有流量或僅限私人流量(也稱為 RFC1918 流量)路由傳送至您的虛擬網路。 您可以使用 [路由全部] 設定來設定此行為。 如果 [全部 路由] 已停用,Web 應用程式只會將私人流量路由傳送到您的虛擬網路。 若要封鎖對公用位址的流量,請啟用 [路由全部 ] 設定至虛擬網路。 您也可以使用 網路安全組 來封鎖虛擬網路或因特網中資源的輸出流量。 未啟用 [全部路由] 時,NSG 只會套用至RFC1918流量。
在此範例中,Web 應用程式不需要與任何不在虛擬網路中的服務通訊,因此 會啟用 Route All 。
此案例中的重要安全性考慮是 PaaS 資源的防火牆設定。
SQL 資料庫 防火牆選項
如果沒有使用私人連線,您可以新增 防火牆規則 ,只允許來自指定IP位址範圍的輸入流量。 另一種方法是 允許 Azure 服務 存取伺服器。 這種方法會鎖定防火牆,只允許來自 Azure 內的流量。 但此流量包含所有 Azure 區域和其他客戶。
您也可以新增更嚴格的防火牆規則,只允許應用程式的 輸出IP位址 存取資料庫。 但這些IP位址會與多個App Services共用,並允許來自相同 部署戳記上其他客戶的流量,這會使用相同的輸出IP位址。
透過虛擬網路使用私人連線提供這些防火牆選項,協助防止其他人存取資料庫:
- 在此範例中,建立 虛擬網路規則 ,只允許來自 VNet 整合、 VNet 整合子網所委派的區域子網 流量。 委派的子網必須針對 Microsoft.Sql 設定服務端點,資料庫才能識別來自該子網的流量。
- 設定防火牆以 拒絕公用網路存取。 這樣做會關閉所有其他防火牆規則,並讓資料庫只能透過其私人端點存取。
拒絕公用網路存取的選項是最安全的組態。 但是,如果您使用此選項,則只能透過裝載私人端點的虛擬網路來存取資料庫。 若要連線到資料庫,Web 應用程式以外的任何專案都必須直接連線到虛擬網路。
例如,本機計算機上 SQL Server Management Studio (SSMS) 的部署或緊急手動連線無法連線到資料庫,除非透過 VPN 或 ExpressRoute 連線到虛擬網路。 您也可以從遠端連線到虛擬網路中的 VM,並從該處使用 SSMS。 針對特殊情況,您可以暫時允許公用網路存取,並使用其他組態選項來降低風險。
記憶體帳戶和 金鑰保存庫 防火牆選項
儲存體帳戶和金鑰保存庫具有可從因特網存取的公用端點。 您也可以儲存記憶體帳戶和金鑰儲存庫建立私人端點。 這麼做會指派來自虛擬網路的私人IP位址,並協助透過私人連結保護虛擬網路與個別服務之間的所有流量。
當您建立私人端點時, VNet 整合子網 可以私下存取服務,並透過私人連結改善安全性。 但記憶體帳戶和金鑰保存庫仍可從其他 Azure 虛擬網路存取。 若要封鎖來自任何其他虛擬網路的存取,請為此委派的子網建立服務端點。
可用性
App Service、Azure SQL 資料庫、Azure 儲存體 和 Azure 金鑰保存庫 的私人鏈接支援適用於所有公用區域。 若要檢查其他區域中的可用性,請參閱 Azure Private Link 可用性。
Private Link 將另一個元件和可用性考慮引入架構。 Private Link 服務具有 高可用性 SLA。 當您計算整個解決方案的複合 SLO 時,必須考慮此 SLA。
延展性
如需在中樞和輪輻網路架構中整合適用於 PaaS 服務的 Azure Private Link 與 Azure 私用 DNS 區域的相關信息,請參閱大規模私人連結和 DNS 整合。
全域對等互連
任何可透過虛擬網路連線的 Azure 區域中的任何服務,都可以透過中樞和輪輻拓撲中的虛擬網路對等互連,連線到 PaaS 服務的私人端點。 不過,針對 App Service 區域 VNet 整合,對等互連的虛擬網路必須位於相同的 Azure 區域中。
缺乏全域對等互連支援表示您無法將此解決方案用於從 App Service 到資料庫或其他 Azure 區域中其他私人端點的跨區域連線。 例如,此解決方案不適用於多區域部署以支援部分故障轉移,其中 Web 應用程式在一個區域中保持作用中,但必須連線至另一個區域中的故障轉移資料庫,反之亦然。 但這種情況還有其他解決方案存在。
如果您需要將 Web Apps 連線至另一個區域中的虛擬網路,您可以設定閘道所需的 VNet 整合。 限制是閘道所需的 VNet 整合無法與與 Azure ExpressRoute 連線的虛擬網路搭配使用。
記錄和監視
Azure Private Link 與 Azure 監視器整合,可讓您查看數據是否流動。
您也可以使用 Azure 網路監看員 中的連線疑難解答服務,追蹤從虛擬網路中的 VM 到私人端點資源的 FQDN 連線。
成本最佳化
成本最佳化是關於考慮如何減少不必要的費用,並提升營運效率。 如需詳細資訊,請參閱成本最佳化支柱的概觀。
基本、標準、進階 v2、進階 v3、隔離 v2 App Service 和 Azure Functions Premium 方案中支援的定價層中,App Service 區域 VNet 整合不會增加任何成本。
私人端點適用於 Windows Web 應用程式和 Linux Web 應用程式、容器化或非容器化、裝載於基本、標準、進階 v2、進階 v3 和隔離 v2 App Service 方案,以及部署至進階方案的函式應用程式。
啟用 PaaS 服務私人端點的 Azure Private Link 服務具有相關聯的成本,其依據每小時費用加上頻寬的進階。 如需詳細資訊, 請參閱 Private Link 定價 頁面。 從用戶端虛擬網路連線到中樞虛擬網路中的 Azure 防火牆 會產生費用。 從中樞虛擬網路中的 Azure 防火牆 連線到對等互連虛擬網路中的私人端點,您不需付費。
Azure 私用 DNS 區域成本是以 Azure 中裝載的 DNS 區域數目和收到的 DNS 查詢數目為基礎。
若要探索執行此案例的成本,請參閱 Azure 定價計算機預估。 本文所述的所有服務都會預先設定小型應用程式的合理預設值。 若要查看您的使用案例定價如何變更,請變更適當的變數以符合您預期的使用量。
參與者
本文由 Microsoft 維護。 原始投稿人如下。
主要作者:
- Ankit Singhal |雲端解決方案架構師
若要查看非公開的 LinkedIn 設定檔,請登入 LinkedIn。
下一步
- 請參閱如何使用 私人端點整合 Azure Functions 與 Azure 虛擬網路的逐步指引。
- 請參閱設定 Azure 防火牆 應用程式規則的步驟,以檢查各種網路拓撲中目的地為私人端點的流量。
- 如需 App Service 輸入和輸出案例的詳細資訊,以及要使用哪些功能,請參閱 App Service 網路功能概觀。
- 如需 Azure Web Apps 私人端點的詳細資訊,請參閱 使用適用於 Azure Web Apps 的私人端點。
- 如需整合 App Service Web 應用程式與 Azure 虛擬網絡 的詳細資訊,請參閱整合您的應用程式與 Azure 虛擬網路。
- 某些 PaaS 服務的 FQDN 可能會自動解析為公用 IP 位址。 如需覆寫 DNS 組態以連線至私人端點的相關信息,請參閱 Azure 私人端點 DNS 組態。