昨今リモートワークツールとして仮想デスクトップソリューションに注目が集まっています。大手クラウドベンダー2社からもクラウドベースで仮想デスクトップを実現するためのサービスが提供されています。
Microsoft の Azure からは、Windows Virtual Desktop (WVD) が提供されています。マルチセッションに対応した Windows 10 OS が使えるという特徴があります。最近管理 GUI と VDI での Teams 通話最適化機能が正式リリースされたので非常に使い勝手が向上しています。
同様に AWS からは Workspaces が提供されています。AWS 自体あまり触れていないので詳細を語ることができないですが、かなり安価で簡単に仮想デスクトップ環境を構築できるとの触れ込みです。提供開始も WVD より前から開始しています。
今回は練習がてら AWS で Workspaces の環境を構築していきたいと思います。
Workspaces とは
AWS で提供される仮想デスクトップソリューションです。ユーザーに Windows と Linux のデスクトップを提供できます。クラウドベースなのでハードウェアの調達などをする必要なく迅速に拡張できます。
特徴
- OS を選択して仮想デスクトップを提供できる。
- 永続的なデスクトップ環境を提供できる。
- デスクトップ環境はカスタマイズ可能。
- マネージドのディレクトリサービスか、オンプレミスの AD を認証で利用可能。
- MFA 利用可能。
- 接続元の IP でアクセス制御可能。
構成
Workspaces の環境はユーザー管理の領域と AWS が管理する領域に別れます。
仮想デスクトップ環境を利用するためのゲートウェイや認証を受け付ける Web のエンドポイントは AWS が管理します。また、マネージドのディレクトリサービスを使うと認証用 AD の管理も AWS に任せることができます。
エンドユーザーが接続に利用するクライアントデバイスや、Workspaces のインスタンスを配置する VPC はユーザー管理の要素になります。自前の AD を認証に使う場合は、それらのインスタンスとネットワークの接続性も管理する必要があります。
事前準備
とりあえず利用を開始するだけであれば、AWS アカウントをセットアップするだけで大丈夫です。エンドユーザーに AWS アカウントを用意する必要はないですが、接続情報を送るためにメールアドレスが必要です。
- AWS アカウントのセットアップ
- エンドユーザーのメールアドレス
手順
VPC の作成
Workspaces インスタンスを配置する VPC を作成します。マネージドコンソールで「VPC」と検索し、VPC ダッシュボードを表示します。
メニューの[VPC]をクリックし、[VPC の作成]をクリックします。

VPC のパラメーターを入力していきます。入力したら[作成]をクリックします。
- [名前タグ]:SNY-LAB-Workspaces-VPC
- [IPv4 CIDR ブロック]:10.11.0.0/24
- [IPv6 CIDR ブロック]:[IPv6 CIDR ブロックなし]
- [テナンシー]:[デフォルト]

サブネットの作成
作成した VPC にサブネットを作っていきます。今回は3つのサブネットを作ります。NAT ゲートウェイを配置するパブリックサブネットを1つと、Workpcaresインスタンスを配置するプライベートサブネットを2つです。プライベートサブネットはアベイラビリティゾーンを分ける必要があります。
メニューから[サブネット]をクリックし、[サブネットの作成]をクリックします。

パブリックサブネットを作成します。パラメーターを入力したら[作成]をクリックします。
- [名前タグ]:SNY-LAB-Workspaces-public
- [VPC]:SNY-LAB-Workspaces-VPC
- [アベイラビリティゾーン]:ap-northeast-1a
- [IPv4 CIDR ブロック]:10.11.0.0/26

1つ目のプライベートサブネットを作成します。
- [名前タグ]:SNY-LAB-Workspaces-private-1
- [VPC]:SNY-LAB-Workspaces-VPC
- [アベイラビリティゾーン]:ap-northeast-1a
- [IPv4 CIDR ブロック]:10.11.0.64/26

2つ目のプライベートサブネットを作成します。1つ目のプライベートサブネットと異なるアベイラビリティゾーンを選択しておく必要があります。
- [名前タグ]:SNY-LAB-Workspaces-private-2
- [VPC]:SNY-LAB-Workspaces-VPC
- [アベイラビリティゾーン]:ap-northeast-1c
- [IPv4 CIDR ブロック]:10.11.0.128/26

インターネットゲートウェイの作成
メニューから[インターネットゲートウェイ]をクリックし、[インターネットゲートウェイの作成]をクリックします。

名前を入力して[インターネットゲートウェイの作成]をクリックします。
- [名前タグ]:SNY-LAB-Workspaces-IGW

作成が完了したら[アクション]から[VPC にアタッチ]をクリックします。


使用可能な VPC で作成した VPC(SNY-LAB-Workspaces-VPC)を選択し、[インターネットゲートウェイのアタッチ]をクリックします。

NAT ゲートウェイの作成
メニューから[NAT ゲートウェイ]をクリックし、[NAT ゲートウェイの作成]をクリックします。
- [サブネット]:SNY-LAB-Workspaces-public
- [Elastic IP 割り当て ID]:([新しい EIP の作成]をクリックして自動生成)
- [キー]
- [Name]:SNY-LAB-Workspaces-NGW

