ぴろログ

Output Driven

Azure AD ユーザで Amazon WorkSpaces ( Windows 10 ) を利用する構成の検証① - ネットワーク接続編

Azure AD 上で管理しているユーザで、AWS の DaaS ( Desktop as a Service ) である Amazon WorkSpaces を利用する方法を検証してみました。

WorkSpaces は、 AWSディレクトリサービスである Simple Active DirectoryMicrosoft Active Directory でユーザ情報を管理するか、Active Directory Connector ( AD Connector ) で 既存の Active Directory ( AD ) との接続構成をとる必要があります。後者の場合、 AD Connector は 既存 AD へのプロキシとしての役割を果たし、 ユーザ情報は既存 AD で一元管理されることになります。

AD Connector の使用事例を探してみると、オンプレで自前管理している AD との接続に関する記事が多くヒットしますが、最近では脱オンプレ かつ Azure AD でユーザを一言管理している組織も多いと思います。 Azure AD と AD Connector をつなげる方法がないか調べたところ、こちらの記事にたどり着きました。

aws.amazon.com

Azure AD と Azure Active Directory Domain Services ( AAD DS ) 間でユーザ情報を同期させ、 AD Connector を AAD DS へのプロキシとして構成することで、 WorkSpace ( Windows 10 バンドル )に Azure AD での管理ユーザでサインインできるようです。

以下の検証環境を構築し、上記が実現できることを確認したので、検証環境構築の作業記録を残しておきます。

f:id:pirox07:20200114063851p:plain

ボリュームが膨らんだため、AWS と Azure の間のネットワーク接続(本記事)、② AD Connector と AAD DS の接続、のふたつに記事を分けています。

②はこちらです。

blog.pirox.dev

前提

検証に利用した Azure の環境です。

Azure サブスクリプション

Free Trial を利用しました。今回の検証( ¥20,000 分)はこの無償枠内でおさまりました。

https://azure.microsoft.com/ja-jp/free

Azure AD のプラン

Microsoft 365 E5 を使用している関係で、検証環境は Azure AD Premium P2 エディション となっています。

こちらの比較表を確認した限りでは Office 365 に紐づく Free エディションでも同様の確認ができるように思いますが、支障が出た場合はトライアルで上位プランを試してみてください。

テナント名

独自ドメイン ( pirox.dev ) で Azure のテナントを作成しています。今回の検証では独自ドメインの必要性はないと思いますが、念のため記載しておきます。

ステップ① AAD DS 関連コンポーネントの作成

こちらのチュートリアルを参考にして、 Azure AD DS 関連のコンポーネントを作成します。

docs.microsoft.com

作成開始

Azure Portal で、 Azure Domain Serviece > 追加 をクリックします。 f:id:pirox07:20200112150900p:plain

基本設定

事前に作成した Free Trial のサブスクリプション内で、 sample-pirox というリソースグループを新規作成して登録しました。

DNS ドメイン名にはカスタムドメイン ( pirox.dev )を指定しましたが、デフォルトの設定でも問題ないかと思います。

場所(リージョン)はお好みですが、 東日本 を選択しました。( WorkSpaces も東京リージョンで利用したため。)

フォレストの種類は、チュートリアルの指定どおり ユーザ とします。

f:id:pirox07:20200114005756p:plain

ネットワーク設定

デフォルト設定のまま、 AAD DS を配置する仮想ネットワークサブネットを作成します。

f:id:pirox07:20200114010626p:plain

※仮想ネットワークの CIDR = サブネットの CIDR で作成されるため、後続の設定で仮想ネットワークを拡張します。

管理設定

こちらもデフォルト設定のままです。

f:id:pirox07:20200114010743p:plain

同期

デフォルト設定のまま次へ。

f:id:pirox07:20200114010807p:plain

確認および作成

各種設定値の確認画面が表示されるので、内容に問題がなければ「作成」をクリックします。

40分ほどかかって、以下のリソースが作成されました。

f:id:pirox07:20200112153125p:plain

(参考)デプロイの待ち時間中に AAD DS のお勉強

AAD DS は、サーバの管理不要で Active Directory Domain Service の機能が利用できるマネージドサービスです。 裏では仮想サーバ ( Domain Controller ) が複数の Azure Availability Zone に分散配置され、一定の可用性が担保されるようですね。

docs.microsoft.com

Azure Active Directory Domain Services (Azure AD DS) では、Windows Server Active Directory と完全に互換性のあるマネージド ドメイン サービス (ドメイン参加、グループ ポリシー、ライトウェイト ディレクトリ アクセス プロトコル (LDAP)、Kerberos 認証、NTLM 認証など) が提供されます。 クラウドドメイン コントローラーのデプロイ、管理、および修正プログラムの適用を行わなくても、これらのドメイン サービスを使用することができます。 Azure AD DS は既存の Azure AD テナントと統合されるので、ユーザーは既存の資格情報を使用してサインインできるようになります。

