前回、AWS上にWindows Server のインスタンスを立て、Active Directoryを構築する手順を公開しました。
今回は、AWSのマシンイメージを公開しているサービスであるAWS Marketplace上にあるActive DirectoryのAMI(Amazon Machine Image)を使用してActive Directoryを構築していきます。
期待する目標
本手順の目標は以下の通りです。
- AWS Marketplaceからインスタンスを作成できる
- Marketplaceの仕組みを理解する
- Active Directoryの初期セットアップをする
- EC2上のWindows Serverをドメインに参加する
なお、通常のActive Directory構築手順については、こちらで図解付きで解説しております。
また、EC2のWindows Serverインスタンスをデプロイする手順については、こちらで解説しております。
AWS Marketplaceとは
AWS Marketplace は、ソリューションを構築してビジネスを運営するために必要なサードパーティーのソフトウェア、データ、サービスを検索、購入、デプロイ、管理するために利用できる厳選されたデジタルカタログです。
AWS Marketplace とは | 概要
AWS MarketplaceはOSとOS上に構築されたソフトウェアとテンプレートとして利用可能なAWSのサービスの一つです。
通常だと、LAMP環境を構築する場合、OSのAMIを選択し、インスタンスを展開、Apache+PHP+MySQLの構築を行う必要がありますが、Marketplaceを使用すると、CentOS+LAMPが構築されたOSイメージから展開が可能で自力でLAMPの環境構築を省略することができます。
ユーザが作成したAMIも公開されており、必要なAMIをMarketplaceから入手することで、様々な構築の手順を簡略化することができます。(Zabbix等もあるので、監視ソフトも自動でデプロイできる)
Marketplaceの料金ですが、通常のEC2にかかる料金+各種ソフトウェアの使用料がかかってきます。
各ソフトウェア料金も時間単位でかかってくるので、Marketplaceから展開する場合は、その料金も考慮に入れることを忘れずに行いましょう。
前提条件
今回は、Windows ServerのEC2インスタンスを2台使用します。
1台目はActive DirectoryのAMIから展開します。
2台目は、Active Directoryサーバへのドメイン参加テストを実施するとサーバとなります。
また、本環境は検証環境のため、各インスタンスはt2.microで構築します。
t2.microではActive Directoryの推奨スペックを満たしていません。本運用する場合はもう少しスペックを盛ってください。
EC2インスタンスの作成
EC2インスタンスの作成については、過去に手順化しているため、詳しい手順はそちらをご覧ください。
今回特別に設定している部分のみかいつまんで手順にしています。

[EC2]-[インスタンス]より、[インスタンスを起動]-[インスタンスを起動]を選択します。

[ステップ1:Amazonマシンイメージ(AMI)]より検索欄に[Active Directory]を入力します。
入力後、AWS Marketplaceを選択し、[Active Directory Domain Controller 2019]を選択します。
本当であればWindows Server 2022で作成したかったのですが、2022年3月23時点では存在しないため、Windows Server 2019を選択します。

Active Directory Domain Controller 2019を選択すると、AMIの詳細が表示されます。
今回は、インスタンスタイプとソフトウェア料金として$0.03の料金が発生しします。
t2.microの場合だと、$0.02/h+$0.03/hがかかるので1時間当たり0.05ドルとなります。
問題内容であれば、[Continue]を選択します。
この後は、通常のEC2インスタンス作成と同様の手順となります。

[ステップ2:インスタンスタイプの選択]より、以下のインスタンスを選択します。
- ファミリー : t2
- タイプ : t2.mirco

[ステップ3 : インスタンスの詳細の設定]では以下の項目を設定していきます。
- インスタンス数 : 1 (展開するインスタンス数を設定)
- 購入オプション : □スポットインスタンスのリクエスト (スポットインスタンスを使用する場合は選択)
- ネットワーク : インスタンスを展開するVPCを選択
- サブネット : 選択したVPC内の展開するサブネットを選択
- 自動割り当てパブリックIP : 有効
今回は、外部からRDPを行うため、パブリックIPを有効化しています。
パブリックIPは再起動で変更される可能性が高いため、固定のグローバルIPアドレスが必要な場合は、Elastic IPを取得しましょう。

