LoginSignup
5
3

More than 1 year has passed since last update.

Azure Virtual Desktop (AVD)のリファレンスアーキテクチャとARMテンプレート

Last updated at Posted at 2021-03-13

GitHubに"Azure Virtual Desktop Reference Architecture"を公開したので、その使い方です。GitHubの方がオリジナルで、こちらの記事はサブテキストです。
なお、Azure Virtual Desktopの旧称であるWindows Virtual Desktop (WVD)も使われていますが、機能に差異はないため、単純にAVDに読み替えてください。

リファレンスアーキテクチャ / 構成図

wvd-ra.png

特徴

  • ネットワークはハブ & スポーク アーキテクチャ
  • インターネットに直接VMを公開しない; 管理、緊急時にはBastionを利用
  • インターネットアクセスはオンプレミスに引き込まず、Azure上でブレークアウトさせる; Azure Firewall Premiumを使って柔軟で詳細なアクセスコントロール
  • 高可用性を考慮; Availability Zone、マネージドサービスを利用
  • ログの集中管理; Azure Monitorブックで可視化

これはなに?

  • 本番想定の構成でAzure上に環境を作るもの
  • ここから個別の本番環境に発展させられる
  • Preview機能を柔軟に取り入れられ、本番想定環境でその有効性を確認できる
  • ARMテンプレート、PowerShellスクリプトがあるので、サクッと使える、何度も使える

Azureに慣れておられる方なら、クイックスタートテンプレートのような位置づけでとらえていただけるとわかりやすいです。
他の形のアーキテクチャデザインもありますが、典型的な一つのデザインです。

GitHubにあるもの

"Azure Virtual Desktop Reference Architecture"には、アーキテクチャにあるコンポーネントをデプロイするための、ARMテンプレートやPowerShellスクリプト、また必要に応じてGUI操作の手順が書かれてあります。
本番環境では、ADは既存のオンプレミスと接続したい、とか、ファイルストレージはパフォーマンスの観点からAzure NetApp Filesを利用したい、などあると思いますので、大分類でパートを分けてデプロイできるようにしてあります。
逆にないものとして、AVDのホストプールはこのGitHubでは公開していません。これは、マルチセッション、シングルセッション、VMの中のアプリ構成など利用者環境によってさまざまなためです。すぐ使いたければ、Azureのギャラリーイメージを使えば数分で環境はできてしまいます。

デプロイの流れ

3つのパートに分けていて、それぞれのパートを実施することで、リファレンスアーキテクチャに近づけていきます。

  1. ネットワークインフラ
  2. Active Directory
  3. FSLogixのプロファイルを置くストレージ

ここから、各パートの解説です。

ネットワークインフラ

wvd-ra-network.png
ハブ アンド スポーク ネットワーク トポロジでネットワークインフラを構成します。
オンプレミスとの接続は、S2SのVPNやExpressRouteなどの形態もあれば、それぞれ接続情報が違いますので、個別の設定が必要です。S2Sの仮想ネットワークゲートウェイをテンプレート内でデプロイすることも可能ですが、これはサンプルです。
次のパートのActive Directoryのテンプレートを使う場合、Availability Zoneに依存しているため、西日本ではなく東日本でデプロイする必要があります。
network-1.png
Windows VM Count1にすることをお勧めします。これを指定することでスポークネットワークにWindows VMを1台作成するのですが、このVMをネットワークの疎通テストなどに使えるためです。このWindowsのユーザーが、Admin User NameAdmin Passwordです。これ以外にこのユーザー情報は使われません。
赤囲み以外も変更することが可能です。オンプレミスと接続する場合は、オンプレミスのネットワークレンジと重ならないように変更してください。

Active Directory

wvd-ra-ad.png
ハブネットワークの中に、Active Directoryを立ち上げて、AVDホストの認証をここで行います。
GitHubで公開しているARMテンプレートは、ドメインコントローラが構成された2台のVMをAvailability Zoneで分けて展開します。
activedirectory-1.png
先ほどのネットワークインフラの作成でネットワークレンジを変更した場合は、赤囲み外のIPアドレスも変更する必要があります。
Ip Addressに2つIPアドレスがありますが、前者はPDC、後者はBDCです。

追加手順

ARMテンプレートでの展開が終わったら、以下の作業を行います。

Azure AD Connect

