Dear Great Hackers

  1. タイアップ
  1. トピックス

【Windows Virtual Desktopのディープな技術情報を解説】#3 多要素認証と条件付きアクセスでセキュリティを強化

Windows Virtual Desktop(以下、WVD)はAzureインフラストラクチャからプラットフォームサービス、ユーザーIDのように様々な技術を包含するため、複数の分野を考慮したセキュリティ対策を講じる必要があります。

WVDは世界中のどのデバイスからもアクセス可能であり、誰でもユーザーであると主張できるため、ユーザーが本人であることを確認し、IDが侵害されていないことを証明する必要もがあります。また、ユーザーがどのようなネットワークに接続しているかやどこにいるなどによって、異なる条件を設定したい場合もあるでしょう。

WVDのユーザーIDセキュリティ保護の方法で重要な方法である「多要素認証」と「条件付きアクセス」の2点を中心に、WVDにおけるユーザーIDセキュリティ保護の方法についてこの動画では掘り下げています。

※この記事は、Microsoftが提供するWVD Identity Security | Windows Virtual Desktop – #11を要約したものです。

▼「Windows Virtual Desktopのディープな技術情報を解説」記事一覧
https://zine.qiita.com/tag/wvd/


MFAと条件付きアクセスの前提条件

ユーザーIDもセキュリティで保護し、WVDへのログインが試みられた際に本人確認を行い、アクセス権を付与する必要があります。
特に多要素認証と条件付きアクセスの2点について、今回掘り下げて行きます。

まず、Azure の製品ドキュメント内の リモート ワーカーをセキュリティで保護するを見てみましょう。

MFAは、Multi-Factor Authentication。基本的には2要素認証でユーザー名とパスワードによるユーザーIDとその他の種類の認証を組み合わせたものであり、ログイン時にそのユーザーが本人であることを証明する1つの手段です。

現在Azureで多要素認証を行う最も一般的な方法は、スマートフォンでAuthenticatorアプリをインストールするか、テキストメッセージを受信することですが、他にもMFAを実装する方法がいくつかあります。
AzureポータルのActive Directory の[Users]からMFAを有効したいユーザーを選択して [Enable] をクリックするだけでMFAを有効にすることができますが、MFAがその力を本当に発揮するのはそれを条件付きアクセスと組み合わせるときです。

社内ネットワークからログインしているときはMFAなどのルールは必要ないかもしれませんが、外部のインターネット上でログインする際は本人確認を厳格にする必要があるため、ログイン時にMFAの実行を必須にするルールとポリシーを条件付きアクセスとして設定することを推奨します。

条件付きアクセスの使用にはAzure Active DirectoryP1またはP2ライセンスが必要になります。また、MFAは無料で行えますが、条件付きアクセスと共に高度なMFA機能を使用するにはP1、P2ライセンスが必要となります。
詳細はこちらの前提条件に記載されています。

MFAを設定した際のログイン方法と、MFAサービスにエラーが生じた場合への備え

ユーザーにMFAと条件付きアクセスを設定したと仮定してみましょう。その状態でMFAサービスでエラーが生じ多要素認証が実行できなかった場合、全てのユーザーがWVDを使用できなくなり、Azureからもロックアウトされるはずです。

それを避けるためのベストプラクティスは、MFA、条件付きアクセス、Privileged Identity Management (PIM)などの機能を有効にしていないAzureクラウドアカウントを作成することです。そのアカウントはバックドアアカウントと見なされ、何か障害が発生したときにシステムに戻ってユーザーのロックを解除し、作業を続行できるようにする手段となります。

その設定を行った場合は、パスワードの管理が属人化しないようにすることも大切です。パスワードは複数の人に分散し、自分だけでログインできないようにするか、またはパスワードボールトに保存しロック解除プロセスを経て資格情報にアクセスできるようにするべきです。

新規ユーザーを追加し、このユーザーに「BackDoor」という名前を付け、[First name] と [Last name] に分けて記入しパスワードを設定します。 グループは何も選択せず、 役割は [User] から [Global administrator] に変更します。[Block sign in] オプションはもちろん [No] にし、このアカウントが使用される場所を特定の国に固定します。そして [Create] をクリックすると、新しい [BackDoor] 管理者アカウントが作成されたことがわかります。

このユーザーによってMFAに何か問題が発生した場合でも、ユーザーを再度有効にできる手段があることを確認してみましょう。何人かのユーザーを選択して [Enable] をクリックし、[enable multi-factor auth] をクリックします。すると選択下ユーザーが有効になっているか確認出来ます。

この上部の検索フィルターを使って [Any] から [Enabled] に変更すると、現在有効にされているユーザーのみが表示されます。これを [Enforced] に切り替えるとまだ誰もいないことがわかります。[Enforced] はMFAを強制していることを意味し、[Enabled] はMFAをオンにしているが構成していないことを意味しています。

MFAを設定したユーザーがWebポータルやWVDクライアントなどにサインインする際も、通常通りユーザー名とパスワードを入力して [Sign in] をクリックします。 [More information required] という画面が表示されたら [Next] をクリックします。