また、Active DirectoryのプライベートIPアドレスは固定化したいため、[ネットワークインターフェース]より、eth0の[プライマリIP]を入力し、プライベートIPアドレスを固定化していきます。
ここで使用できるIPアドレスはVPC内で設定したサブネットのCIDR範囲のIPとなります。
今回は、192.168.250.15としました。

[ステップ4 : ストレージの追加]より、以下の設定を行います。
- サイズ : 30GB (無料利用枠内を使用)
- ボリュームタイプ : 汎用SSD (gp2)
- 終了時に削除 : ■ (EBSを他のインスタンスで使用する場合はチェックを外してください)

[ステップ5 : タグの追加]より、必要に応じてタグをつけてください。
今回は不要なため、[次のステップ:セキュリティグループの設定]を選択します。

[ステップ6 セキュリティグループの設定]より、本EC2に割り当てるセキュリティグループを設定します。
前回作成した残りがあるため、[既存のセキュリティグループを選択する]より、VPC内部セグメントと自宅からのRDP用にグローバルIPを許可している設定のセキュリティグループを選択します。

[ステップ7 : インスタンス作成の確認]より、作成するインスタンスを確認し、[起動]を選択します。

キーペアについては、既存のキーペアがあれば[既存のキーペアの選択よ]より既存のキーペアを選択してください。
キーペアがない場合やキーペアを作成する場合は、新しいキーペアを作成してダウンロードしてください。

通常のWindows Serverであれば、すぐにインスタンスの作成がされるのですが、今回はこんな画面が出てきました。
どうやらサブスクリプションの設定に時間がかかっているようです。
こちらについては、AWS Marketplaceから作成すると出るようです。
そのため、しばらく待ちます。今回は10分程度でインスタンスの作成ができておりました。

作成したインスタンスのステータスが[実行中]となっていればインスタンスの作成と起動が完了しています。
Active Directoryの初期設定
EC2を起動し、ログインをするとActive DirectoryとDNSのインストールが完了しており、ドメインコントローラへの昇格手前で止まっている状態でした。
そのため、OSの初期設定を行ってからADのセットアップを完了させます。
OSのセットアップは以下の設定を行いました。
- ホスト名の変更
- NTPサーバの同期設定

サーバマネージャーの[フラグ]を選択し、[展開後構成]-[このサーバをドメインコントローラに昇格する]を選択します。

[Active Directoryドメインサービス構成ウィザード]-[配置構成]より、[新しいフォレストを追加する]を選択します。
ルートドメイン名に環境で使用するドメイン名を入力します。
今回は、[test.local]で構築をします。

[ドメインコントローラオプション]より、ドメコンの機能オプションを設定します。
今回は以下の設定を行いました。
- フォレストの機能レベル : Windows Server 2016 (フォレスト内で最小のサーバに合わせて選択)
- ドメインの機能レベル : Windows Server 2016 (ドメイン内で最小のサーバに合わせて選択)
- ドメインネームシステムサーバ : ■
- グローバルカタログ : ■
- 読み取り専用ドメインコントローラ : □
また、ディレクトリサービス復元モードのパスワードは、ADが壊れた際の復元時に必要となるため、記憶できるパスワードとしてください。
なお、本AMIはOSのパスワードポリシーが有効になっているため、要件に合致するようにパスワードを設定します。

[DNSオプション]では、特に設定せず、[次へ]を押下します。

[追加オプション]より、ドメインに割り当てられているNetBIOS名を設定します。
今回はデフォルトのまま設定します。

[パス]より、ADに必要なSYSVOLやDBのパスを確認し、[次へ]を選択します。