PDCにBastion経由で接続します。
ad-connect-1.png
デスクトップにAzure AD Connectのインストーラーのアイコンがあるので、ここから起動し、ウィザードに従って、express settingsで設定します。なお、TLS 1.2の指示が出る場合は、画面の指示に従ってDocsを参照し、TLS 1.2を有効にしてから再度実行します。
ad-connect-2.png

DNS

ADDSで名前解決できるように、ネットワークインフラを設定します。

  • ハブネットワーク
    dns-1.png
    ここでは、PDC, BDCのIPアドレスを指定します。

  • ファイアウォールポリシー
    dns-2.png
    ここでは、PDC, BDCのIPアドレスを指定するとともに、ファイアウォール自身がDNSのプロキシになるように設定します。

  • スポークネットワーク
    dns-3.png
    ファイアウォールのプライベートIPアドレスを指定して、DNSの名前解決をファイアウォールに向けます。
    スポークネットワークは2つ作っていますので、両方に設定します。

TLS Inspectionのための証明書

ネットワークインフラのARMテンプレートでは仮の証明書が設定されているので、Active Directory Certificate Services(ADCS)のEnterprise CAに署名された証明書を、Azure Firewall Premiumにセットします。
ADCSはPDCにインストールされていて、Enterprise CAが構築されています。このため、Enterprise CAの証明書は、ドメイン参加したWindowsクライアントには自動的に信頼された証明機関として配布されます。

  • キーコンテナ (Key Vault)へのアクセス権設定
    cert-1.png
    cert-2.png
    cert-3.png
    cert-4.png
    cert-5.png

  • 証明書リクエストの作成
    cert-6.png
    cert-7.png
    証明書の名前と件名(Subject Name, Common Name)は、組織で適当なものを設定します。
    cert-8.png
    作ったものをクリックして開きます。
    cert-9.png
    cert-10.png

  • Enterprise Root CAで署名し証明書を作成
    PDCのVM内で操作します。
    cert-11.png
    cert-12.png
    IEからhttp://localhost/certsrvに接続します。
    cert-13.png
    cert-14.png
    cert-15.png
    ダウンロードしてある証明書リクエスト(CSRファイル)をメモ帳で開き、その内容をコピペし、発行する証明書タイプを指定してから、Submitして署名を行います。
    cert-16.png
    cert-17.png

  • 署名された証明書の登録
    cert-18.png

  • ファイアウォールポリシーの証明書の入れ替え
    cert-19.png

FSLogixのプロファイルを置くストレージ

wvd-ra-storage.png
上のダイアグラムで、一番右にあるものです。
ユーザー視点でAVDで利用するVMが接続するたびに切り替わっても、同じ設定のWindowsが使えるようにするため、プロファイルをVMから切り離して置く場所になります。FSLogixの仕組みを使います。これにはBLOBストレージなども使えますが、パフォーマンス上の観点から、Azure Files以上のものが推奨されます。
複数のユーザーが同時にログインするような環境ではアクセスが集中します。これをログインストームと呼ぶのですが、このような環境ではユーザーの認証が終わってからデスクトップが開くまでに時間がかかることがあり、Azure FilesからAzure NetApp Filesに切り替えたり、ストレージを分散したりするのが一般的です。進め方としては、このアーキテクチャのまま新しいストレージを横付けし、プロファイルへのUNCパスを変更してパフォーマンスの差分計測をするのがよいと思います。
なお、ログインストームによるパフォーマンス影響は、このストレージだけでなく、VMやマルチセッションであれば集約率にも依存していますので、docsのガイドも設計時に参考にできます。

storage-1.png
Storage Account Nameには、Azure全体の中でユニーク(他で使われていない)なものを指定する必要があります。ストレージアカウント作成のブレードを出して事前に確認しておくのがおすすめです。
storage-2.png
※ このブレードでは利用できるかどうか確認するだけです。作成はARMテンプレートで行います。

追加設定

Microsoft Cloud Workshop: エンタープライズでの Windows Virtual Desktop の実装」をベースに設定していきます。
GitHubの説明では、このワークショップの記事にある内容をPowerShellスクリプトにしてあるので、PDCのVM内でPowerShell ISEを管理者モードで開き、そこにコピペして、必要な変数の値を変更して実行すれば問題ないでしょう。

ストレージアカウントへのアクセス設定

