この記事では、Azure Virtual Desktop でPrivate Linkを設定して、リモート リソースにプライベートに接続する方法について説明します。 制限事項など、Azure Virtual Desktop でPrivate Linkを使用する方法の詳細については、「Azure Virtual Desktop でのAzure Private Link」を参照してください。
前提条件
Azure Virtual Desktop でPrivate Linkを使用するには、次のものが必要です。
サブスクリプションで Azure Virtual Desktop でPrivate Linkを有効にする
Azure Virtual Desktop でPrivate Linkを使用するには、Azure Virtual Desktop でPrivate Link使用する各サブスクリプションで Microsoft.DesktopVirtualization リソース プロバイダーを再登録する必要があります。
シナリオに関連するタブを選択します。
Azure Virtual Desktop リソース プロバイダーを再登録する
Azure Virtual Desktop でPrivate Linkを使用する前に、Microsoft.DesktopVirtualization リソース プロバイダーを再登録する必要があります。 これは、Azure Virtual Desktop でのPrivate Linkに使用するサブスクリプションごとに行う必要があります。
Azure portal にサインインし
検索バーに「 サブスクリプション」 と入力し、一致するサービス エントリを選択します。
サブスクリプションの名前を選択し、[ 設定] セクションで [ リソース プロバイダー] を選択します。
[Microsoft.DesktopVirtualization] を検索して選択し、[再登録] を選択します。
Microsoft.DesktopVirtualization の状態が [登録済み] になっていることを確認します。
Azure Virtual Desktop にPrivate Linkを登録する (21Vianet が運営する Azure for US Government および Azure のみ)
21Vianet が運営する米国政府機関向け Azure と Azure の場合、まず、Azure Virtual Desktop にPrivate Link用に Azure サブスクリプションを登録する必要があります。
Azure portal にサインインし
検索バーに「 サブスクリプション」 と入力し、一致するサービス エントリを選択します。
サブスクリプションの名前を選択し、[ 設定] セクションで [ プレビュー機能] を選択します。
フィルターの 種類 のドロップダウン リストを選択し、 Microsoft.DesktopVirtualization に設定します。
[Azure Virtual Desktop Private Link] を選択し、[登録] を選択します。
Azure Virtual Desktop リソース プロバイダーを再登録する
サブスクリプションを登録したら、 Microsoft.DesktopVirtualization リソース プロバイダーを再登録する必要があります。 これは、Azure Virtual Desktop でのPrivate Linkに使用するサブスクリプションごとに行う必要があります。
Azure portal にサインインし
検索バーに「 サブスクリプション」 と入力し、一致するサービス エントリを選択します。
サブスクリプションの名前を選択し、[ 設定] セクションで [ リソース プロバイダー] を選択します。
[Microsoft.DesktopVirtualization] を検索して選択し、[再登録] を選択します。
Microsoft.DesktopVirtualization の状態が [登録済み] になっていることを確認します。
プライベート エンドポイントを作成する
セットアップ プロセス中に、シナリオに応じて、次のリソースへのプライベート エンドポイントを作成する必要があります。
接続のすべての部分 (クライアントとセッション ホストの初期フィード検出、フィードダウンロード、リモート セッション接続) では、プライベート ルートが使用されます。 次のプライベート エンドポイントが必要です。
用途 |
リソースの種類 |
ターゲット サブリソース |
エンドポイント数量 |
ホスト プールへのConnections |
Microsoft.DesktopVirtualization/hostpools |
接続 |
ホスト プールごとに 1 つ |
フィードのダウンロード |
Microsoft.DesktopVirtualization/workspaces |
飼料 |
ワークスペースごとに 1 つ |
初期フィード検出 |
Microsoft.DesktopVirtualization/workspaces |
グローバル |
すべての Azure Virtual Desktop デプロイに対して 1 つだけ |
クライアントとセッション ホストのフィードダウンロードとリモート セッション接続ではプライベート ルートが使用されますが、初期フィード検出ではパブリック ルートが使用されます。 次のプライベート エンドポイントが必要です。 初期フィード検出のエンドポイントは必要ありません。
用途 |
リソースの種類 |
ターゲット サブリソース |
エンドポイント数量 |
ホスト プールへのConnections |
Microsoft.DesktopVirtualization/hostpools |
接続 |
ホスト プールごとに 1 つ |
フィードのダウンロード |
Microsoft.DesktopVirtualization/workspaces |
飼料 |
ワークスペースごとに 1 つ |
クライアントとセッション ホストのリモート セッション接続のみがプライベート ルートを使用しますが、初期フィード検出とフィードダウンロードではパブリック ルートが使用されます。 次のプライベート エンドポイントが必要です。 ワークスペースへのエンドポイントは必要ありません。
用途 |
リソースの種類 |
ターゲット サブリソース |
エンドポイント数量 |
ホスト プールへのConnections |
Microsoft.DesktopVirtualization/hostpools |
接続 |
ホスト プールごとに 1 つ |
クライアントとセッション ホスト VM の両方がパブリック ルートを使用します。 Private Linkは、このシナリオでは使用されません。
重要
初期フィード検出用のプライベート エンドポイントを作成する場合、グローバル サブリソースに使用されるワークスペースによって共有完全修飾ドメイン名 (FQDN) が管理され、すべてのワークスペース間でのフィードの初期検出が容易になります。 この目的でのみ使用され、アプリケーション グループが登録されていない別のワークスペースを作成する必要があります。 このワークスペースを削除すると、すべてのフィード検出プロセスが機能しなくなります。
初期フィード検出 (グローバル サブリソース) に使用されるワークスペースへのアクセスを制御することはできません。 プライベート アクセスのみを許可するようにこのワークスペースを構成した場合、設定は無視されます。 このワークスペースには、常にパブリック ルートからアクセスできます。
IP アドレスの割り当ては、IP アドレスの需要が増加するにつれて変更される可能性があります。 容量拡張中は、プライベート エンドポイントに追加のアドレスが必要です。 潜在的なアドレス空間の枯渇を考慮し、成長のための十分なヘッドルームを確保することが重要です。 ハブトポロジまたはスポーク トポロジ内のプライベート エンドポイントに対する適切なネットワーク構成を決定する方法の詳細については、「Private Link展開のデシジョン ツリー」を参照してください。
ホスト プールへのConnections
ホスト プールへの接続用の 接続 サブリソースのプライベート エンドポイントを作成するには、シナリオに関連するタブを選択し、手順に従います。
Azure portalを使用してホスト プールへの接続用の接続サブリソースのプライベート エンドポイントを作成する方法を次に示します。
Azure portal にサインインし
検索バーに「 Azure Virtual Desktop 」と入力し、一致するサービス エントリを選択して Azure Virtual Desktop の概要に移動します。
[ ホスト プール] を選択し、 接続 サブリソースを作成するホスト プールの名前を選択します。
ホスト プールの概要から、[ ネットワーク]、[ プライベート エンドポイント接続] の順に選択し、最後に [新しいプライベート エンドポイント] を選択します。
[ 基本 ] タブで、次の情報を入力します。
パラメーター |
Value/Description |
サブスクリプション |
ドロップダウン リストからプライベート エンドポイントを作成するサブスクリプションを選択します。 |
リソース グループ |
既定では、プライベート エンドポイントのワークスペースと同じリソース グループが自動的に設定されますが、ドロップダウン リストから別の既存のリソース グループを選択するか、新しいリソース グループを作成することもできます。 |
名前 |
新しいプライベート エンドポイントの名前を入力します。 |
ネットワーク インターフェイス名 |
ネットワーク インターフェイス名は、プライベート エンドポイントに指定した名前に基づいて自動的に入力されますが、別の名前を指定することもできます。 |
Region |
これは、ワークスペースと同じ Azure リージョンに自動的に既定で設定され、プライベート エンドポイントがデプロイされる場所です。 これは、仮想ネットワークとセッション ホストと同じリージョンである必要があります。 |
このタブが完了したら、[ 次へ: リソース] を選択します。
[ リソース ] タブで、[ サブスクリプション]、[リソースの 種類]、[ リソース] の値を検証し、[ ターゲット サブリソース] で [接続] を選択します。 このタブが完了したら、[次へ: Virtual Network] を選択します。
[Virtual Network] タブで、次の情報を入力します。
パラメーター |
Value/Description |
仮想ネットワーク |
ドロップダウン リストからプライベート エンドポイントを作成する仮想ネットワークを選択します。 |
サブネット |
ドロップダウン リストから、プライベート エンドポイントを作成する仮想ネットワークのサブネットを選択します。 |
プライベート エンドポイントのネットワーク ポリシー |
サブネット ネットワーク ポリシーを選択する場合は、[ 編集] を選択します。 詳細については、「 プライベート エンドポイントのネットワーク ポリシーを管理する」を参照してください。 |
プライベート IP 構成 |
[ IP アドレスを動的に割り当てる ] または [ IP アドレスを静的に割り当てる] を選択します。 アドレス空間は、選択したサブネットから取得されます。
IP アドレスを静的に割り当てる場合は、一覧表示されている各メンバーの [名前] と [プライベート IP ] を入力する必要があります。 |
アプリケーション セキュリティ グループ |
省略可能: ドロップダウン リストからプライベート エンドポイントの既存のアプリケーション セキュリティ グループを選択するか、新しいセキュリティ グループを作成します。 後で追加することもできます。 |
このタブが完了したら、[ 次へ: DNS] を選択します。
[DNS] タブで、[プライベート DNS ゾーンとの統合] で [はい] または [いいえ] を選択して、Azure プライベート DNS ゾーンを使用するかどうかを選択します。
[はい] を選択した場合は、プライベート DNS ゾーンのprivatelink.wvd.microsoft.com
を作成するサブスクリプションとリソース グループを選択します。 詳細については、「 Azure プライベート エンドポイント DNS の構成」を参照してください。
このタブが完了したら、[ 次へ: タグ] を選択します。
省略可能: [ タグ ] タブで、必要な 名前と値のペア を入力し、[ 次へ: 確認と作成] を選択します。
[ 確認と作成 ] タブで、検証に合格していることを確認し、デプロイ中に使用される情報を確認します。
[ 作成] を 選択して、接続サブリソースのプライベート エンドポイントを作成します。
Az.Network モジュールと Az.DesktopVirtualization PowerShell モジュールを使用して、ホスト プールへの接続に使用される接続サブリソースのプライベート エンドポイントを作成する方法を次に示します。 必ず、独自の <placeholder>
値を変更してください。
PowerShell ターミナルの種類でAzure portalで Azure Cloud Shellを開くか、ローカル デバイスで PowerShell を実行します。
プライベート エンドポイントに使用する仮想ネットワークとサブネットの詳細を取得し、次のコマンドを実行して変数に格納します。
# Get the subnet details for the virtual network
$subnet = (Get-AzVirtualNetwork -Name <VNetName> -ResourceGroupName <ResourceGroupName>).Subnets | ? Name -eq <SubnetName>
次のコマンドを実行して、接続サブリソースを使用してホスト プールのPrivate Link サービス接続を作成します。
# Get the resource ID of the host pool
$hostPoolId = (Get-AzWvdHostPool -Name <HostPoolName> -ResourceGroupName <ResourceGroupName>).Id
# Create the service connection
$parameters = @{
Name = '<ServiceConnectionName>'
PrivateLinkServiceId = $hostPoolId
GroupId = 'connection'
}
$serviceConnection = New-AzPrivateLinkServiceConnection @parameters
最後に、次のいずれかの例のコマンドを実行して、プライベート エンドポイントを作成します。
動的に割り当てられた IP アドレスを持つプライベート エンドポイントを作成するには:
# Specify the Azure region. This must be the same region as your virtual network and session hosts.
$location = '<Location>'
# Create the private endpoint
$parameters = @{
Name = '<PrivateEndpointName>'
ResourceGroupName = '<ResourceGroupName>'
Location = $location
Subnet = $subnet
PrivateLinkServiceConnection = $serviceConnection
}
New-AzPrivateEndpoint @parameters
静的に割り当てられた IP アドレスを持つプライベート エンドポイントを作成するには:
# Specify the Azure region. This must be the same region as your virtual network and session hosts.
$location = '<Location>'
# Create a hash table for each private endpoint IP configuration
$ip1 = @{
Name = 'ipconfig1'
GroupId = 'connection'
MemberName = 'broker'
PrivateIPAddress = '<IPAddress>'
}
$ip2 = @{
Name = 'ipconfig2'
GroupId = 'connection'
MemberName = 'diagnostics'
PrivateIPAddress = '<IPAddress>'
}
$ip3 = @{
Name = 'ipconfig3'
GroupId = 'connection'
MemberName = 'gateway-ring-map'
PrivateIPAddress = '<IPAddress>'
}
$ip4 = @{
Name = 'ipconfig4'
GroupId = 'connection'
MemberName = 'web'
PrivateIPAddress = '<IPAddress>'
}
# Create the private endpoint IP configurations
$ipConfig1 = New-AzPrivateEndpointIpConfiguration @ip1
$ipConfig2 = New-AzPrivateEndpointIpConfiguration @ip2
$ipConfig3 = New-AzPrivateEndpointIpConfiguration @ip3
$ipConfig4 = New-AzPrivateEndpointIpConfiguration @ip4
# Create the private endpoint
$parameters = @{
Name = '<PrivateEndpointName>'
ResourceGroupName = '<ResourceGroupName>'
Location = $location
Subnet = $subnet
PrivateLinkServiceConnection = $serviceConnection
IpConfiguration = $ipConfig1, $ipConfig2, $ipConfig3, $ipConfig4
}
New-AzPrivateEndpoint @parameters
出力は次の出力のようになります。
ProvisioningState の値が [成功] であることを確認します。
ResourceGroupName Name Location ProvisioningState Subnet
----------------- ---- -------- ----------------- ------
privatelink endpoint-hp01 uksouth Succeeded
仮想ネットワーク内 のプライベート エンドポイントの DNS 名を解決するには、プライベート エンドポイントの DNS を構成する必要があります。 プライベート DNS ゾーン名が privatelink.wvd.microsoft.com
。 Azure PowerShellを使用してプライベート DNS ゾーンを作成して構成する手順については、「プライベート DNS ゾーンの構成」を参照してください。
Azure CLI のネットワークとデスクトップ仮想化拡張機能を使用して、ホスト プールへの接続に使用される接続サブリソースのプライベート エンドポイントを作成する方法を次に示します。
重要
次の例では、独自の <placeholder>
値を変更する必要があります。
Bash ターミナルの種類でAzure portalで Azure Cloud Shellを開くか、ローカル デバイスで Azure CLI を実行します。
次の例のいずれかのコマンドを実行して、接続サブリソースを使用して、Private Link サービス接続とホスト プールのプライベート エンドポイントを作成します。
動的に割り当てられた IP アドレスを持つプライベート エンドポイントを作成するには:
# Specify the Azure region. This must be the same region as your virtual network and session hosts.
location=<Location>
# Get the resource ID of the host pool
hostPoolId=$(az desktopvirtualization hostpool show \
--name <HostPoolName> \
--resource-group <ResourceGroupName> \
--query [id] \
--output tsv)
# Create a service connection and the private endpoint
az network private-endpoint create \
--name <PrivateEndpointName> \
--resource-group <ResourceGroupName> \
--location $location \
--vnet-name <VNetName> \
--subnet <SubnetName> \
--connection-name <ConnectionName> \
--private-connection-resource-id $hostPoolId \
--group-id connection \
--output table
静的に割り当てられた IP アドレスを持つプライベート エンドポイントを作成するには:
# Specify the Azure region. This must be the same region as your virtual network and session hosts.
location=<Location>
# Get the resource ID of the host pool
hostPoolId=$(az desktopvirtualization hostpool show \
--name <HostPoolName> \
--resource-group <ResourceGroupName> \
--query [id] \
--output tsv)
# Store each private endpoint IP configuration in a variable
ip1={name:ipconfig1,group-id:connection,member-name:broker,private-ip-address:<IPAddress>}
ip2={name:ipconfig2,group-id:connection,member-name:diagnostics,private-ip-address:<IPAddress>}
ip3={name:ipconfig3,group-id:connection,member-name:gateway-ring-map,private-ip-address:<IPAddress>}
ip4={name:ipconfig4,group-id:connection,member-name:web,private-ip-address:<IPAddress>}
# Create a service connection and the private endpoint
az network private-endpoint create \
--name <PrivateEndpointName> \
--resource-group <ResourceGroupName> \
--location $location \
--vnet-name <VNetName> \
--subnet <SubnetName> \
--connection-name <ConnectionName> \
--private-connection-resource-id $hostPoolId \
--group-id connection \
--ip-configs [$ip1,$ip2,$ip3,$ip4] \
--output table
出力は次の出力のようになります。
ProvisioningState の値が [成功] であることを確認します。
CustomNetworkInterfaceName Location Name ProvisioningState ResourceGroup
---------------------------- ---------- -------------------- ------------------- ---------------
uksouth endpoint-hp01 Succeeded privatelink
仮想ネットワーク内 のプライベート エンドポイントの DNS 名を解決するには、プライベート エンドポイントの DNS を構成する必要があります。 プライベート DNS ゾーン名が privatelink.wvd.microsoft.com
。 Azure CLI を使用してプライベート DNS ゾーンを作成および構成する手順については、「 プライベート DNS ゾーンの構成」を参照してください。
重要
Private Linkで使用する各ホスト プールの接続サブリソースのプライベート エンドポイントを作成する必要があります。
フィードのダウンロード
ワークスペースの フィード サブリソースのプライベート エンドポイントを作成するには、シナリオに関連するタブを選択し、手順に従います。
Azure Virtual Desktop の概要から [ ワークスペース] を選択し、 フィード サブリソースを作成するワークスペースの名前を選択します。
ワークスペースの概要から、[ ネットワーク]、[ プライベート エンドポイント接続] の順に選択し、最後に [新しいプライベート エンドポイント] を選択します。
[ 基本 ] タブで、次の情報を入力します。
パラメーター |
Value/Description |
サブスクリプション |
ドロップダウン リストからプライベート エンドポイントを作成するサブスクリプションを選択します。 |
リソース グループ |
既定では、プライベート エンドポイントのワークスペースと同じリソース グループが自動的に設定されますが、ドロップダウン リストから別の既存のリソース グループを選択するか、新しいリソース グループを作成することもできます。 |
名前 |
新しいプライベート エンドポイントの名前を入力します。 |
ネットワーク インターフェイス名 |
ネットワーク インターフェイス名は、プライベート エンドポイントに指定した名前に基づいて自動的に入力されますが、別の名前を指定することもできます。 |
Region |
これは、ワークスペースと同じ Azure リージョンに自動的に既定で設定され、プライベート エンドポイントがデプロイされる場所です。 これは、仮想ネットワークと同じリージョンである必要があります。 |
このタブが完了したら、[ 次へ: リソース] を選択します。
[ リソース ] タブで、[ サブスクリプション]、[リソースの 種類]、[ リソース] の値を検証し、[ ターゲット サブリソース] で [フィード] を選択します。 このタブが完了したら、[次へ: Virtual Network] を選択します。
[Virtual Network] タブで、次の情報を入力します。
パラメーター |
Value/Description |
仮想ネットワーク |
ドロップダウン リストからプライベート エンドポイントを作成する仮想ネットワークを選択します。 |
サブネット |
ドロップダウン リストから、プライベート エンドポイントを作成する仮想ネットワークのサブネットを選択します。 |
プライベート エンドポイントのネットワーク ポリシー |
サブネット ネットワーク ポリシーを選択する場合は、[ 編集] を選択します。 詳細については、「 プライベート エンドポイントのネットワーク ポリシーを管理する」を参照してください。 |
プライベート IP 構成 |
[ IP アドレスを動的に割り当てる ] または [ IP アドレスを静的に割り当てる] を選択します。 アドレス空間は、選択したサブネットから取得されます。
IP アドレスを静的に割り当てる場合は、一覧表示されている各メンバーの [名前] と [プライベート IP ] を入力する必要があります。 |
アプリケーション セキュリティ グループ |
省略可能: ドロップダウン リストからプライベート エンドポイントの既存のアプリケーション セキュリティ グループを選択するか、新しいセキュリティ グループを作成します。 後で追加することもできます。 |
このタブが完了したら、[ 次へ: DNS] を選択します。
[DNS] タブで、[プライベート DNS ゾーンとの統合] で [はい] または [いいえ] を選択して、Azure プライベート DNS ゾーンを使用するかどうかを選択します。
[はい] を選択した場合は、プライベート DNS ゾーンのprivatelink.wvd.microsoft.com
を作成するサブスクリプションとリソース グループを選択します。 詳細については、「 Azure プライベート エンドポイント DNS の構成」を参照してください。
このタブが完了したら、[ 次へ: タグ] を選択します。
省略可能: [ タグ ] タブで、必要な 名前と値のペア を入力し、[ 次へ: 確認と作成] を選択します。
[ 確認と作成 ] タブで、検証に合格していることを確認し、デプロイ中に使用される情報を確認します。
[ 作成] を 選択して、フィード サブリソースのプライベート エンドポイントを作成します。
同じ PowerShell セッションで、次のコマンドを実行して、フィード サブリソースを使用してワークスペースのPrivate Link サービス接続を作成します。 これらの例では、同じ仮想ネットワークとサブネットが使用されます。
# Get the resource ID of the workspace
$workspaceId = (Get-AzWvdWorkspace -Name <WorkspaceName> -ResourceGroupName <ResourceGroupName>).Id
# Create the service connection
$parameters = @{
Name = '<ServiceConnectionName>'
PrivateLinkServiceId = $workspaceId
GroupId = 'feed'
}
$serviceConnection = New-AzPrivateLinkServiceConnection @parameters
最後に、次のいずれかの例のコマンドを実行して、プライベート エンドポイントを作成します。
動的に割り当てられた IP アドレスを持つプライベート エンドポイントを作成するには:
# Specify the Azure region. This must be the same region as your virtual network.
$location = '<Location>'
# Create the private endpoint
$parameters = @{
Name = '<PrivateEndpointName>'
ResourceGroupName = '<ResourceGroupName>'
Location = $location
Subnet = $subnet
PrivateLinkServiceConnection = $serviceConnection
}
New-AzPrivateEndpoint @parameters
静的に割り当てられた IP アドレスを持つプライベート エンドポイントを作成するには:
# Specify the Azure region. This must be the same region as your virtual network.
$location = '<Location>'
# Create a hash table for each private endpoint IP configuration
$ip1 = @{
Name = 'ipconfig1'
GroupId = 'feed'
MemberName = 'web-r1'
PrivateIPAddress = '<IPAddress>'
}
$ip2 = @{
Name = 'ipconfig2'
GroupId = 'feed'
MemberName = 'web-r0'
PrivateIPAddress = '<IPAddress>'
}
# Create the private endpoint IP configurations
$ipConfig1 = New-AzPrivateEndpointIpConfiguration @ip1
$ipConfig2 = New-AzPrivateEndpointIpConfiguration @ip2
# Create the private endpoint
$parameters = @{
Name = '<PrivateEndpointName>'
ResourceGroupName = '<ResourceGroupName>'
Location = $location
Subnet = $subnet
PrivateLinkServiceConnection = $serviceConnection
IpConfiguration = $ipConfig1, $ipConfig2
}
New-AzPrivateEndpoint @parameters
出力は次のようになります。
ProvisioningState の値が [成功] であることを確認します。
ResourceGroupName Name Location ProvisioningState Subnet
----------------- ---- -------- ----------------- ------
privatelink endpoint-ws01 uksouth Succeeded
仮想ネットワーク内 のプライベート エンドポイントの DNS 名を解決するには、プライベート エンドポイントの DNS を構成する必要があります。 プライベート DNS ゾーン名が privatelink.wvd.microsoft.com
。 Azure PowerShellを使用してプライベート DNS ゾーンを作成して構成する手順については、「プライベート DNS ゾーンの構成」を参照してください。
同じ CLI セッションで、次のコマンドを実行して、フィード サブリソースを含むワークスペースのPrivate Link サービス接続とプライベート エンドポイントを作成します。
動的に割り当てられた IP アドレスを持つプライベート エンドポイントを作成するには:
# Specify the Azure region. This must be the same region as your virtual network.
location=<Location>
# Get the resource ID of the workspace
workspaceId=$(az desktopvirtualization workspace show \
--name <WorkspaceName> \
--resource-group <ResourceGroupName> \
--query [id] \
--output tsv)
# Create a service connection and the private endpoint
az network private-endpoint create \
--name <PrivateEndpointName> \
--resource-group <ResourceGroupName> \
--location $location \
--vnet-name <VNetName> \
--subnet <SubnetName> \
--connection-name <ConnectionName> \
--private-connection-resource-id $workspaceId \
--group-id feed \
--output table
静的に割り当てられた IP アドレスを持つプライベート エンドポイントを作成するには:
# Specify the Azure region. This must be the same region as your virtual network.
location=<Location>
# Get the resource ID of the workspace
workspaceId=$(az desktopvirtualization workspace show \
--name <WorkspaceName> \
--resource-group <ResourceGroupName> \
--query [id] \
--output tsv)
# Store each private endpoint IP configuration in a variable
ip1={name:ipconfig1,group-id:feed,member-name:web-r1,private-ip-address:<IPAddress>}
ip2={name:ipconfig2,group-id:feed,member-name:web-r0,private-ip-address:<IPAddress>}
# Create a service connection and the private endpoint
az network private-endpoint create \
--name <PrivateEndpointName> \
--resource-group <ResourceGroupName> \
--location $location \
--vnet-name <VNetName> \
--subnet <SubnetName> \
--connection-name <ConnectionName> \
--private-connection-resource-id $workspaceId \
--group-id feed \
--ip-configs [$ip1,$ip2] \
--output table
出力は次のようになります。
ProvisioningState の値が [成功] であることを確認します。
CustomNetworkInterfaceName Location Name ProvisioningState ResourceGroup
---------------------------- ---------- -------------------- ------------------- ---------------
uksouth endpoint-ws01 Succeeded privatelink
仮想ネットワーク内 のプライベート エンドポイントの DNS 名を解決するには、プライベート エンドポイントの DNS を構成する必要があります。 プライベート DNS ゾーン名が privatelink.wvd.microsoft.com
。 Azure CLI を使用してプライベート DNS ゾーンを作成および構成する手順については、「 プライベート DNS ゾーンの構成」を参照してください。
重要
Private Linkで使用するワークスペースごとに、フィード サブリソースのプライベート エンドポイントを作成する必要があります。
初期フィード検出
初期フィード検出に使用される グローバル サブリソースのプライベート エンドポイントを作成するには、シナリオに関連するタブを選択し、手順に従います。
重要
すべての Azure Virtual Desktop デプロイに対して グローバル サブリソース用のプライベート エンドポイントを 1 つだけ作成します。
任意のワークスペースのグローバル サブリソースへのプライベート エンドポイントは、初期フィード検出用の共有完全修飾ドメイン名 (FQDN) を制御します。 これにより、すべてのワークスペースのフィード検出が有効になります。 プライベート エンドポイントに接続されているワークスペースは非常に重要であるため、削除すると、すべてのフィード検出プロセスが機能しなくなります。 グローバル サブリソースの未使用のプレースホルダー ワークスペースを作成することをお勧めします。
Azure Virtual Desktop の概要から [ ワークスペース] を選択し、グローバル サブリソースに使用するワークスペースの名前を選択します。
-
省略可能: 代わりに、「ワークスペースを作成する」の手順に従って、グローバル エンドポイントを終了するプレースホルダー ワークスペースを作成します。
ワークスペースの概要から、[ ネットワーク]、[ プライベート エンドポイント接続] の順に選択し、最後に [新しいプライベート エンドポイント] を選択します。
[ 基本 ] タブで、次の情報を入力します。
パラメーター |
Value/Description |
サブスクリプション |
ドロップダウン リストからプライベート エンドポイントを作成するサブスクリプションを選択します。 |
リソース グループ |
既定では、プライベート エンドポイントのワークスペースと同じリソース グループが自動的に設定されますが、ドロップダウン リストから別の既存のリソース グループを選択するか、新しいリソース グループを作成することもできます。 |
名前 |
新しいプライベート エンドポイントの名前を入力します。 |
ネットワーク インターフェイス名 |
ネットワーク インターフェイス名は、プライベート エンドポイントに指定した名前に基づいて自動的に入力されますが、別の名前を指定することもできます。 |
Region |
これは、ワークスペースと同じ Azure リージョンに自動的に既定で設定され、プライベート エンドポイントがデプロイされる場所です。 これは、仮想ネットワークと同じリージョンである必要があります。 |
このタブが完了したら、[ 次へ: リソース] を選択します。
[ リソース ] タブで、[ サブスクリプション]、[リソースの 種類]、[ リソース] の値を検証し、[ ターゲット サブリソース] で [ グローバル] を選択します。 このタブが完了したら、[次へ: Virtual Network] を選択します。
[Virtual Network] タブで、次の情報を入力します。
パラメーター |
Value/Description |
仮想ネットワーク |
ドロップダウン リストからプライベート エンドポイントを作成する仮想ネットワークを選択します。 |
サブネット |
ドロップダウン リストから、プライベート エンドポイントを作成する仮想ネットワークのサブネットを選択します。 |
プライベート エンドポイントのネットワーク ポリシー |
サブネット ネットワーク ポリシーを選択する場合は、[ 編集] を選択します。 詳細については、「 プライベート エンドポイントのネットワーク ポリシーを管理する」を参照してください。 |
プライベート IP 構成 |
[ IP アドレスを動的に割り当てる ] または [ IP アドレスを静的に割り当てる] を選択します。 アドレス空間は、選択したサブネットから取得されます。
IP アドレスを静的に割り当てる場合は、一覧表示されている各メンバーの [名前] と [プライベート IP ] を入力する必要があります。 |
アプリケーション セキュリティ グループ |
省略可能: ドロップダウン リストからプライベート エンドポイントの既存のアプリケーション セキュリティ グループを選択するか、新しいセキュリティ グループを作成します。 後で追加することもできます。 |
このタブが完了したら、[ 次へ: DNS] を選択します。
[DNS] タブで、[プライベート DNS ゾーンとの統合] で [はい] または [いいえ] を選択して、Azure プライベート DNS ゾーンを使用するかどうかを選択します。
[はい] を選択した場合は、プライベート DNS ゾーンのprivatelink-global.wvd.microsoft.com
を作成するサブスクリプションとリソース グループを選択します。 詳細については、「 Azure プライベート エンドポイント DNS の構成」を参照してください。
このタブが完了したら、[ 次へ: タグ] を選択します。
省略可能: [ タグ ] タブで、必要な 名前と値のペア を入力し、[ 次へ: 確認と作成] を選択します。
[ 確認と作成 ] タブで、検証に合格していることを確認し、デプロイ中に使用される情報を確認します。
[ 作成] を 選択して、グローバル サブリソースのプライベート エンドポイントを作成します。
省略可能: 「ワークスペースを作成する」の手順に従って、グローバル エンドポイントを終了するプレースホルダー ワークスペースを作成します。
同じ PowerShell セッションで、次のコマンドを実行して、グローバル サブリソースを使用してワークスペースのPrivate Link サービス接続を作成します。 これらの例では、同じ仮想ネットワークとサブネットが使用されます。
# Get the resource ID of the workspace
$workspaceId = (Get-AzWvdWorkspace -Name <WorkspaceName> -ResourceGroupName <ResourceGroupName>).Id
# Create the service connection
$parameters = @{
Name = '<ServiceConnectionName>'
PrivateLinkServiceId = $workspaceId
GroupId = 'global'
}
$serviceConnection = New-AzPrivateLinkServiceConnection @parameters
最後に、次のいずれかの例のコマンドを実行して、プライベート エンドポイントを作成します。
動的に割り当てられた IP アドレスを持つプライベート エンドポイントを作成するには:
# Specify the Azure region. This must be the same region as your virtual network.
$location = '<Location>'
# Create the private endpoint
$parameters = @{
Name = '<PrivateEndpointName>'
ResourceGroupName = '<ResourceGroupName>'
Location = $location
Subnet = $subnet
PrivateLinkServiceConnection = $serviceConnection
}
New-AzPrivateEndpoint @parameters
静的に割り当てられた IP アドレスを持つプライベート エンドポイントを作成するには:
# Specify the Azure region. This must be the same region as your virtual network.
$location = '<Location>'
$ip = @{
Name = '<IPConfigName>'
GroupId = 'global'
MemberName = 'web'
PrivateIPAddress = '<IPAddress>'
}
$ipConfig = New-AzPrivateEndpointIpConfiguration @ip
# Create the private endpoint
$parameters = @{
Name = '<PrivateEndpointName>'
ResourceGroupName = '<ResourceGroupName>'
Location = $location
Subnet = $subnet
PrivateLinkServiceConnection = $serviceConnection
IpConfiguration = $ipconfig
}
New-AzPrivateEndpoint @parameters
出力は次のようになります。
ProvisioningState の値が [成功] であることを確認します。
ResourceGroupName Name Location ProvisioningState Subnet
----------------- ---- -------- ----------------- ------
privatelink endpoint-global uksouth Succeeded
仮想ネットワーク内 のプライベート エンドポイントの DNS 名を解決するには、プライベート エンドポイントの DNS を構成する必要があります。 プライベート DNS ゾーン名が privatelink-global.wvd.microsoft.com
。 Azure PowerShellを使用してプライベート DNS ゾーンを作成して構成する手順については、「プライベート DNS ゾーンの構成」を参照してください。
省略可能: 「ワークスペースを作成する」の手順に従って、グローバル エンドポイントを終了するプレースホルダー ワークスペースを作成します。
同じ CLI セッションで、次のコマンドを実行して、グローバル サブリソースを使用して、ワークスペースのPrivate Link サービス接続とプライベート エンドポイントを作成します。
動的に割り当てられた IP アドレスを持つプライベート エンドポイントを作成するには:
# Specify the Azure region. This must be the same region as your virtual network.
location=<Location>
# Get the resource ID of the workspace
workspaceId=$(az desktopvirtualization workspace show \
--name <WorkspaceName> \
--resource-group <ResourceGroupName> \
--query [id] \
--output tsv)
# Create a service connection and the private endpoint
az network private-endpoint create \
--name <PrivateEndpointName> \
--resource-group <ResourceGroupName> \
--location $location \
--vnet-name <VNetName> \
--subnet <SubnetName> \
--connection-name <ConnectionName> \
--private-connection-resource-id $workspaceId \
--group-id global \
--output table
静的に割り当てられた IP アドレスを持つプライベート エンドポイントを作成するには:
# Specify the Azure region. This must be the same region as your virtual network.
location=<Location>
# Get the resource ID of the workspace
workspaceId=$(az desktopvirtualization workspace show \
--name <WorkspaceName> \
--resource-group <ResourceGroupName> \
--query [id] \
--output tsv)
# Store each private endpoint IP configuration in a variable
ip={name:ipconfig,group-id:global,member-name:web,private-ip-address:<IPAddress>}
# Create a service connection and the private endpoint
az network private-endpoint create \
--name <PrivateEndpointName> \
--resource-group <ResourceGroupName> \
--location $location \
--vnet-name <VNetName> \
--subnet <SubnetName> \
--connection-name <ConnectionName> \
--private-connection-resource-id $workspaceId \
--group-id global \
--ip-config $ip \
--output table
出力は次のようになります。
ProvisioningState の値が [成功] であることを確認します。
CustomNetworkInterfaceName Location Name ProvisioningState ResourceGroup
---------------------------- ---------- -------------------- ------------------- ---------------
uksouth endpoint-global Succeeded privatelink
仮想ネットワーク内 のプライベート エンドポイントの DNS 名を解決するには、プライベート エンドポイントの DNS を構成する必要があります。 プライベート DNS ゾーン名が privatelink-global.wvd.microsoft.com
。 Azure CLI を使用してプライベート DNS ゾーンを作成および構成する手順については、「 プライベート DNS ゾーンの構成」を参照してください。
パブリック ルートを閉じる
プライベート エンドポイントを作成したら、トラフィックがパブリック ルートから送信されるかどうかを制御することもできます。 これは、Azure Virtual Desktop を使用して詳細なレベルで制御することも、ネットワーク セキュリティ グループ (NSG) またはAzure Firewallを使用して広く制御することもできます。
Azure Virtual Desktop を使用してルートを制御する
Azure Virtual Desktop を使用すると、ワークスペースとホスト プールのパブリック トラフィックを個別に制御できます。 シナリオに関連するタブを選択し、手順に従います。 Azure CLI ではこれを構成できません。 Private Linkで使用するワークスペースとホスト プールごとに、これらの手順を繰り返す必要があります。
ワークスペース
Azure Virtual Desktop の概要から [ ワークスペース] を選択し、パブリック トラフィックを制御するワークスペースの名前を選択します。
ホスト プールの概要から [ ネットワーク] を選択し、[ パブリック アクセス ] タブを選択します。
以下のいずれかのオプションを選択します。
設定 |
説明 |
すべてのネットワークからのパブリック アクセスを有効にする |
エンド ユーザーは、パブリック インターネットまたはプライベート エンドポイント経由でフィードにアクセスできます。 |
パブリック アクセスを無効にし、プライベート アクセスを使用する |
エンド ユーザーは、プライベート エンドポイント経由でのみフィードにアクセスできます。 |
[保存] を選択します。
ホスト プール
Azure Virtual Desktop の概要で、[ ホスト プール] を選択し、パブリック トラフィックを制御するホスト プールの名前を選択します。
ホスト プールの概要から [ ネットワーク] を選択し、[ パブリック アクセス ] タブを選択します。
以下のいずれかのオプションを選択します。
設定 |
説明 |
すべてのネットワークからのパブリック アクセスを有効にする |
エンド ユーザーは、パブリック インターネットまたはプライベート エンドポイント経由でフィードとセッション ホストに安全にアクセスできます。 |
エンド ユーザーのパブリック アクセスを有効にする、セッション ホストにプライベート アクセスを使用する |
エンド ユーザーはパブリック インターネット経由でフィードに安全にアクセスできますが、セッション ホストにアクセスするにはプライベート エンドポイントを使用する必要があります。 |
パブリック アクセスを無効にし、プライベート アクセスを使用する |
エンド ユーザーは、プライベート エンドポイント経由でのみフィードとセッション ホストにアクセスできます。 |
[保存] を選択します。
ワークスペース
同じ PowerShell セッションでは、次のコマンドを実行してパブリック アクセスを無効にし、プライベート アクセスを使用できます。
$parameters = @{
Name = '<WorkspaceName>'
ResourceGroupName = '<ResourceGroupName>'
PublicNetworkAccess = 'Disabled'
}
Update-AzWvdWorkspace @parameters
すべてのネットワークからパブリック アクセスを有効にするには、次のコマンドを実行します。
$parameters = @{
Name = '<WorkspaceName>'
ResourceGroupName = '<ResourceGroupName>'
PublicNetworkAccess = 'Enabled'
}
Update-AzWvdWorkspace @parameters
ホスト プール
同じ PowerShell セッションでは、次のコマンドを実行してパブリック アクセスを無効にし、プライベート アクセスを使用できます。
$parameters = @{
Name = '<HostPoolName>'
ResourceGroupName = '<ResourceGroupName>'
PublicNetworkAccess = 'Disabled'
}
Update-AzWvdHostPool @parameters
すべてのネットワークからパブリック アクセスを有効にするには、次のコマンドを実行します。
$parameters = @{
Name = '<HostPoolName>'
ResourceGroupName = '<ResourceGroupName>'
PublicNetworkAccess = 'Enabled'
}
Update-AzWvdHostPool @parameters
エンド ユーザーにパブリック アクセスを使用し、セッション ホストにプライベート アクセスを使用するには、次のコマンドを実行します。
$parameters = @{
Name = '<HostPoolName>'
ResourceGroupName = '<ResourceGroupName>'
PublicNetworkAccess = 'EnabledForSessionHostsOnly'
}
Update-AzWvdHostPool @parameters
エンド ユーザーにプライベート アクセスを使用し、セッション ホストにパブリック アクセスを使用するには、次のコマンドを実行します。
$parameters = @{
Name = '<HostPoolName>'
ResourceGroupName = '<ResourceGroupName>'
PublicNetworkAccess = 'EnabledForClientsOnly'
}
Update-AzWvdHostPool @parameters
重要
セッション ホストのアクセスを変更しても、既存のセッションには影響しません。 プライベート エンドポイントをホスト プールに変更したら、ホスト プール内の各セッション ホストで リモート デスクトップ エージェント ローダー (RDAgentBootLoader) サービスを再起動する必要があります。 また、ホスト プールのネットワーク構成を変更するたびに、このサービスを再起動する必要があります。 サービスを再起動する代わりに、各セッション ホストを再起動できます。
ネットワーク セキュリティ グループまたはAzure Firewallを使用してパブリック ルートをブロックする
ネットワーク セキュリティ グループまたはAzure Firewallを使用して、ユーザー クライアント デバイスまたはセッション ホストからプライベート エンドポイントへの接続を制御する場合は、WindowsVirtualDesktop サービス タグを使用して、パブリック インターネットからのトラフィックをブロックできます。 このサービス タグを使用してパブリック インターネット トラフィックをブロックする場合、すべてのサービス トラフィックはプライベート ルートのみを使用します。
注意
プライベート エンドポイントと 必要な URL リスト内のアドレス間のトラフィックをブロックしないようにします。
接続サブリソースを使用して、ユーザー クライアント デバイスまたはセッション ホストからホスト プール リソースのプライベート エンドポイントへの特定のポートをブロックしないでください。 ポート マッピングは、接続サブリソースに対応する 1 つのプライベート エンドポイント IP アドレスを介してすべてのグローバル ゲートウェイに使用されるため、プライベート エンドポイントへの TCP ダイナミック ポート範囲全体 1 ~ 65535 が必要です。 プライベート エンドポイントにポートを制限すると、ユーザーが Azure Virtual Desktop に正常に接続できない可能性があります。
Azure Virtual Desktop でPrivate Linkを検証する
パブリック ルートを閉じたら、Azure Virtual Desktop でのPrivate Linkが機能していることを検証する必要があります。 これを行うには、各プライベート エンドポイントの接続状態、セッション ホストの状態を確認し、ユーザーがリモート リソースを更新して接続できることをテストします。
各プライベート エンドポイントの接続状態を確認する
各プライベート エンドポイントの接続状態をチェックするには、シナリオに関連するタブを選択し、手順に従います。 Private Linkで使用するワークスペースとホスト プールごとに、これらの手順を繰り返す必要があります。
ワークスペース
Azure Virtual Desktop の概要から [ワークスペース] を選択し、接続状態をチェックするワークスペースの名前を選択します。
ワークスペースの概要から、[ ネットワーク]、[ プライベート エンドポイント接続] の順に選択します。
一覧表示されているプライベート エンドポイントの場合、[接続] 状態が [承認済み] チェック。
ホスト プール
Azure Virtual Desktop の概要で、[ホスト プール] を選択し、接続状態をチェックするホスト プールの名前を選択します。
ホスト プールの概要から、[ ネットワーク]、[ プライベート エンドポイント接続] の順に選択します。
一覧表示されているプライベート エンドポイントの場合、[接続] 状態が [承認済み] チェック。
重要
Az.DesktopVirtualization モジュールのプレビュー バージョンを使用して、次のコマンドを実行する必要があります。 詳細とプレビュー モジュールをダウンロードしてインストールするには、「PowerShell ギャラリー」を参照してください。
ワークスペース
同じ PowerShell セッションで、次のコマンドを実行して、ワークスペースの接続状態をチェックします。
(Get-AzWvdWorkspace -Name <WorkspaceName> -ResourceGroupName <ResourceGroupName).PrivateEndpointConnection | FL Name, PrivateLinkServiceConnectionStateStatus, PrivateLinkServiceConnectionStateDescription, PrivateLinkServiceConnectionStateActionsRequired
出力は次のようになります。
PrivateLinkServiceConnectionStateStatus の値が承認済みであることを確認します。
Name : endpoint-ws01
PrivateLinkServiceConnectionStateStatus : Approved
PrivateLinkServiceConnectionStateDescription : Auto-approved
PrivateLinkServiceConnectionStateActionsRequired : None
ホスト プール
同じ PowerShell セッションで、次のコマンドを実行して、ホスト プールの接続状態をチェックします。
(Get-AzWvdHostPool -Name <HostPoolName> -ResourceGroupName <ResourceGroupName).PrivateEndpointConnection | FL Name, PrivateLinkServiceConnectionStateStatus, PrivateLinkServiceConnectionStateDescription, PrivateLinkServiceConnectionStateActionsRequired
出力は次のようになります。
PrivateLinkServiceConnectionStateStatus の値が承認済みであることを確認します。
Name : endpoint-hp01
PrivateLinkServiceConnectionStateStatus : Approved
PrivateLinkServiceConnectionStateDescription : Auto-approved
PrivateLinkServiceConnectionStateActionsRequired : None
同じ CLI セッションで、次のコマンドを実行して、ワークスペースまたはホスト プールの接続状態をチェックします。
az network private-endpoint show \
--name <PrivateEndpointName> \
--resource-group <ResourceGroupName> \
--query "{name:name, privateLinkServiceConnectionStates:privateLinkServiceConnections[].privateLinkServiceConnectionState}"
出力は次のようになります。
状態の値が [承認済み] であることを確認します。
{
"name": "endpoint-ws01",
"privateLinkServiceConnectionStates": [
{
"actionsRequired": "None",
"description": "Auto-approved",
"status": "Approved"
}
]
}
セッション ホストの状態を確認する
Azure Virtual Desktop でセッション ホストの状態を確認します。
Azure Virtual Desktop の概要で、[ ホスト プール] を選択し、ホスト プールの名前を選択します。
[ 管理 ] セクションで、[ セッション ホスト] を選択します。
セッション ホストの一覧を確認し、その状態が [使用可能] チェック。
ユーザーが接続できることを確認する
ユーザーがリモート リソースに接続できることをテストするには、
リモート デスクトップ クライアントを使用して、 ワークスペースをサブスクライブおよび更新できることを確認します。
最後に、ユーザーがリモート セッションに接続できることを確認します。
次の手順