Share via


安全地從 App Service 環境連線到後端資源

重要

這篇文章是關於 App Service 環境 v1。 App Service 環境 v1 將於 2024 年 8 月 31 日淘汰。 有較新版本的 App Service 環境,其更易於使用,並且是在更強大的基礎結構上執行。 若要深入了解新版本,請從 App Service 環境簡介開始。 如果您目前使用 App Service 環境 v1,請遵循此文章中的步驟來移轉至新版本。

自 2024 年 1 月 29 日起,您無法再使用任何可用的方法建立新的 App Service 環境 v1 資源,包括 ARM/Bicep 範本、Azure 入口網站、Azure CLI 或 REST API。 您必須在 2024 年 8 月 31 日之前移轉至 App Service 環境 v3,以避免資源刪除和資料遺失。

因為 App Service 環境一律會在 Azure Resource Manager 虛擬網路或者傳統式部署模型虛擬網路兩者之一中建立,從 App Service 環境傳出至其他後端資源的連線可以獨佔方式透過虛擬網路傳送。 自 2016 年 6 月之後,ASE 也可以部署到使用公用位址範圍或 RFC1918 位址空間 (私人位址)。

例如,SQL Server 可能會在已鎖定連接埠 1433 的虛擬機器叢集上執行。 此端點可能已納入 ACL,只允許從相同虛擬網路上的其他資源進行存取。

另一個例子則是,敏感性端點可能會執行內部部署並透過站台對站台Azure ExpressRoute 連線至 Azure。 因此,只有連接至站台對站台或 ExpressRoute 通道的虛擬網路資源可存取內部部署端點。

在上述這些案例中,App Service 環境所執行的應用程式可安全連線至各種伺服器和資源。 若 App Service 環境所執行應用程式的輸出流量傳送至相同虛擬網路中的私人端點 (或連至相同的虛擬網路),則只會經過虛擬網路。 傳送至私人端點的輸出流量不會經過公用網際網路。

從 App Service 環境到虛擬網路內部端點的輸出流量有一項問題。 App Service 環境無法連線至 App Service 環境所在相同子網路的虛擬機器端點。 若將 App Service 環境部署至保留給 App Service 環境專用的子網路,這項限制通常應不致於構成問題。

注意

雖然這篇文章主要針對 Web Apps,但也適用於 API Apps 和 Mobile Apps。

輸出連線和 DNS 需求

為了讓 App Service 環境正確運作,它需要不同端點的輸出存取權。 ExpressRoute 的網路組態 文章的<需要的網路連線>一節中有提供 ASE 所使用的外部端點完整清單。

App Service 環境需要針對虛擬網路設定的有效 DNS 基礎結構。 如果 DNS 設定在建立「App Service 環境」後已變更,開發人員可以強制「App Service 環境」套用新的 DNS 設定。 在入口網站中的 [App Service 環境] 管理刀鋒視窗頂端,選取 [重新啟動] 圖示,以觸發漸進式的環境重新啟動,該環境隨即會使用新的 DNS 設定。

也建議事先在虛擬網路上設定任何自訂 DNS 伺服器,再建立 App Service 環境。 若在建立 App Service 環境期間變更虛擬網路的 DNS 設定,則會導致 App Service 環境的建立流程失敗。 若 VPN 閘道另一端有無法連線或無法使用的自訂 DNS 伺服器,App Service 環境建立流程也會失敗。

連接至 SQL Server

常見的 SQL Server 組態會有在連接埠 1433 上接聽的端點:

SQL Server Endpoint

有兩種方法可限制送至此端點的流量:

利用網路 ACL 限制存取

使用網路存取控制清單可以保護連接埠 1433。 下列範例將源自虛擬網路內部的用戶端位址新增至指派權限,並封鎖所有其他用戶端的存取權。

Network Access Control List Example

在與 SQL Server 同一個虛擬網路中,App Service 環境所執行的任何應用程式皆可能會連線至 SQL Server 執行個體。 使用 SQL Server 虛擬機器的 VNet 內部 IP 位址。

下列連接字串範例會使用其私密 IP 位址參考 SQL Server。

Server=tcp:10.0.1.6;Database=MyDatabase;User ID=MyUser;Password=PasswordHere;provider=System.Data.SqlClient

雖然虛擬機器也有公用端點,但使用公用 IP 位址的連線嘗試將會因為網路 ACL 而遭到拒絕。

利用網路安全性群組限制存取

另一種保護存取安全的方法是利用網路安全性群組。 網路安全性群組可以套用到個別的虛擬機器,或含有虛擬機器的子網路。

首先,您必須建立網路安全性群組:

New-AzureNetworkSecurityGroup -Name "testNSGexample" -Location "South Central US" -Label "Example network security group for an app service environment"

若要限制只存取 VNet 內部流量,使用網路安全性群組便相當容易。 網路安全性群組中的預設規則只允許從相同虛擬網路中的其他網路用戶端存取。

因此,鎖定 SQL Server 的存取權很簡單。 只要將網路安全性群組及其預設規則套用至執行 SQL Server 的虛擬機器,或包含虛擬機器的子網路即可。

下列範例將網路安全性群組套用至包含的子網路:

Get-AzureNetworkSecurityGroup -Name "testNSGExample" | Set-AzureNetworkSecurityGroupToSubnet -VirtualNetworkName 'testVNet' -SubnetName 'Subnet-1'

最終結果為一組安全性規則,不僅封鎖外部存取,也允許 VNet 內部存取權:

Default Network Security Rules

開始使用

若要開始使用 App Service 環境,請參閱 App Service 環境簡介

如需控制 App Service 環境輸入流量的詳細資訊,請參閱控制 App Service 環境的輸入流量

注意

如果您想要在註冊 Azure 帳戶前先開始使用 Azure App Service,請前往試用應用程式服務,您可以在應用程式服務中立即建立暫時的入門 Web 應用程式。 無需信用卡,也無需簽定合約。