作成まで数分時間がかかるので待ちます。
ルートテーブルの作成
メニューから[ルートテーブル]をクリックして、[ルートテーブルの作成]をクリックします。

パブリックサブネット向けのルートテーブルを作成します。
- [名前タグ]:SNY-LAB-Workspaces-public-RTB
- [VPC]:SNY-LAB-Workspaces-VPC

作成したら[ルート]タブをクリックして[ルートの編集]をクリックします。

[ルートの追加]をクリックし、追加の経路情報を入力します。入力したら保存します。
- [送信先]:0.0.0.0/0
- [ターゲット]:SNY-LAB-Workspaces-IGW

[サブネットの関連付け]タブをクリックし、[サブネットの関連付けの編集]をクリックします。
次のサブネットを選択し、[保存]をクリックします。
- SNY-LAB-Workspaces-public

プライベートサブネット向けのルートテーブルを作成します。
- [名前タグ]:SNY-LAB-Workspaces-private-RTB
- [VPC]:SNY-LAB-Workspaces-VPC

作成したら[ルート]タブから[ルートの追加]をクリックし、追加の経路情報を入力します。入力したら保存します。
- [送信先]:0.0.0.0/0
- [ターゲット]:SNY-LAB-Workspaces-NGW
[サブネットの関連付け]タブから[サブネットの関連付けの編集]をクリックします。次のサブネットを選択し、[保存]をクリックします。
- SNY-LAB-Workspaces-private-1
- SNY-LAB-Workspaces-private-2

Directory Services の作成
マネージドのディレクトリサービスを作成します。マネージドコンソールで「Directory Services」と検索して[Directory Services]を開きます。[ディレクトリのセットアップ]をクリックします。

[ディレクトリタイプの選択]では、[AWS Managed Microsoft AD]を選択します。

[ディレクトリ情報の入力]では、各種パラメーターを入力します。
- [エディション]:[Standard Edition]
- [ディレクトリの DNS 名]:aws.ether-zone.com(外部解決可能なものでなくて OK)
- [ディレクトリの NetBIOS 名]:AWS
- [ディレクトリの説明]:(空欄で OK)
- [Admin パスワード]:(既定で作成される Admin ユーザーのパスワードを指定)

[VPC とサブネットの選択]では、マネージドディレクトリを利用する VPC を指定します。
- [VPC]:SNY-LAB-Workspaces-VPC
- [サブネット]:SNY-LAB-Workspaces-private-1
- [サブネット]:SNY-LAB-Workspaces-private-2

入力常歩を確認して[ディレクトリの作成]をクリックします。
作成まで最大45分ほどかかるので待ちます。
Workspaces の作成
マネージドコンソールで「Workspaces」と検索し、[Workspaces]を開きます。初回アクセス時に高速セットアップをサポートするリージョンを選んでいると次のページが表示されます。
メニューから[Workspaces]をクリックし、[Workspaces の起動]をクリックします。
[ディレクトリの選択]で先ほど作成したマネージドディレクトリを選択します。
ディレクトリの情報を読み取るための登録処理が始まります。

[ユーザーの特定]では Workspaces を利用するユーザー情報を指定します。新規にユーザーを作成することも可能です。ユーザー情報を入力し、[ユーザーの作成]をクリックします。

[すべてのユーザーの表示]をクリックすると、ディレクトリ内のユーザーが表示されます。先ほど作成したユーザーを選択して、[選択項目を追加]をクリックします。

[バンドルの選択]では、Workspaces で利用するインスタンスのスペックや OS などを選択します。利用したいバンドルと言語を選択します。
[Workspaces の設定]では、課金方式や暗号化設定を決めます。
- [実行モード]:[AutoStop]
- [暗号化]:(必要なければ未選択のまま)
設定内容を確認して、[Workspaces の起動]をクリックします。
インスタンスが作成されるまで20分程度かかります。起動が完了すると[ステータス]が[AVAILABLE]になります。
接続
ユーザー招待メール
ユーザー指定時に入力したアドレスに、登録情報が記載されたメールが届きます。1番のリンクをクリックすると、作成したユーザーのパスワードを設定するページに飛びます。


設定可能なパスワードの要件は次のとおりです。

Mac クライアントでの接続
Mac クライアントでの接続を試してみます。Workspaces のクライアントページにアクセスしてクライアントアプリのインストーラーをダウンロードします。
ダウンロードしたファイルを展開してクライアントアプリをインストールします。
インストールしたアプリを起動し、メール内にあった登録コードを入力します。

Workspaces に割り当てたユーザーの資格情報を入力してサインインします。

無事仮想デスクトップに接続できました。
バンドルで Windows 10 を選択しましたが、展開されているインスタンスの OS は Windows Server 2016 でした。SBC をクライアントライクに見せているようです。

Workspaces 触ってみて
構築展開は比較的スムーズでした。まだ既存 AD との連携を試していないのでそこも確認してみたいですね。あとは複数 Workspaces を同じユーザーに割り当てた時どうなるか(登録コードで制御かな?)、MFA などのアクセス制御もみてみたいです。
コメント