共用方式為


在 Azure App Service 中啟用虛擬網路整合

透過從 Azure App Service 應用程式與 Azure 虛擬網路整合,您可以從虛擬網路內的應用程式觸達私人資源。

必要條件

虛擬網路整合功能需要:

必須委派子網路給 Microsoft.Web/serverFarms。 如果您未在整合之前委派,布建程式會設定此委派。 子網路必須配置 IPv4 /28 區塊 (16 個位址)。 我們建議您至少要有 64 個位址 (IPv4 /26 區塊),以允許最大水平縮放。

如果虛擬網路與應用程式位於不同的訂用帳戶中,請確定已向資源提供者註冊具有虛擬網路的 Microsoft.Web 訂用帳戶。 當您在訂用帳戶中建立第一個 Web 應用程式時,會註冊提供者。 若要明確註冊提供者,請參閱 註冊資源提供者

在 Azure 入口網站中設定

  1. 在 Azure 入口網站 中移至您的應用程式。 選取 [設定]>[網路]。 在 [ 輸出流量設定] 底下 ,選取 [虛擬網络整合] 旁的 [ 未設定 ] 連結。

  2. 選取 [新增虛擬網路整合]

    顯示選取 [虛擬網路整合] 的螢幕快照。

  3. 選取訂用帳戶和虛擬網路。

  4. 在 [ 子網] 下,下拉式清單包含相同區域中訂用帳戶中的所有虛擬網路。 選取空的預先存在子網或建立新的子網。 選取 Connect

    顯示選取虛擬網路的螢幕快照。

整合期間,會重新啟動您的應用程式。 整合完成時,您會看到與整合之虛擬網路的詳細數據。

使用 Azure CLI 進行設定

您也可以使用 Azure CLI 來設定虛擬網路整合:

az webapp vnet-integration add --resource-group <group-name> --name <app-name> --vnet <vnet-name> --subnet <subnet-name>

注意

此命令會檢查子網是否委派給 Microsoft.Web/serverFarms。 如果未設定,命令會套用必要的委派。 如果子網已設定且您沒有檢查它的許可權,或虛擬網路位於另一個訂用帳戶中,您可以使用 --skip-delegation-check 參數略過驗證。

使用 Azure PowerShell 進行設定

  1. 準備參數。

    $siteName = '<app-name>'
    $vNetResourceGroupName = '<group-name>'
    $webAppResourceGroupName = '<group-name>'
    $vNetName = '<vnet-name>'
    $integrationSubnetName = '<subnet-name>'
    $vNetSubscriptionId = '<subscription-guid>'
    

    注意

    如果虛擬網路位於 webapp 以外的另一個訂用帳戶中,您可以使用 Set-AzContext -Subscription "xxxx-xxxx-xxxx-xxxx" 命令來設定目前的訂用帳戶內容。 將目前的訂用帳戶內容設定為部署虛擬網路的訂用帳戶。

  2. 檢查子網路是否委派給 Microsoft.Web/serverFarms。

    $vnet = Get-AzVirtualNetwork -Name $vNetName -ResourceGroupName $vNetResourceGroupName
    $subnet = Get-AzVirtualNetworkSubnetConfig -Name $integrationSubnetName -VirtualNetwork $vnet
    Get-AzDelegation -Subnet $subnet
    
  3. 如果您的子網未委派給 Microsoft.Web/serverFarms,請使用這些命令新增委派。

    $subnet = Add-AzDelegation -Name "myDelegation" -ServiceName "Microsoft.Web/serverFarms" -Subnet $subnet
    Set-AzVirtualNetwork -VirtualNetwork $vnet
    
  4. 設定虛擬網路整合。

    $subnetResourceId = "/subscriptions/$vNetSubscriptionId/resourceGroups/$vNetResourceGroupName/providers/Microsoft.Network/virtualNetworks/$vNetName/subnets/$integrationSubnetName"
    $webApp = Get-AzResource -ResourceType Microsoft.Web/sites -ResourceGroupName $webAppResourceGroupName -ResourceName $siteName
    $webApp.Properties.virtualNetworkSubnetId = $subnetResourceId
    $webApp.Properties.vnetRouteAllEnabled = 'true'
    $webApp | Set-AzResource -Force
    

    注意

    如果 webapp 位於虛擬網路以外的另一個訂用帳戶中,您可以使用 Set-AzContext -Subscription "xxxx-xxxx-xxxx-xxxx" 命令來設定目前的訂用帳戶內容。 將目前的訂用帳戶內容設定為部署 Web 應用程式的訂用帳戶。