AWS上でWindows Serverのあれこれ試してみる ~Active Directory環境の構築~


# はじめに
AWS上でActive Directoryのドメインコントローラーを作成したのであれこれ備忘録として残していきます。

# 目次
Active Directoryって？
AWS構成図
AWSネットワーク構築
AWSサーバーインスタンス構築
Elastic IP　設定
OSの初期設定
ADのインストール
動作確認
さいごに

# Active Directoryって？

Active Directory（アクティブディレクトリ）は、Microsoftが提供するネットワークサービスおよびディレクトリサービスです。主にWindowsベースのネットワーク環境で利用されます。今回はActive DirectoryをADと略していきます。
主な機能は以下の通りです。
- ADは、ユーザーアカウント、コンピュータ、プリンタ、ファイル、グループなどのリソースをオブジェクトとして階層的なデータベースで管理。ユーザアカウントの作成、更新、削除が可能。
-  ADは、ネットワーク全体を1つ以上の「ドメイン」と呼ばれる論理的な区分に分割。各ドメインは独自のセキュリティルールで管理可能。
-  複数のドメインと階層的に連携が可能。階層的に連携された状態と「ツリー」と呼び、複数のツリーが信頼関係を持つと、「フォレスト」と呼ぶ。
- ユーザーやリソースをまとめて管理するために、「グループ」が使用されます。ユーザーグループは、権限の一括設定などに便利。
- ADはシングルサインオン（SSO）をサポートし、ユーザーが1度の認証で複数のリソースにアクセス可能。
- ADはグループポリシーがあり、ネットワーク上のコンピュータの動作を制御するためのルールや設定を一括管理可能。

簡単に説明すると、ユーザアカウントやコンピュータ端末をオブジェクトとしてドメイン単位で管理を行い、アカウントやグループポリシーの一元管理を実施してくれる機能です。
ADで管理されているユーザアカウントはドメインアカウントととして扱われ、普段PCでログインに使用しているアカウントであるローカルアカウントとは別の扱いとなります。
また、グループポリシーを設定することでAD管理対象のユーザとコンピュータに対して、ルールを設定し統一した管理が可能です。
ルールの例はパスワードの文字数の強制化(8文字以上など)、各コンピュータにログインできるユーザやグループを制限、証明書の配布などがあります。
管理するコンピュータが多ければ多いほど端末ごとの設定作業が発生しますが、グループポリシーを使用することで1回の設定でまとめてルールを適用することが可能です。



