AD Connector で Amazon WorkSpaces ドメイン参加【第1回】

テレワーク全盛な昨今、AWS における DaaS (Desktop as a Service) といえば「Amazon WorkSpaces」ですが、自社の物理PCの代わりに WorkSpaces を使うようにするためには、既存の Active Directory ドメインサービスに参加させる必要があります。そこで、今回は EC2 インスタンス上に構築した AD ドメインサービスに、 AD Connector を利用して WorksSpaces を参加させてみたいと思います。

尚、「AWS EC2 でドメインコントローラ構築【第1回】」「AWS EC2 でドメインコントローラ構築【第2回】」を前提として書いているので、そちらから参照ください。

今回は、AD Connector を定義するところまでを行います。

AD Connector とは

AD Connector とは Active Directory Connector のことで、AWS 上の色々なリソースから既存の Active Directory ドメインサービスへアクセスするための中継機能です。クラウド全盛だけど、AD だけはオンプレで、とか EC2 インスタンス上に既に AD 構築してます、とか、そういうときに使います。

AWS Directory Service には、AD Connector 以外にも「Microsoft AD」と「Simple AD」があります。これらはいずれもマネージドディレクトリ(簡単に言えば、既に環境として整備されていて後は使うだけ、みたいなディレクトリサービス)です。本家には以下のような説明がありますが、規模というか、どう使いたいかによって使い分けるみたいですね。

Simple AD は Samba 4 Active Directory Compatible Server を利用したマネージドディレクトリです。Kerberos の SSO、ドメイン参加したコンピュータ、グループポリシーベースの管理といった Microsoft Active Directory の機能のサブセットが提供されます。Microsoft AD はマネージド型の Microsoft Active Directory で、Windows Server 2012 R2 を利用して他のドメインとの信頼関係、Active Directory Administrative Center、Active Directory ゴミ箱、Network Policy Server サポート、およびスキーマ拡張といった追加機能が提供されます。

Q: Simple AD と Microsoft AD との違いは何ですか?

まずは AD Connector の前提条件に記載の内容を準備していくことになります。

AD Connector 前提条件の確認

VPC

まずは VPC の準備を行います。

・少なくとも 2 つのサブネット。各サブネットはそれぞれ異なるアベイラビリティーゾーンにある必要があります。

VPC ~ AD Connector の前提条件

現状、サブネットは「MY-SUBNET1-1a」のひとつのみなので、もうひとつ追加しましょう。

VPCの設定(1)

「サブネットを作成」より、アベイラビリティーゾーン ap-northeast-1c とした「MY-SUBNET1-1c」を作成します。

VPCの設定(2)

次の条件は以下ですが、オンプレのADに接続する場合は「既存のネットワークに接続」する必要がありますが、今回は同じ VPC 上の EC2 インスタンスに構築した AD への接続なので問題ないです。

・VPC は、仮想プライベートネットワーク (VPN) 接続または AWS Direct Connect を通じて既存のネットワークに接続されている必要があります。

VPC ~ AD Connector の前提条件

次の条件は以下です。

・VPC にはデフォルトのハードウェアテナンシーが必要です。

VPC ~ AD Connector の前提条件

これはデフォルトにしてるので問題ないです。

VPCの設定(3)

既存の Active Directory

こちらに記載している条件はクリアしていますね。

Active Directory ドメインを持つ既存のネットワークに接続する必要があります。

このドメインの機能レベルはWindows Server 2003以上 AD Connector は Amazon EC2 インスタンスでホストされているドメインへの接続にも対応しています。

既存の Active Directory~ AD Connector の前提条件

サービスアカウント

次に AD Connector が、既存ADにアクセスするためのサービスアカウントが必要になります。条件は以下ですが、「権限をサービスアカウントに委任する」にその手順が記載されていますので、そちらに沿って実施します。

・ユーザーおよびグループの読み取り – 必須
・ドメインへのコンピュータの参加-シームレスなドメイン参加と WorkSpaces を使用する場合のみ必須
・コンピュータオブジェクトの作成-シームレスなドメイン結合と WorkSpaces を使用する場合のみ必須

サービスアカウント~ AD Connector の前提条件

まず、既存ADにセキュリティグループ「Connectors」を作成します。

サービスアカウント(1)

次にドメインルートから右クリックで「制御の委任」を選択します。

サービスアカウント(2)

オブジェクト制御の委任ウィザードが開始されます。「次へ」で進みます。

サービスアカウント(3)

「追加」ボタンで先ほど作成したセキュリティグループ「Connectors」を選択し「次へ」で進みます。

サービスアカウント(4)

委任するタスクでは「委任するカスタムタスクを作成する」を選択し、「次へ」で進みます。

サービスアカウント(5)

「フォルダー内の次のオブジェクトのみ」を選択し「コンピューターオブジェクト」と「ユーザーオブジェクト」を選択してください。「選択したオブジェクトを~」のチェックボックスはいずれもオンにしてください。

サービスアカウント(6)

アクセス許可は「プロパティ固有」を追加し「読み取り」権限にチェックします。

サービスアカウント(7)

あとは「完了」で、Connectors に制御の委任ができます。