最後の手順に、ストレージアカウントへのアクセス設定がありますので、画面を掲載しておきます。
storage-3.png
スポークネットワークにあるホストからのパケットは、ファイアウォールにルーティングされる設定がされているため、ルールがなければドロップされますが、これを設定することでストレージアカウントに直接つながりルールを追加する必要がありません。また、他のネットワークからは疎通しなくなるので、セキュリティも向上します。ただし、Azure Portalからブラウズしてフォルダの中を見るようなこともできなくなりますので留意しておく必要があります。
なお、プロファイルのVHDを消したい、というようなときには、アクセス可能なネットワーク内のVMから
net use z: \\<storage-account-name>.file.core.windows.net\<share-name> <storage-account-key> /user:Azure\<storage-account-name>
というようなコマンドを発行して特権ユーザーでアクセスすることが可能です。ここで、最初のネットワークインフラのデプロイ時にWindows VMを一つ作っておくと役に立ちます。

使い方

FSLogixの設定

イメージの中で設定してしまうこともできますし、グループポリシーで設定することもできます。ここではグループポリシーの設定方法を記載します。
まず、ここにあるFSLogixのパッケージファイルをPDC内にダウンロードします。
ダウンロードしたZipファイルを展開したら、下記のファイルをコピーします。

ファイル コピー先
fslogix.admx C:\Windows\PolicyDefinitions
fslogix.adml C:\Windows\PolicyDefinitions\en-US

グループポリシーで設定できるようになります。
fslogix-1.png

Setting Value
Enabled On
Delete local profile when FSLogix Profile should apply On
VHD Location <ファイルシェアへのパス>

ファイルシェアへのパスは
\\<storage_account_name>.file.core.windows.net\avdfileshare\Profiles
となります。

ユーザー作成

Active Directoryにユーザーを作成して、AVD_Usersグループに登録することで、FSLogixのプロファイル置き場(ファイル共有)を利用できるようになっています。
user-1.png
user-2.png

AVD用イメージ

シングルセッション/マルチセッションで利用できるOSイメージが異なります。
特徴については、Azure Baseのブログ「Windows 10 マルチセッション版の利用上の注意点」が参考になります。
また、アプリケーションも、Microsoft 365 Apps等も入れるなど、利用環境/保有ライセンスによって個別に手配します。
一般的なWindows 10マルチセッションとMicrosoft 365 Appsを入れるイメージについては、別記事の「Azure Virtual Desktopで使う日本語UIのWindows 10 + Officeのマスターイメージを作る」を公開しています。

ホストプールの作成

AVDのホストプールの作成のポイントは、ネットワークはスポークネットワークを指定すること、ネットワークセキュリティグループはすでにスポークネットワークのサブネットに割当たっているので、追加での設定は不要です。
host-1.png

ユーザーの割り当て

AVDのアプリケーショングループにAVD_Usersグループを割り当てると、このグループに所属しているユーザーが、当該のAVDのアプリケーション(デスクトップを含む)にアクセスできるようになります。
user-3.png
実環境ではアプリケーションやデスクトップのタイプ、ロケーションなどによってグループを分けて制御することになると思います。

監視/ログ設定

AVDの利用状況確認はAzure Monitorのブックを活用することができますが、設定が必要です。
別記事の「WVDの監視機能であるAzure Monitorを使ってみる」が参考になると思います。
ファイアウォールのログはARMテンプレートで設定されています。
Log Analyticsのクエリで見ることもできますし、Azure MonitorのブックもARMテンプレートでデプロイされていますので、これを開いて確認することもできます。
monitor-1.png

ファイアウォールについては、別記事「サクッと検証用Azure Firewall Premiumを構築」を公開しています。

ファイアウォールのルール

このARMテンプレートでは、AVDの基盤に関するルールは設定されているのですが、それ以外のインターネットワークアクセスのルールは定義していないためアクセスできません。
afw-1.png
例えばTeamsを起動させる場合は、ファイアウォールポリシーのアプリケーションルールに、Webカテゴリで「コンピュータとテクノロジ」を追加できます。
afw-2.png
afw-3.png
※ 2021年7月25日現在、Teamsを通すには*teams.microsoft.comをルールに追加することが必要になりました。

通過させるルールの作成はログを見ながらになると思いますが、別記事「サクッと検証用Azure Firewall Premiumを構築」が参考になります。

参考情報

5
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
3