テレワーク用にWindows Virtual Desktop環境を構築する

在宅勤務などで仕事をする際に仮想デスクトップをクラウド上に置いて、まずはそこできちんと会社のシステムに入るための認証を行い、管理されたデスクトップ環境から企業のシステムを使いたい(使わせたい)、というニーズをよく聞きます。
ここではWindows Virtual Desktop (WVD)で、そのようなテレワーク環境を構築するための情報をまとめます。

# リファレンスアーキテクチャ
![ref1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/684720/085966fc-61e8-3d79-ca3f-66ea01fe281a.png)
ここでご紹介するのは代表的な一つの実装パターンです。

- ポイント
 - 多要素認証を使ってユーザー/パスワードのみだけではない強固なセキュリティ
 - 仮想デスクトップからのインターネットアクセスは、許可されたところだけ
 - アクセス履歴はログを取り、後から行動分析可能
 - 社内のリソースへはまとめて閉域網で接続
 - 既存のADと接続しない単独構成も可能
 - その代わり、WVD用のユーザーアカウントの払い出し作業が発生したり、複数回のユーザー認証が入る場合があることに注意

# テレワーク用Windows Virtual Desktop環境構築
上のリファレンスアーキテクチャは下記の構成要素で成り立っています。

| 番号 | 構成要素 |
|:-:|:--|
| ①  | Windows Virtual Desktopインフラ  |
| ② | アクセスログ管理 |
| ③ | ネットワークパケットフィルター |
| ④ | 多要素認証 |
| ⑤ | オンプレとのVPN |

## ① Windows Virtual Desktopインフラ
まず最初に、Windows Virtual Desktop (WVD)そのものの環境が必要です。
![ref2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/684720/10858455-4cb1-0ec7-f2f9-53378f3e5bd7.png)
下記の記事が参考になります。