サービスアカウント(8)

最後にサービスアカウント「ADConnectorService」を追加して、上記で作成したセキュリティグループ「Connectors」に所属させます。

サービスアカウント(9)
サービスアカウント(10)

ユーザーアクセス許可

Active Directory ユーザの権限についてですが、これはデフォルトで満たしているので、特に何もしません。

すべての Active Directory ユーザーは、各ユーザー独自の属性を読み取るアクセス許可を持っている必要があります。具体的には次の属性があります。
・GivenName
・SurName
・Mail
・SamAccountName
・UserPrincipalName
・UserAccountControl
・MemberOf

ユーザーアクセス許可~ AD Connector の前提条件

IP アドレス

今回構築している AD ドメインサービスは、DNSサーバも同居させているので、こちらも特に何もしません。

AD Connector は、_ldap._tcp.<DnsDomainName>および_kerberos._tcp.<DnsDomainName>ディレクトリに接続するときに、これらのサーバーからの SRV レコードを取得します。そのため、これらのサーバーにこれらの SRV レコードが含まれている必要があります。

IPアドレス~ AD Connector の前提条件

サブネット用のポート

AD ドメインサービスに対する通信ポートに関しては以下を満たす必要があります。

AD Connector で既存の Active Directory ドメインコントローラーにディレクトリリクエストをリダイレクトするには、既存のネットワークのファイアウォールで Amazon VPC の両方のサブネットの CIDR に対して次のポートが開かれている必要があります。
・TCP/UDP 53 – DNS
・TCP/UDP 88 – Kerberos 認証
・TCP/UDP 389 – LDAP

サブネット用のポート~ AD Connector の前提条件

つまり、今回のケースですとドメインコントローラとして構築した EC2 インスタンス に適用されているセキュリティグループにおけるインバウンドのポートを許可してあげる必要があるということになりますが、現時点では、"RDP"のみしか許していません。追加で上記のポートを開けてあげるでも良いのですが、同一VPC内での通信は全部許可しておきます。

「サービス」→「EC2」→「セキュリティグループ」にて、セキュリティグループ「MY-Sercurity-Group」のインバウンドルールにて「Edit inbound rules」を選択し、新たにVPC「MY-VPC」の CIDR である「10.0.0.0/16」からの通信に対して「すべてのトラフィック」を許可するルールを追加します。

サブネット用のポート

Kerberos 事前認証

Kerberos 事前認証はデフォルトで有効になっていますので、こちらも特に何もしません。

ユーザーアカウントの Kerberos 事前認証を有効にしておく必要があります。この設定を有効にする方法の詳細については、「Kerberos 事前認証が有効になっていることを確認する」を参照してください。この設定に関する一般的な情報については、Microsoft TechNet の「事前認証」を参照してください。

Kerberos 事前認証 ~ AD Connector の前提条件

各ユーザのプロパティの「アカウント」で「Kerberos 事前認証を必要しない」にチェックが入っていなければ、有効になっているということになります。(ややこしいですが、、、)

Kerberos 事前認証

暗号化タイプ

こちらも問題ないので特に何もしません。

AD Connector は、Active Directory ドメインコントローラーへの Kerberos を介した認証時に、以下のタイプの暗号化をサポートしています。
・AES-256-HMAC
・AES-128-HMAC
・RC4-HMAC

暗号化タイプ ~ AD Connector の前提条件

AD Connector の作成

ここまででやっと AD Connector が作成できるようになりました。AWSコンソールから「サービス」→「Directory Service」→「ディレクトリ」を選択します。初期状態であればディレクトリが何もない状態なので「ディレクトリのセットアップ」を選択します。

AD Connector の作成(1)

ディレクトリのタイプ「AD Connector」を選択します。

AD Connector の作成(2)

ディレクトリのサイズは「スモール」です。

AD Connector の作成(3)

VPC は「MY-VPC」、サブネットは最初に作成した「MY-SUBNET1-1a」と後から作成した「MY-SUBNET1-1c」をそれぞれ選択します。

AD Connector の作成(4)

次に AD への接続情報を入力します。DNS IP アドレスは、AD ドメインサービスを構築したサーバと同じプライベートアドレスを入力してください。

AD Connector の作成(5)

入力した値を確認して「ディレクトリの作成」を実行します。

AD Connector の作成(6)

少し時間がかかりますが、ディレクトリのステータスが「作成中」から「アクティブ」になったら完了です。

AD Connector の作成(7)

ちなみに、AD Connector の接続先となる EC2 インスタンスを停止しているときには、このステータスは「操作不能」となります。詳細の画面上はエラーメッセージが表示されていますので、こちらで原因は確認してください。別に作り直す必要はなくて、EC2 起動してしばらくすれば、また「アクティブ」に戻ります。

AD Connector の作成(8)

尚、AD Connector のテストは「DirectoryServicePortTest」を使うと良いみたいです。公式の管理ガイドに使い方などの記載があるので参考にしてください。
『AWS Directory Service 管理ガイド ~ AD Connector をテストする』

本来は、この後に AD Connector の動作確認が必要と思いますが、今回は省略します。次回 WorkSpaces と連携させてみようと思います。