はじめに
現在は、Azure Virtual Desktop (AVD) で、ホストプールと仮想マシンを作成する際に、どれだけシンプルな画面からデプロイさせられるか? を研究しています。
その際には、いくつかのハードルがあったのですが、そこで得られたノウハウを記事にしていこうと思っています。以下のリンク先で シリーズ化 していますので併せて参照ください。
今回は、クライアント から AVD への接続を閉域化する方法を検証してみました。
この記事で紹介している手順は、以下の公開情報の内容をもとに作成および検証しています。
公開情報
プライベートエンドポイント自体がどういうものなのかは、以下の記事で 詳細に解説していますので、合わせて参照ください。
1. 前提条件
1-1. AVD 環境
検証で使用する AVD 環境は、以下を使います。
オンプレミスドメインに参加する方式を採用しています。
全項目を終える必要はありません。No.6(簡単デプロイ)まで完了していれば、閉域化 の検証は行えます。
1-2. 閉域網
今回の検証では、簡易的に OpenVPN で 閉域接続 を実現できる 以下の構成を使いました。
もちろん、本物の S2S を構成してもらって構いません。
注意
クライアントが、VPN 接続を行った際の名前解決は、仮想ネットワーク上に配置された DNS サーバー を参照するように構成してください。
仮想ネットワーク上の ドメインコントローラー を参照するようにしておくのがおススメです。
Private DNS ゾーンは、本資料の手順で構成しますが、VPN クライアントが 直接 Private DNS ゾーンを参照できません。
1-3. 検証用クライアント
閉域網に接続できる クライアントマシン へ アプリ版の リモートデスクトップクライアント をインストールしておきます。
アプリの入手先
https://learn.microsoft.com/ja-jp/azure/virtual-desktop/users/connect-windows
上記のサイトから、前提事項 の章に 以下の赤枠のリンク先があります。
2. 構築手順
2-1. Azure Virtual Desktop リソース プロバイダーを再登録する
Azure Virtual Desktop で Private Link を使うには、Microsoft.DesktopVirtualization リソース プロバイダーを 再登録 する必要があります。
2-2. プライベート エンドポイントを作成する
この章の手順を行い、ホストプールへの接続 , フィードのダウンロード , 初期フィード検出 という3種類の AVD で利用される通信を プライベートエンドポイント(以後 PE と記載)で構成します。
2-2-1. ホストプールへの接続
2-2-2. フィードのダウンロード
2-2-3. 初期フィード検出
上記の公開情報の補足
No.1~4 までの記載がありますが、これは手順ではありません。
4 パターンから選択せよ・・・という意味です。
ホストプールへの接続 , フィードのダウンロード , 初期フィード検出 の3種類の通信の組み合わせごとに説明されていますが、今回は 全種類の通信を閉域化したいので、以下の シナリオ 1 を見れば良いことになります。
2-2-1. ホストプール (AVD の VM) への接続を PE 経由にする
-
Azure Virtual Desktop の画面を開いて、閉域化したい ホストプール 名を選択します。
- 選択したホストプールを開いたら、左ペインの ネットワーク を選択して プライベートエンドポイント接続 のタブを選択します。その後 +新しいプライベートエンドポイント をクリックします。
-
基本 タブでは、インスタンスの 名前 を任意で指定するだけで、あとの項目は 自動的に入力されます。下図では リソースグループ名に "PE" を追記してみました。
入力したら 次:リソース へ進みます。
-
リソース タブでは、対象サブリソース として connection を選択して 次:仮想ネットワーク へ進みます。
※公開情報で説明されている値を選択しています。
-
仮想ネットワーク タブでは、ホストプール に割り当てられている 仮想ネットワーク と サブネット を選択して 次:DNS へ進みます。
-
DNS タブは、プライベート DNS ゾーンと統合する が はい になっていることを確認して 次:タグ へ進み、さらに 確認および作成 へ進みます。
-
確認および作成 タブでは、最終的な値を確認して 作成 ボタンを押します。
- 作成が完了すると、以下のような画面になります。
2-2-2. フィードのダウンロード を PE 経由にする
-
Azure Virtual Desktop 画面の 左ペイン で ワークスペース を選択してから、閉域化させたい ワークスペース名 を選択します。
ワークスペースの画面が開いたら、左ペインから ネットワーク を選び、プライベートエンドポイント接続 のタブから +新しいプライベートエンドポイント ボタンを押します。
-
基本 タブでは、インスタンスの 名前 を任意で指定するだけで、あとの項目は 自動的に入力されます。下図では リソースグループ名に "-WS-PE" を追記してみました。
入力したら 次:リソース へ進みます。
-
リソース タブでは、対象サブリソース として feed を選択して 次:仮想ネットワーク へ進みます。
※公開情報で説明されている値を選択しています。
-
仮想ネットワーク タブでは、ワークスペース に割り当てられている 仮想ネットワーク と サブネット を選択して 次:DNS へ進みます。
-
DNS タブは、プライベート DNS ゾーンと統合する が はい になっていることを確認して 次:タグ へ進み、さらに 確認および作成 へ進みます。
-
確認および作成 タブでは、最終的な値を確認して 作成 ボタンを押します。
- 作成が完了すると、以下のような画面になります。
2-2-3. フィードの初期検出 を PE 経由にする
- 一覧には、前章で作成した プライベートエンドポイント が1行追加されています。
もう1つ作成するので、再度 +新しいプライベートエンドポイント ボタンを押します。
-
基本 タブでは、インスタンスの 名前 を任意で指定するだけで、あとの項目は 自動的に入力されます。下図では リソースグループ名に "-WS2-PE" を追記してみました。
入力したら 次:リソース へ進みます。
-
リソース タブでは、対象サブリソース として global を選択して 次:仮想ネットワーク へ進みます。
※公開情報で説明されている値を選択しています。
-
仮想ネットワーク タブでは、ワークスペース に割り当てられている 仮想ネットワーク と サブネット を選択して 次:DNS へ進みます。
-
DNS タブは、プライベート DNS ゾーンと統合する が はい になっていることを確認して 次:タグ へ進み、さらに 確認および作成 へ進みます。
-
確認および作成 タブでは、最終的な値を確認して 作成 ボタンを押します。
- 作成が完了すると、以下のような画面になります。
以上で、PE の作成は完了です。
プライベート DNS ゾーン と統合する が はい となっているため、合わせて 内部的な DNS を提供するサービスもデプロイされています。
2-3. 名前解決の確認
ここまで構成がおわると、以下のように Private DNS ゾーンが作成されています。
クライアントから、VPN を使って Azure 仮想ネットワークへ接続してください。
→ 前提で説明した OpenVPN や その他の VPN (S2S など)を使います。
DNS の参照先が 仮想ネットワーク上の DNS サーバー になっているか確認します。
2-3-1. コントロールプレーンへの名前解決
Privatelink-global.wvd.microsoft.com という DNS ゾーン 上に、以下の3つのレコードが作成されています。
その3つのレコードは、以下のように 名前解決が行われて、プライベートアドレスが返されている事を確認します。
プライベートエンドポイントは、以下のように構成されており、上記で名前解決されたアドレスと一致していることが判ります。
2-3-2. セッションホストへの名前解決
Privatelink.wvd.microsoft.com という DNS ゾーン 上に、以下の通り 複数のレコードが作成されています。
以下のように 名前解決が行われて、プライベートアドレスが返されている事を確認します。(数が多い為、1件のみキャプチャしています)
プライベートエンドポイントは、以下のように構成されており、上記で名前解決されたアドレスと一致していることが判ります。
ポイント
この状態で クライアント から AVD への接続を行うと、閉域でも接続が可能になっています。
なお、この時点では 以下の両方のルートが有効です。
・VPN が 接続 されていると 閉域経由
・VPN が 切断 されていると インターネット経由
3. パブリックルートを閉じる
本章の設定を行う事で、インターネットからのアクセスをブロックし、完全に閉域化する事ができます。
セッションホスト へのパブリックルートを閉じる
セッションホストへの閉域接続がうまく構成できていれば、以下のように アクセスを プライベートのみ に制限しても大丈夫です。
上記の制限を行った状態では、セッションホスト への RDP 接続の結果に変化があります。
(VPN 切断時)
以下のようなエラーが発生します。
(VPN 接続時)
閉域経由で、RDP 接続が成功します。
コントロールプレーン へのパブリックルートを閉じる
コントロールプレーンへの閉域接続がうまく構成できていれば、以下のように アクセスを プライベートのみ に制限しても大丈夫です。
上記の制限を行った状態では、リモートデスクトップクライアントの表示に変化があります。
(VPN 切断時) 接続可能なセッションホストが無くなります。
(VPN 接続時) 接続可能なセッションホストが表示されます。
以上で、AVD の 閉域化は完了です。おつかれさまでした。