Azure コラム 第6回 「Azure Virtual Desktop システム構成 Vol.2」

Microsoft

2021.09.13

第6回 中級編「Azure Virtual Desktop システム構成 Vol.2」です。今回は当担当の開発環境を例にネットワーク構成についての話題をお届けしたいと思います。

ネットワーク構成

まず概要図です。

Azure Virtual Desktop ネットワーク構成

以降で各ネットワークの詳細説明を記載します。

1. AVDネットワーク

Azure Virtual Desktop ネットワーク構成

セッションホスト(AVD VM)を配置するネットワークです。Azure FilesとAzure Monitorのプライベートエンドポイントもここに置いています。
Azure FirewallのソースIPによるフィルター制御を考慮すると、セッションホストのサブネットは用途別(組織やロールなど)に分けておく形が良いと思います。

2. Azure AD DSネットワーク

セッションホストとAzure Filesが使用するAzure AD DSの配置先のネットワークです(Azure AD DSはマネージドですが仮想ネットワーク必須のサービスです)。
また、Azure AD DSのオペレーション(グループポリシーやDNSの設定)には管理ツールが必要ですので、インストール先となる管理VMも配置します。

3. ハブネットワーク

この環境ではネットワーク間のルーティングとアクセス制御のためにハブネットワークを設置しています(いわゆるハブスポークネットワークです)。

  • Azure Firewall:仮想ネットワーク ⇔ 仮想ネットワーク / 仮想ネットワーク ⇒ インターネットの接続
    ➢ AVDネットワークとAzure AD DSネットワークの通信もハブネットワークを通ります
  • VPN Gateway:仮想ネットワーク ⇔オンプレミスの接続

オンプレミスとの接続がある場合は、当初AVD限定だとしてもハブスポークネットワークを構成しておくことをお勧めします。



4. インフラネットワーク

アカウント同期用のAzure AD Connect(AADC)と出先機関となるドメインコントローラ(ADDC)の配置先です。
こちらはネットワーク的にはオンプレミスに置くことも出来ますが、VPN(もしくはExpressRoute)で障害が発生した場合でも継続動作させるためにAzureにも配置する構成としています。
ただ、この環境の歴史もあってインフラネットワークとして独立していますが、AVDのみの用途であればAzure AD DSネットワークに併置しても良いかなと思います。

5. オンプレミスネットワーク

ドメインコントローラおよびファイルサーバがオンプレミスネットワークに配置されています。あとセキュリティが厳しいところだと認証プロキシとかここに置かれる感じでしょうか。