[オプションの確認]より、設定するオプションを確認し、[次へ]を選択します。

[前提条件のチェック]より、結果にエラーがないことを確認し、[インストール]を押下します。

インストールが完了すると、自動的に再起動が行われるため、[閉じる]を選択し、再起動させます。

再起動後、ドメインのAdministratorでログインします。
以上でActive Directoryのインストールは完了です。
ついでに、NTPの設定を行います。

コマンドプロンプトを管理者権限で開き、以下のコマンドを実行します。
> reg add "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\TimeZoneInformation" /v RealTimeIsUniversal /d 1 /t REG_DWORD /f
The operation completed succesfully.
> w32tm /resync
再同期コマンドをローカルコンピュータに送信しています
The command complated successfully.
コマンドが正常に実行されたら、NTPの設定は完了です。
以上で、AD側の設定は完了です。
ドメイン参加
前項までで、ADの最低限の設定は完了しました。
ここからは、ドメインに参加させるサーバで作業を実施します。

ドメイン参加前の状態はこのようになっています。
ローカルのAdministratorでログインしており、DNSサフィックスも付与されていません。

ドメイン参加をするサーバより、[Windowsの設定]-[ネットワークとインターネット]-[イーサネット]より、接続しているNICを選択します。

NICの設定より、[DNS設定]-[編集]を選択します。

[DNS設定の編集]より、IPv4がオンになっていることを確認し、[優先DNS]に先ほど構築したADサーバのプライベートIPアドレスを入力します。
また、AWS環境ではデフォルトでAWSのサフィックスが追加されているため、デフォルトのサフィックスだとADのサフィックスが引けません。
そのため、NICのプロパティより、以下の設定を行います。
- プライマリおよび接続専用のDNSサフィックスを追加する : ●
- この接続のDNSサフィックス : ADのサフィックスを追加

あとは、通常のドメイン参加と同様に[システムのプロパティ]より、[コンピュータ名]-[変更]を選択します。

[コンピュータ名/ドメイン名の変更]より、以下の設定を行います。
- 所属するグループ : ドメイン
- ドメイン : 構築したドメイン名

ドメイン参加時に、ドメインユーザによる認証が必要になるため、先ほど構築したADのAdministratorで認証させます。
ドメイン参加後、サーバの再起動が必要になるため、サーバを再起動させます。
この際に、Elastic IPを取得していない場合は、グローバルIPが変更になる可能性があるため、割り振られているグローバルIPを確認しておきます。(停止→起動をしないと変わらないような気がしますが念のため)

サーバの再起動後、ドメインアカウントでログインしました。
ドメインユーザでログインできていること、サーバのサフィックスが付与されていることを確認します。
以上で、ドメイン参加は完了です。
まとめ
今回は、EC2のAWS Marketplaceを使用してActive Directoryを構築しました。
自力編で構築したものと比べ、Active Directoryのインストールがない分工数がかからないと思います。
ただ、どこまで実装されているか?の調査を事前に行っておく必要があるため、本番構築の手順等が必要な環境であれば、あまり工数の省略に至らないと思います。(ソフトウェア利用料金も発生しますし・・・)
さらには、上の方から「OSの設定は適切なの?」など質問が来たら調査が必要なため、結局自力で構築してもADに関してはあまり工数削減はできないと思います。
ただ、FortigateなどアプライアンスもMarketplaceでは提供しているため、そちらのほうがメインになる機能だと思いました。
おまけ
本ブログではVMwareやWindows、Linuxのインストール手順等も公開しております。
インフラエンジニアとして有益な記事や無益なコンテンツも作成しておりますので、通勤時間や休憩時間、休日のスキマ時間等に合わせて読んでいただけると幸いです。
また、Youtubeで解説動画も鋭意作成中です。本ブログで記事にしているものも動画にしようと思っておりますので、よろしくお願いいたします。
コメント