Azure App Service で仮想ネットワーク統合を有効にする
Azure App Service アプリから Azure 仮想ネットワークと統合すると、仮想ネットワーク内のアプリからプライベート リソースにアクセスできます。
前提条件
仮想ネットワーク統合機能には以下が必要です。
- 仮想ネットワーク統合をサポートする App Service 価格レベル。
- 空のサブネットを持つ同じリージョン内の仮想ネットワーク。
サブネットは Microsoft.Web/serverFarms に委任する必要があります。 統合前に委任が行われなかった場合、プロビジョニング処理によってこの委任が構成されます。 サブネットには、IPv4 /28
ブロック (16 アドレス) を割り当てる必要があります。 水平方向の最大スケールを可能にするために、少なくとも 64 個のアドレス (IPv4 /26
ブロック) を使用することをお勧めします。
仮想ネットワークがアプリとは異なるサブスクリプションにある場合、仮想ネットワークがあるサブスクリプションが Microsoft.Web
リソース プロバイダーに登録されていることを確認する必要があります。 プロバイダーはこのドキュメントに従って明示的に登録できますが、サブスクリプションで最初の Web アプリを作成するときに自動的に登録されます。
Azure portal で構成する
App Service ポータルで [ネットワーク] に移動します。 [送信トラフィックの構成] で、[仮想ネットワーク統合] を選択します。
[仮想ネットワーク統合を追加する] を選択します。
ドロップダウン リストには、お使いのサブスクリプションで同じリージョンに存在するすべての仮想ネットワークが含まれています。 空の既存のサブネットを選択するか、新しいサブネットを作成します。
統合中にアプリは再起動されます。 統合が完了すると、統合されている仮想ネットワークの詳細が表示されます。
Azure CLI を使用して構成する
Azure CLI を使用して仮想ネットワーク統合を構成することもできます。
az webapp vnet-integration add --resource-group <group-name> --name <app-name> --vnet <vnet-name> --subnet <subnet-name>
Note
このコマンドでは、サブネットが Microsoft.Web/serverFarms に委任されているかどうかを確認し、構成されていない場合は必要な委任を適用します。 サブネットが構成済みで、これを確認するアクセス許可が付与されていない場合、または仮想ネットワークが別のサブスクリプションにある場合は、 --skip-delegation-check
パラメーターを使用してこの検証をバイパスできます。
Azure PowerShell を使用して構成する
パラメーターを準備します。
$siteName = '<app-name>'
$vNetResourceGroupName = '<group-name>'
$webAppResourceGroupName = '<group-name>'
$vNetName = '<vnet-name>'
$integrationSubnetName = '<subnet-name>'
$vNetSubscriptionId = '<subscription-guid>'
Note
仮想ネットワークが webapp 以外のサブスクリプションにある場合は、Set-AzContext -Subscription "xxxx-xxxx-xxxx-xxxx-xxxx" コマンドを使用して、現在のサブスクリプション コンテキストを設定できます。 現在のサブスクリプション コンテキストを、仮想ネットワークがデプロイされたサブスクリプションに設定します。
サブネットが Microsoft.Web/serverFarms に委任されていることを確認します。
$vnet = Get-AzVirtualNetwork -Name $vNetName -ResourceGroupName $vNetResourceGroupName
$subnet = Get-AzVirtualNetworkSubnetConfig -Name $integrationSubnetName -VirtualNetwork $vnet
Get-AzDelegation -Subnet $subnet
サブネットが Microsoft.Web/serverFarms に委任されていない場合は、次のコマンドを使用して委任を追加します。
$subnet = Add-AzDelegation -Name "myDelegation" -ServiceName "Microsoft.Web/serverFarms" -Subnet $subnet
Set-AzVirtualNetwork -VirtualNetwork $vnet
仮想ネットワーク統合を構成する
Note
webapp が仮想ネットワーク以外のサブスクリプションにある場合は、Set-AzContext -Subscription "xxxx-xxxx-xxxx-xxxx-xxxx" コマンドを使用して、現在のサブスクリプション コンテキストを設定できます。 現在のサブスクリプション コンテキストを、Web アプリがデプロイされたサブスクリプションに設定します。
$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