周辺構成

  • ピアリング / VPNゲートウェイ
    すべてのネットワークはピアリング or VPNゲートウェイでハブネットワークのみと接続を行い相互接続は行いません。

    仮想ネットワーク間はAzure FirewallがIP転送を仲介し、仮想ネットワーク ⇔ オンプレミスネットワーク間はスポーク側のピアリング設定の [リモート仮想ネットワークのゲートウェイまたはルートサーバーを使用する] を有効化してハブネットワークのVPNゲートウェイを共用します。


  • ユーザー定義ルート
    VMが所属するサブネット(AVD / Test / Infra / VM)にユーザー定義ルートを割り当て、
    ・ Default(0.0.0.0/0):[仮想アプライアンス] で [AzureFirewallのIPアドレス] とルート設定を行います。

    Azure AD DSのサブネットには ルート テーブルを使用する必要がある場合は、0.0.0.0 ルートに変更を加えないようにしてください。 と言う制約がありますのでDefault(0.0.0.0/0)は変更せず、
    ・ AVD-Vnet(xxx.xxx.xxx.xxx/xx):[仮想アプライアンス] で [AzureFirewallのIPアドレス]
    ・ Infra-Vnet(xxx.xxx.xxx.xxx/xx):[仮想アプライアンス] で [AzureFirewallのIPアドレス]
    と言う形で宛先となる仮想ネットワークごとにルート設定を行います。

    [Azure Active Directory Domain Services の仮想ネットワーク設計の考慮事項と構成オプション]
    https://docs.microsoft.com/ja-jp/azure/active-directory-domain-services/network-considerations#user-defined-routes

    オンプレミスへの接続が必要なネットワーク(この環境ではAVD / Test / Infra)では、ユーザー定義ルートの [ゲートウェイのルートを伝達する] を有効化してハブネットワークのVPNゲートウェイの設定が取得されるようにします。


  • ネットワークセキュリティグループ
    既定の設定では仮想ネットワーク間のトラフィックがAnyで許可ですので、セキュリティ強化を考慮してこの環境では必要な仮想ネットワークとのみ許可する設定を行っています。

    具体的には受信セキュリティ規則に既定のAllowVnetInBoundと同じFrom-ToでDenyの規則を追加し、そこにFrom-Toを限定したAllowの規則を上乗せする形となります。


  • DNS
    AVDおよびAzure AD DSネットワークのDNSにAzure AD DSのIPアドレスを指定します。

    またAzure AD DSの既定では他の仮想ネットワークやオンプレミスネットワークの名前解決が出来ませんので、フォワーダーにインフラネットワークのADDCを指定しています。フォワーダーの設定は管理VMのDNS管理ツールを使用して行います。

  • プライベートエンドポイント
    Azure FilesおよびAzure Monitorにプライベートエンドポイントを設定します。
    プライベートエンドポイントの名前解決はAzure AD DSのDNSにAレコードを登録して対応します(ここで使うのも管理VMのDNS管理ツールです)。

  • Azure Firewall
    まずハブネットワークに接続している仮想ネットワークに対して、ネットワークルールによる許可設定を行います。

    オンプレミスへは直接VPNゲートウェイにルーティングされAzure Firewallは通りませんので設定は不要です。

    次に本構成では検証の観点もありまして、インターネットへはAzure Firewallのアプリケーションルールにて必要な通信のみ通す形(ホワイトリスト)の制御を行っています。
    下記に本コラム執筆時点でのAVD動作(とおまけでMicrosoft Defender for Endpointのオンボーディング)を確認した設定を記載しますので参考にしてみて ください。


    [AVD]
    wvdportalstorageblob.blob.core.windows.net
    mrsglobalsteus2prod.blob.core.windows.net
    gcs.prod.monitoring.core.windows.net
    catalogartifact.azureedge.net
    production.diagnostics.monitoring.core.windows.net
    *xt.table.core.windows.net
    *xt.queue.core.windows.net
    *eh.servicebus.windows.net
    *xt.blob.core.windows.net

    [Microsoft Defender for Endpoint]
    login.live.com
    unitedstates.cp.wd.microsoft.com
    winatp-gw-eus.microsoft.com
    us-v20.events.data.microsoft.com

  • Azure Fires
    プライベートエンドポイントを付けた上で、ストレージアカウントのネットワークファイアウォールでアクセス元をAVDネットワークおよびAzure AD DS ネットワークに限定することでアクセス制御をかけています。

  • 条件付きアクセス
    AVDではAzure AD認証が行われますので、条件付きアクセスを適用することが可能です。
    この環境では多要素認証(MFA)のみ適用していますが、ネームドロケーションを使用したネットワーク制御を行うことも可能です。

  • VM Insights
    VM Insights(仮想マシンの分析情報)を有効化しています。VM Insightsはブロックされた通信がログに出力されるなどいろいろ便利な機能ですので、トラブルシューティングや運用改善のためにも有効化をお勧めします。

ここまで当担当の開発環境を例にご説明してきましたが実はこの環境には若干冗長な構成が含まれていまして、参考情報として連携方式別のサンプル構成(私の考える推奨構成)を掲載しておきます。

サンプル構成①(Active Directory 連携方式)

メリット:Azure AD DS ネットワークがなくなる分構成がシンプル
デメリット:なし(ネットワーク観点でのデメリットはないと思います、検証観点がなければ多分この構成を選んでいました)

Azure AD DS がいなくなるだけですね。ただこの構成ではAzure FilesのActive Directory連携設定にひと手間必要になります。(Azure AD DS連携だともうちょい楽です)

[概要 - SMB を使用した Azure ファイル共有へのオンプレミスの Active Directory Domain Services 認証]
https://docs.microsoft.com/ja-jp/azure/storage/files/storage-files-identity-auth-active-directory-enable

サンプル構成②(Azure AD DS連携方式)

メリット:VPN不要、Azure内にネットワークを閉じ込められるので費用面で若干有利
デメリット:VMへの接続にBastionを使用するためファイルのやり取りがちょっと面倒

当担当の開発環境ではAzure AD DSをAVDのサブスクリプションに入れていましたが、基本的にAzure AD DSは共有リソースとなりますので共有リソース側のサブスクリプションに寄せる形にしています。
またこの場合アカウント管理は基本的にAzure ADにて行う形になります。Azure AD DSでもアカウント管理を行うことは可能ですが、同期がAzure AD → Azure AD DSの一方向のみのため管理性が著しく悪化するのがその理由です。

サンプル構成③(Azure AD連携方式)

Windows 365 Cloud PCを使いましょう。

おわりに

Azureコラム第6回いかがでしたでしょうか、私的にも今回は結構語れたかなぁと言う感触です。
次回はDaaSにおいて悩ましいネタであるマスタ管理についてお届けしたいと思います。

  • 文章中の商品名、会社名、団体名は、各社の商標または登録商標です。

Azure コラム 第6回 「Azure Virtual Desktop システム構成 Vol.2」