ユーザーは自分の認証方法を選択できます。電話番号を選ぶとその番号にテキストメッセージが送信され、モバイルアプリを選ぶとMicrosoft Authenticatorが必要になります。
今回は電話番号を選択し [Next] をクリックします。すると私の電話番号にテキストが送信されるので、認証コードを入力して [Verify] をクリックすれば完了です。

追加のオプションとして、このリンクからアプリケーションのパスワードを設定すると、Outlookやその他のOffice製品からサインインするときこのチャレンジ認証を行う必要がなくなりますが、今回はただ [Done] をクリックします。

MFAを有効にしているので、クライアントアプリケーションを開き、ログインすると、資格情報を再入力するよう求められます。コードを入力して [Verify] をクリックすると、残りのサインインプロセスが通常通り完了します。

少しレベルアップして、これに条件付きアクセスを追加しましょう。

条件付きアクセスを無料で試し、ユーザーにライセンスを割り当てる

条件付きアクセスはAzure ADの高度な機能であるためライセンスを必要としますが、無料トライアル版もあります。Azureポータルの左側のメニューバーからライセンスの管理画面を開き、 [Get a free trial] をクリックすることで無料トライアル版を入手可能です。

無料トライアル版はPremium P2とEnterprise Mobilityの2種類あります。
Premium P2でも利用可能なすべての機能が提供されており、Enterprise MobilityはP2に加えてOffice 365の機能も提供されます。[Free trial] を開いて [Activate] をクリックします。

ライセンスが有効になった状態でライセンスの管理画面から許可された機能を確認すると、有効になっている全ての機能が表示されており、 [Learn more] リンクからそれぞれの機能の詳細を知ることが出来ます。

[All products] に移動すると、EMSライセンスが250人のユーザーに使用できることがわかります。 [Assign] をクリックして、ユーザーを追加し [Select] をクリックし、次にユーザーの割り当てオプションを選択します。

その際に、ユーザー設定で利用場所が指定されていないとライセンスが割り当てられないので注意が必要です。[Usage location] から、上部の [Edit] から利用場所を選択し、 [Save] をクリックすることで利用場所を設定出来ます。

しかし、この作業をユーザー一人ひとり対して手動で行いたくはないでしょう。PowerShellを使用すれば、もっと簡単に割り当てが行えます。

PowerShellを使用しライセンスを割り当てる基本的な方法は2つあります。1つ目はAzure AD Connectを介して、同期ルールを使用することです。つまり、スクリプトを書き出す必要があります。

この方法が難しい場合、もっと簡単な方法があります。

Azure ADにログインし、このようなコマンド実行します。
ここでは、「Set-AzureADUser」で引き渡すオブジェクトIDのUPNを「Thor」、使用場所は「US」に設定して実行。続けて「get-AzureADUser」を実行して、すべてのプロパティを選択します。ここで [UsageLocation] は [US] に設定されていることがわかります。

次のコマンドを実行すると、私の環境内の名前に「Microsoft」を含まないすべてのユーザーが表示されます。いくつかのアカウントはmicrosoft.comアカウント上に存在しますが、それらは必要ないためです。ここにすべてのUPNが表示され問題ないようですので、次の部分である Foreach ループを実行します。これで終了です。

Azureポータルのメイン画面に戻り、任意のユーザーのページを開いて少し下にスクロールすると [Usage Location] は [United States] になっています。これでライセンスを正常に割り当てることができたので、[Save] をクリックして完了です。

条件付きアクセスのポリシーを設定する

Azureポータルのメニューから[Security] を選択し、さらに [Named Locations] に移動します。
ここで [Azure] に移動すると、私のAzureプライベート仮想ネットワーク用のIPアドレスの範囲が表示されており、それらは信頼された場所としてマークされていることがわかります。
信頼できる場所は、IPや国ごとに行うこともできますが、その他のグローバルルールを追加することもできます。

例えば、グローバルオフィスとして5つの国を選択して [Create] してみます。しかし、1つの国のあらゆるIPを信頼することは到底できないため、信頼された場所としてマークされていません。

新しいポリシーを追加し、このポリシーにWVDという名前を付けてユーザーを割り当てます。[Select users and groups] から、今回は4人のユーザーを選択して [Select] をクリックし、[Exclude] を追加します。[Exclude] でも [Users and groups] を選択し、ここではAdminを選択して[Done] をクリックします。

次にクラウドアプリを選択する必要があります。 [Select apps] を選択し、「Windows Virtual Desktop」と入力するといくつかのオプションが表示されます。複数の選択肢が存在しているのは、非ARMバージョンとARMバージョンの両方が利用可能であるためです。

新しいARM ポータルと2020年の春のアップデートと関連があるものは、「9cd」で始まり「d07」で終わります。[Select] をクリックし [Done] をクリックします。

さらに希望する場合はいくつかの条件を選択し、多数の異なる要素と関連付けることが出来ます。「サインインのリスク」、「ユーザーはどんなデバイスからサインインするか」、「ユーザーのロケーション」、「クライアントアプリ」、「デバイスの状態」です。

[Locations] で [Yes] を選択して、私の場所を選択すると名前の付いた場所が表示されているのがわかるでしょう。このルールに対して [Azure] と [OnPrem] のみを選択して、[Select] 、 [Done] を クリックします。