- [サクッと検証用Windows Virtual Desktopを構築](https://qiita.com/takeokams/items/ef26b60306d1cb5eee27)

	一つ一つ手組みしていきますので、WVDを構成する個々のAzureサービスの理解が深まります。
- [Azure Virtual Desktop (WVD) クイックスタート](https://qiita.com/takeokams/items/26732ec60690f432b50d)
ほぼ全自動で環境を作り上げます。2021年7月10日現在Previeweですが、条件が合えばこれで作るのが一番手間がないです。
- [Windows Virtual Desktopで使う日本語UIのWindows 10 + Officeのマスターイメージを作る](https://qiita.com/takeokams/items/4e0753047822b13bbcf7)
Azureでは日本語のWindowsイメージを提供していません。日本語のユーザーインタフェースを使うためには作業が必要となりますので、こちらにまとめておきました。
- [Windows 10 マルチセッション版の利用上の注意点](https://www.microsoft.com/ja-jp/events/azurebase/blog/wvd-windows-10-multi-session/)
WVDはマルチセッションを使うことでコストを抑えることができますが、管理者権限がないためにデスクトップ環境をカスタマイズできなかったり、マルチユーザーを想定していないアプリケーションを動かすことができません。利用用途に応じて占有型を選ぶ必要がありますので、特徴をこのリンク先で確認するとよいでしょう。
- [30% ディスカウント](https://azure.microsoft.com/ja-jp/pricing/offers/windows-virtual-desktop-offer/)
技術的な話ではないですが、2021/6/30まで、マイクロソフトはDシリーズとBsシリーズのVM利用料を30%ディスカウントしています。適格な利用者にはポータルに表示が出ますので、よいタイミングでオンにするとよいでしょう。

## ② アクセスログ管理
それぞれのサービスが出すログは、Azure Monitor (Log Analytics)というサービスに集中して格納されます。
![ref3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/684720/c31ce6d1-4a89-df30-5169-ad1ab151079d.png)
ここでは、Windows Virtual Desktop (WVD)の管理プレーンから、だれがいつログインしたのかなどのログや、ホストプール内のセッションホストのログをまとめ、それを管理者が見られるようにします。

- [WVDの監視機能であるAzure Monitorを使ってみる](https://qiita.com/takeokams/items/8cfb1dba57f7afe9653c)

	何ができるかをここで確認でき、かつ設定情報も記載しています。

ここで設定したものは、この後、ファイアウォールでネットワークのログを取ることにも活用できます。

## ③ ネットワークパケットフィルター
仮想デスクトップからのインターネットアクセスは、すべてログを取ることにして、後からアクセス履歴を調べられるようにしておきます。また、アクセス先はホワイトリスト方式、つまり利用可能なサイトを開けていくという方針にしています。これにより、トロイの木馬ウイルスのようなものを踏んでしまっても、不用意にネットワーク接続はできなくなり、かつOSにユーザー権限しか与えられないマルチセッションでは、リスクを最小化できます。
ホワイトリスト以外のインターネットサイトにアクセスする必要がある場合は、WVDのクライアント側でアクセスしてもらう、という「分離」をしておくのも一つの利用形態になります。
![ref4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/684720/25894df1-494a-f7be-39e4-432d77d62f8d.png)

- [WVD用にAzure Firewallを設定し、インターネットアクセスを制御](https://qiita.com/takeokams/items/a69034408961b1954c54)

	この後の、オンプレミス環境へのフィルター有り無しについては別途検討する必要があります。

## ④ 多要素認証
昨今の状況を鑑み、本番環境では、ユーザー名とパスワードだけでの認証ではなく、多要素認証をセットアップすることが望ましいです。
![ref5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/684720/9d20f9dd-7365-2a2e-9627-0ff6ca6d88fa.png)

多要素認証をするにあたって、個別の条件をつけたくなるシーンがあるかと思いますが、その際には[Azure AD Premium](https://azure.microsoft.com/ja-jp/pricing/details/active-directory/)が必要になります。

- [Windows Virtual Desktop 向け Azure 多要素認証の有効化](https://docs.microsoft.com/ja-jp/azure/virtual-desktop/set-up-mfa)

	公式ガイド
- [Windows Virtual Desktop で多要素認証を行う](https://cloudsteady.jp/post/7096/)
できること、注意事項のまとめ
- [Azure Multi-Factor Authentication (多要素認証) を試す！！](https://www.cloudou.net/azure-active-directory/mfa001/)
とりあえずシンプルに設定するならこれ。
- [条件付きアクセスでWVDへのアクセスする際にMFAを強制する](https://tsukatoh.hatenablog.com/entry/2020/08/18/184422)
条件付きアクセスの設定例を、とってもわかりやすく解説

## ⑤ オンプレとのVPN
テレワークの方にオンプレミスにあるシステムを利用してもらうために、Azureと接続します。これには様々な形態がありますし、工事を伴うこともあります。一時的なものなのか、恒常的なのか、帯域はどれくらい必要なのか、ルーティングをどうするか、どのサービスを通すかなど、考えるべきことが多くあります。安易につないでしまい、既存と同じIPアドレスレンジを広報してしまうなどないよう、十分注意しながら進める必要があります。
![ref6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/684720/7d4577cc-3ead-2199-be14-b8c6d827300d.png)

- ExpressRoute (専用線)

	できることなら業務の本番利用では、回線品質の安定化のため、専用線のExpressRouteを利用することが望ましいです。[接続プロバイダー](https://docs.microsoft.com/ja-jp/azure/expressroute/expressroute-locations-providers)も公開されています。

- [サイト間(S2S)ソフトウェアVPN](https://docs.microsoft.com/ja-jp/azure/vpn-gateway/tutorial-site-to-site-portal)
 - [オープンソースのlibreswanを使いS2S VPNでつないでみた例](https://qiita.com/takeokams/items/098fd43b2fe8f693eaed)
 - [Windows Server RRASを使いS2S VPNでつないでみた例](https://qiita.com/takeokams/items/4c5411290c55752e2670)

		Oracle Cloud Infrastructure (OCI)をオンプレミスに見立てて、サイト間VPNを構築した例です。

- その他
オンプレミス側に設置するのが難しい場合、もしAWS等に対して既存の回線が出ていれば、そこでトランジットルーティングしてAzureにつなぎこむということも検討できるかもしれません。その場合、帯域やレイテンシーにより注意が必要になると思われます。

# その他情報
## シングルサインオン
利用者の利便性を上げるため、認証を1回で済ませる、いわゆるシングルサインオンを実装したくなるかもしれません。
マイクロソフトのブログに[WVDにおける認証の解説](https://www.microsoft.com/ja-jp/events/azurebase/blog/wvd-authentication/)と、そこから[シングルサインオンの構成についての解説記事リンク](https://cloud.nissho-ele.co.jp/vdiblog/wvd-sso/)があります。

## 様々なソリューション
テレワークを実現するためのソリューションは様々ありますので、要件見合いで適材適所に使うのがよいでしょう。マイクロソフトに限って言えば、テレワークで利用するデバイスが正しい状態であるように管理するMicrosoft IntuneだったりMicrosoft Defenderだったり、不正なユーザー操作を検知するCloud App Securityだったり、全体的な管理を統一して見られるSentinelなどがあります。こういったソリューションを見ることで、何がテレワークに必要なのかを考えるきっかけになるかもしれません。

## チームコラボレーション
WVDにより、職場でしかできなかった作業が在宅でもできるようになったりするのですが、孤立化する課題を抱えていらっしゃる方も見かけます。これに対しては、例えばMicrosoft Teamsの最適化対応がWVDに対してされていたりするのでこれを活用してもよいですし、WVDとはまた別のプラットフォーム(スマホアプリとか)を組み合わせてもよいかと思います。テレビ会議の必要性はわかりやすいですが、インフォーマルなコミュニケーションの重要性が再認識されてきていますので、チャットなどのシステムも検討するのがよいかと、実体験から思います。