# AWS構成図
それでは本題のほうに移ります。
まずはAWSの構成図です。内容はいたってシンプルです。
![001.drawio (1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/616483/55b3be75-ede0-fcc9-1c7b-0c6a26bd4e98.png)

セキュリティグループやインターネットゲートウェイは省略しています。

# AWSリソース構築
続いて、ＡＷＳリソースを構築していきます。
IPアドレスなどは適宜自分の環境に合わせて読み換えてください。

### AWSネットワーク構築
まずはネットワーク環境です。
VPCとサブネットを以下のように作成します。

|  VPC名 |  IPアドレス範囲  |
| ---- | ---- |
|  demo-vpc  |  10.0.0.0/16  |

|  サブネット名 |  用途  |  IPアドレス範囲  |
| ---- | ---- | ---- |
|  demo-public  |  パブリックサブネット  |  10.0.0.0/24  |
|  demo-private  |  プライベートサブネット  |  10.0.1.0/24  |

続いて、インターネットゲートウェイを作成し、```demo-vpc```にアタッチします。
その後、ルートテーブルを作成し、```demo-private```がインターネットゲートウェイを通るようにルーティングしてあげれば、一旦は完成です。

### AWSサーバーインスタンス構築
次にサーバーインスタンス周りを作成していきます。
今回はWindows　Server 2022で作成していきます。

EC2を以下のように作成します。
|  項目 |  設定値  |
| ---- | ---- |
|  名前  |  demo-ad  | 
|  AMI |  Microsoft Windows Sever 2022 Base  | 
|  AMI ID |  ami-0222cfd6a9c020197  | 
| インスタンスタイプ |  t3.medium | 
| キーペア|  自分のキーを使用 | 
| VPC | ```demo-vpc```  | 
| サブネット|  ```demo-private``` | 
| パブリックIPの自動割り当て | 無効化 |
| セキュリティグループ | 別途記載 | 
|  高度なネットワーク設定 | 別途記載 | 
|  ストレージを設定 | 30GB　gp2 | 

インバウンドのセキュリティグループについては新規に以下のように作成しています。(事前に作成したり、既存のセキュリティグループを使用してもOK)
|  項目 |  設定値  |
| ---- | ---- |
|  名前  |  demo-adsg  | 
|  タイプ   | RDP | 
|  ソースタイプ | 任意 |

Windwos ServerのためRDP接続ができたら問題ないです。
接続元IPは任意としていますが、MyIPなど接続元は制限推奨です。
また、SSM Session Managerなどで接続を想定している場合は、RDPではなくhttps接続等に変える必要があります。Windwos Serverのためポートフォワーディングが必要ですが詳細は省略します。

また、検証用のため、セキュリティグループはRDPしか許可していません。サブネットを跨いだ通信が必要な場合は
[こちら](https://learn.microsoft.com/ja-jp/troubleshoot/windows-server/identity/config-firewall-for-ad-domains-and-trusts "")を参照してください。

高度なネットワーク設定については後程記載するため省略します。

設定が完了したらインスタンスを起動します。

### Elastic IP　設定
インスタンスを起動したら、Elastic IPをEC2 インスタンスに割り当てます。
パブリックIPでの接続でいいのではと思った方いると思いますが、ADとADのインストールに必要なDNSサーバの機能には静的なIPアドレスが必要なため、停止や休止をしてもIPアドレスが変わらない、Elastic IPを割り当てます。

Elastic IPの発行が完了後、先ほど作成した```demo-ad```に割り当てます。

### OSの初期設定
インスタンスを起動後数分したら、初期パスワードを確認することができるようになります。
マネジメントコンソールからインスタンスを選択し、[接続]-[RDPクライアント]-[パスワードを取得]の順にクリックをするとキーペアのアップロード画面が表示されます。
EC2インスタンスの作成時に指定したキーをアップロードすると、パスワードが取得できます。

また、パスワードの上に初期ユーザー名であるローカルアカウントのAdministratorと接続IPアドレスが表示されているため、その3点の情報でリモートデスクトップ接続を行います。

今回使用したAMIのデフォルトの言語は英語のため、日本人しては読みづらいかと思います。
設定画面から[Time&Language]-[Language]-[Add Language]と入力することで日本語のインストールが可能です。
インストール完了後、[Windows display Language]を日本語に設定したのちサインインをし直すことで日本語に反映されます。

(任意)言語設定を日本語にしたらホスト名を変更していきます。
デフォルトのホスト名は```EC2AMAZ```から始まるホスト名ですがわかりにくいため今回は```demo-ad```に変更します。

続いてOSの静的IPアドレスを割り振ります。
今回のVPC構成では以下のように設定をしました。
|  項目 |  設定値  |
| ---- | ---- |
|  IPアドレス  |  マネジメントコンソールのEC2画面に表示されているプライベートIPアドレス  | 
|  サブネットマスク | 255.255.255.0 | 
|  デフォルトゲートウェイ | 10.0.0.1 |
|  DNS設定 | 変更なし |

デフォルトゲートウェイなどはサーバー上のコマンドプロンプトで```ipconfig /all```などで確認できます。
万一、設定EC2インスタンスに接続できなくなった場合はマネジメントコンソールからネットワークインターフェースをEC2に追加して、Elastic IPを追加したネットワークインターフェースに付け替えます。その後、リモートデスクトップ接続を再実施することで、別のNICとして接続することで再接続が可能です。設定修正後、Elastic IPを元に戻したあとは追加したネットワークインターフェースは削除して構いません。

OSの設定は細かくしだすときりがないのでこれくらいにしていよいよADのインストールをしていきます。

### ADのインストール
続きまして、ADのインストールです。

ADのインストールはサーバーマネージャーの[役割と機能の追加]から実施します。
役割と機能の設定ウィザードを起動後、次に進んでいくと[サーバーの役割の選択]の画面に到達します。
この画面で[Active Directory Domain Services]にチェックを入れます。Active Directory Domain Servicesに必要な機能が表示されるため、[機能の追加]をクリックします。
また、ADはドメイン環境下のDNSサーバーと連携する必要があるため、[DNS Server]にもチェックを入れます。こちらも必要な機能を追加後次に進みます。
続いての[機能にの選択]についてはデフォルトのまま次に進みます。そのまま次に進んでいくことで確認画面が表示されるため、インストールを開始してください。

数分後、インストールが完了したら[このサーバーをドメインコントローラーに昇格する]をクリックします。
ドメインコントローラーとはAD環境のマスターのような存在です。特徴としては管理者権限のあるアカウントでしかログインすることができません。ドメインコントローラーはドメイン環境内で複数作成することが可能で、ユーザやコンピュータオブジェクト、グループポリシーなどはドメインコントローラー間でレプリケーション(同期)されます。

ドメインサービス構成ウィザードでは、設定値を入力後、ドメインコントローラーオプションをインストールします。
まず、新規にフォレストを作成し、ルートドメイン名＝ドメイン名を設定していきます。
今回は```test.local```という名前で作成していきます。
![WS000002.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/616483/b5913cab-22aa-d801-5704-db817e722592.jpeg)

その後、フォレストの機能レベルとドメインの機能レベルをWindows Server 2016(2023年7月最新版)を指定します。機能レベルは簡単にいってしまえば、ADのバージョンです。機能レベルごとに機能が異なっており、もし、2台以上のドメインコントローラーを作成する場合は機能レベルはドメインコントローラー間で統一する必要があります。

パスワードやデータベースなどは任意のものを設定したらいよいよインストール開始です。
![WS000003.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/616483/c8295cef-9d42-5557-a047-a0ce9b3c6cf0.jpeg)

インストール完了後、自動的に再起動が行われます。


### 動作確認
再起動が行われたらADの構築作業としては完了です。
最後に動作確認をしてきます。

ここで注意点があります。
ドメインコントローラーとして構成されたADサーバはローカルアカウントが削除されてしまいます。
そのため、今後のADサーバでのログインはドメインアカウントを使用していく必要があります。
既定のAdministratorでログインする場合はユーザー名を以下のように入力します。

```test.local\Administrator```
IPアドレスやパスワードの変更は有りません。
また、別のサーバや端末をドメイン参加させた場合も上のユーザ情報でログインすることが可能です。

ログインが完了したら、一旦は環境構築完了です。
サーバーマネージャーからツールを押すとActive Directory関連のサービスやグループポリシーの管理、DNSなど複数の機能が追加されています。
基本的にはこの項目からユーザーの追加、グループポリシーの設定、DNSゾーンやレコードの追加、信頼関係の構成などを行います。コマンドでも可能ですが割愛します。

既定のAdministratorを使用しない場合は、Active Directory ユーザーとコンピューターから作業用のアカウント追加が可能です。また、ユーザーとコンピュータからOU(ADにおけるユーザーやコンピュータの管理単位)を設定が可能です。


# さいごに
以上、AWS環境でActive　Directoryを作成してみる、でした。
AWS環境として考慮するポイントとしては静的IPアドレスを割り振る必要があることです。
それ以外は一般的なEC2インスタンスの作成手順とインストール手順で作成が可能です。
今回はVPC内の間でしか```test.local```が名前解決できない状態です。

より本格的に構成をする場合は、セキュリティグループの設定で別のサブネットとの通信設定やRoute 53 Resolverを使用した外部へのフォワーディング設定などが必要ですが、長くなるので省略します。

本記事でActive Directoryを実際に作ってみるまでは試せるようになるとと思います。
次の記事移行でAzure AD Connectとの連携等も試していきたいと思います。