Azure AD から 以下のユーザ属性情報が自動同期されるとのこと。

  • UPN
  • SAMAccountName
  • パスワード ※ハッシュ値
  • プライマリ ユーザーおよびグループの SID
  • ユーザーとグループの SID 履歴

docs.microsoft.com

従来の Acitive Direcotory Domain Services (自己管理型 AD DS)との比較表を見ると、ドメイン/フォレストの信頼が不可といった一部制約があるものの AAD DSでほとんどの機能が代替可能なように思います。 新たに構築する場合は、ほぼ AAD DS の選択となるのではないでしょうか。 docs.microsoft.com

マネージドドメインをデプロイ

AAD DS のデプロイ直後は、以下のとおりマネージドドメインの構成が進行中となっています。完了までに30分ほどかかるため、先にステップ②を進めておくとよいです。

f:id:pirox07:20200112154805p:plain


ステータスが「実行中」(構成完了)となったら、仮想ネットワーク内の DNS サーバ 情報を設定します。( 「仮想ネットワークの DNS サーバ設定の更新」 で「構成」をクリック)

f:id:pirox07:20200112155201p:plain

この操作により、仮想ネットワークの DNS サーバとして AAD DS の IP アドレスが指定されます。

f:id:pirox07:20200112160151p:plain

ステップ② WorkSpaces 用の VPC ・サブネットを作成

AWS のマネージドコンソールで、 VPC とサブネットを作成します。

今回は sample-workspaces という名前(タグ)で VPC を作成します。 後続ステップで Azure の 仮想ネットワーク ( 10.0.0.0/16) と接続するため、重複しないよう CIDR は 10.1.0.0/16 とします。

f:id:pirox07:20200114013115p:plain

WorkSpaces は Availability Zone が異なるサブネットを2つ必要とするので、以下のとおり作成します。

名前タグ Availability Zone CIDR
private-subnet-1 ap-northeast-1a 10.1.1.0/24
private-subnet-2 ap-northeast-1c 10.1.2.0/24

※今回の検証とは別の目的でプライベートサブネット(インターネットとの接続を制限)としたかったため、このような名称にしています。

f:id:pirox07:20200114014001p:plain
private-subnet-1 の設定画面

ステップ③ AWS ・ Azure のネットワークを VPN で接続

それぞれのネットワークを マネージド VPN (ソフトウェア VPN )でつなぎ、 AD Connector から AAD DS へ接続可能な状態とします。

設定手順は クラメソさんのブログを参考にさせていただきました!!

dev.classmethod.jp

※ここから AWS ・ Azure 間で手順が行き来するのでご注意ください。

Azure で作業 / ゲートウェイサブネットの作成

Azure VPN Gateway を配置するサブネットを作成します。

はじめに、現状では仮想ネットワーク ( aadds-vnet ) の IP アドレスがすべて aadds-subnet (10.0.0.0/24) に割り当てられてしまっているため、 CIDR の設定を変更します。

f:id:pirox07:20200114015722p:plain

サブネットの設定画面に戻り、「ゲートウェイサブネット」をクリックします。

f:id:pirox07:20200112181837p:plain

CIDR は 10.0.254.0/24 で作成します。今回は検証目的であるため、ネットワークセキュリティグループ等、他の設定は行わずに進めます。

f:id:pirox07:20200112182042p:plain

作成が完了すると、以下のとおり表示されます。

f:id:pirox07:20200112182334p:plain

Azure で作業 / Azure VPN Gateway の作成

作成したゲートウェイサブネットに Azure VPN Gateway をデプロイするため、 Marketplaces から 仮想ネットワークゲートウェイを選択して作成を開始します。

f:id:pirox07:20200113204230p:plain

以下のとおり設定します。作成完了までに30分ほどかかりました。

f:id:pirox07:20200113211741p:plain

f:id:pirox07:20200113204445p:plain

作成が完了したら、 Azure VPN Gateway に割当てられたグローバル IP アドレスをメモしておきます。(後続作業の AWS カスタマーゲートウェイの設定時に必要な情報です。)

f:id:pirox07:20200114021307p:plain

AWS で作業 / AWS カスタマーゲートウェイの作成

AWS のマネジメントコンソールに移り、 VPC のサービス画面でカスタマーゲートウェイを作成します。 f:id:pirox07:20200113215428p:plain

静的ルーティングで設定し、 IP アドレスには Azure VPN Gateway に割り当てられたグローバル IP アドレスを入力します。

f:id:pirox07:20200114021803p:plain