次に[Access controls]でアクセス権を付与して多要素認証を要求するようにします。

[Select] をクリックして [Session] で [Sign-in frequency] を選択して、単位を選択する必要があり、単位は [Hours] か [Days] のどちらかになります。なお、このポリシーを設定できる最小の時間は1時間です。
この期間を日単位に延長することもできますし、場所、ポリシー、ユーザーがサインインする場所に応じて、厳格に設定することも、あるいはMFAをまったく要求しないようにすることもできます。

この例では、1時間に設定して [Select] をクリックします。

次にポリシーを有効にする機能について説明します。単に学習ツールとして使用することにする場合は[Report only] を選択することもできますし、このポリシーを有効にしてこれらの設定を強制することも、または何かがうまく機能しなかった場合にポリシーをオフにしたり、ポリシーの使用を完全に中止することもできます。ポリシーをオンにし [Create] をクリックします。

この設定は他の場所からも行うことが出来ます。

メイン画面からエンタープライズアプリケーションに移動し、下にスクロールするとWVDがあります。先ほど非ARMで登録を行ったクライアントを使ってみましょう。
このクライアントを選択して [Conditional Access] をクリックすると、基本的に同じ場所に移動します。ポリシーを設定し特定のユーザーとグループを選択します。ここではAzure ADグループを選択します。
既にアプリケーションを選択しているので、続けて条件を設定できます。場所に対して今回は [All trusted locations] を選択します。 [Grant] の下で多要素認証を使用するよう設定し、セッションの頻度は今回は1日に設定します。 そしてこのポリシーは [Report only] に設定します。

Azure ADのメインページから [Security]と[Conditional Access]を確認すると、両方のポリシーと現在のステータスが表示されています。これでポリシーの構成が完了したので自分のアプリに戻って自分自身の登録を解除します。

登録解除をすると、再度ログインするよう求められるようになるはずです。[Subscribe] をクリックするとユーザーIDの入力を求められます。資格情報を入力して[Next] をクリックし、パスワードを入力し [Sign in] をします。 MFAを要求されるので入力して [Verify] をクリックするとサインイン出来ます。そしてすぐにまた登録解除します。
それからまた再度登録をする際はMFAの資格情報を何も入力する必要はありません。なぜなら既にサインインしており、有効期限が切れるまでに1時間あるためです。

しかし、プライベートブラウザに切り替えて同じことを行うと、今度は資格情報を入力しなければならずMFAのチャレンジを実行しなければなりません。 過去1時間以内にこれらの資格情報を入力しているとはいえ、異なるデバイスと見なされ、まだ信頼されていないからです。

それでは条件付きアクセスのポリシーに戻りましょう。

さらに新しいポリシーを作成し、このポリシーに新しいプレビューエクスペリエンスを有効にします。「untrusted-location--WVD」という名前を付け、ユーザーを [All users] に設定します。そして、 万が一の場合に備えてWVD管理者に1つ例外を追加します。
クライアントアプリにも同じ選択を行いましたが、今回は仮想デスクトップ アプリすべてを選択して [Select] をクリックします。 条件については、選択された場所から [untrusted locations] を選択して、[Select] をクリックします。 そして [Grant] の下でアクセスをブロックします。ここではブロックしているためサインインの頻度を選択する必要はありません。
このポリシーを有効にし [Create] をクリックします。これで信頼されない場所からサインインしようとするユーザーすべてがブロックされるようになりました。

信頼できる場所として設定されていないところからサインインを試行すると、サインインできない旨のエラーメッセージが表示されます。トラブルシューティングの詳細があるため、エラーメッセージが表示された際は、この情報をIT担当者に伝えれば解決してくれるでしょう。

Azureポータルに戻って [Monitoring] セクションの[Diagnostic settings] を選択し、ログ分析、監視できるようにします。 まだAzure ADでこの手順を実行していない場合は必ず行うようにしてください。

[Sign in] に移動するとこれまでに生じたログイン情報すべてが表示され、ログインが成功したか失敗したか場所はどこかなどを確認できます。
各ユーザーをクリックすると、それぞれの詳細情報を表示できます。 [Location] には同じパブリックIPアドレスが表示されており、条件付きアクセスルールの下のレポートのみのルールには [non-ARM--WVD] があり、条件付きアクセスのルールには [wvd] と [untrusted locations] があります。
このログインについての特定の詳細情報を表示するには、[Authentication Details] を見ます。すると条件付きアクセスポリシーのためにアクセスがブロックされたというメッセージが表示されています。

今回の動画でMFAと条件付きアクセスによってWVD環境内のユーザーをどのように保護できるかということをご理解いただけたのではないかと思います。

【新規ユーザーさま向け】Windows Virtual Desktop
30%オフキャンペーン実施中!

はじめてWindows Virtual Desktop(ネイティブ版)をご利用いただいた方を対象に、最大90日間コストを30%オフでご利用いただけるキャンペーンを実施中です。
この機会にぜひご利用ください。

対象期間 : 2021年6月30日まで

詳細はこちら

関連記事