AWS で作業 / 仮想プライベートゲートウェイの作成

VPC のサービス画面から、仮想プライベートゲートウェイを作成します。

f:id:pirox07:20200113223642p:plain

設定は以下のとおりです。

f:id:pirox07:20200114022613p:plain

作成後、 VPC にアタッチします。

f:id:pirox07:20200113224026p:plain

f:id:pirox07:20200114023522p:plain

AWS で作業 / サブネットルートテーブルの作成

AD Connector - AAD DS 間で通信可能となるよう、ルートテーブルを作成しておきます。 AD Connector の ENI が WorkSpaces 用のサブネットに配置されるようなので、該当サブネットと Azure 間の経路情報を設定します。

名前タグを設定して、検証用の VPC に割り当てます。

f:id:pirox07:20200113224753p:plain

作成したルートテーブルを指定し、「ルートの編集」をクリックして経路情報を設定します。 f:id:pirox07:20200113225140p:plain

Azure の仮想ネットワーク(10.0.0.0/16) 向きの通信を、仮想プライベートゲートウェイにルーティングするよう設定します。

f:id:pirox07:20200116080119p:plain

ルートテーブルを、サブネットに明示的に関連付けます。

f:id:pirox07:20200113230848p:plain

WorkSpaces 用の2つのサブネットを指定して保存します。

f:id:pirox07:20200113230919p:plain

AWS 側作業 / サイト間 VPN の作成

VCP のサービス画面で、サイト間の VPN を作成します。

f:id:pirox07:20200113231315p:plain

作成済みの仮想プライベートゲートウェイやカスタマーゲートウェイを指定して、 VPN 接続を作成します。

f:id:pirox07:20200113231503p:plain

作成後、 VPN の設定ファイルをダウンロードします。

f:id:pirox07:20200113231656p:plain

サイト間 VPN では複数の Availability Zone に 2つの IPsec トンネルが提供されるため、接続情報が2つ用意されています ( IPSec Tunnel #1 / #2 ) 。それぞれの Pre-Shared KeyVirtual Private Gateway の情報を確認しておきます。

なお、設定ファイル内では IKE のバージョンが IKEv1 と記述されていますが、実際には IKEv2 を使用します。( サイト間 VPN は IKEv2 を サポート済み

IPSec Tunnel #1
================================================================================
      - IKE version              : IKEv1 
      - Authentication Method    : Pre-Shared Key 
      - Pre-Shared Key           : xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx  ← IPsec Tunnel #1 の Pre-Shared Key
・・・
    Outside IP Addresses:
      - Customer Gateway                : A.A.A.A
      - Virtual Private Gateway         : B.B.B.B    ← IPsec Tunnel #1 の AWS 側グローバル IP アドレス
・・・
IPSec Tunnel #2
================================================================================
    ・・・
      - Pre-Shared Key           : yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy  ← IPsec Tunnel #2 の Pre-Shared Key
    ・・・    
      - Virtual Private Gateway         : C.C.C.C    ← IPsec Tunnel #2 の AWS 側グローバル IP アドレス
    ・・・

Azure で作業 / ローカルネットワークゲートウェイの作成

ローカルネットワークゲートウェイを作成します。

f:id:pirox07:20200113234020p:plain

IP アドレスには、IPsec トンネルで対向となる グローバル IP アドレスを入力します。 f:id:pirox07:20200113234314p:plain

作成したローカルネットワークゲートウェイの接続情報を設定します。

f:id:pirox07:20200113234601p:plain

Pre-Sharaed key の値を入力します。※繰り返しですが、 IKE プロトコルは IKEv2 を利用します。

同様の手順で、IPSec Tunnel #2 用のローカルネットワークゲートウェイも作成します。

接続の確認

設定に問題がなければ、5分ほどで VPN 接続が確立します。

f:id:pirox07:20200113235526p:plain
AWS - サイト間 VPN

f:id:pirox07:20200113235904p:plain
Azure - ローカルネットワークゲートウェイ

これで両クラウドのネットワークが繋がりました。

まとめ

  • AAD DS の各種コンポーネントを作成した
  • AD Connector と AAD DS を接続するためのネットワークを作成した

AWS 、 Azure ともに VPN サービスを使ったことがなかったので、良い機会となりました。 また、手動でポチポチ作成するのがなかなか辛かったため、 IaC ツールでのテンプレート作成にも挑戦してみたいと思います。

次回の記事で、実際に Azure AD での管理ユーザで WorkSpaces へのサインインが可能になります。

参考情報

Amazon WorkSpaces とは

AWS Directory Service とは

Active Directory Connector

docs.microsoft.com

aws.typepad.com

AWS Site-to-Site VPN とは