[アップデート] AWS Managed Microsoft ADの管理用EC2インスタンスを簡単に作れる様になりました

2023.06.09

しばたです。

本日AWSより以下のアナウンスがあり、AWS Managed Microsoft ADでディレクトリ管理ツールをよりシンプルに利用できる様になりました。

どういうことか?

今回の更新によりAWS Systems Managerの機能(SSMオートメーション)を使ってActive Directory管理用のEC2インスタンスを簡単に作ることが出来る様になりました。

SSMオートメーションでは以下に示す一連の作業を自動化してくれます。

  1. EC2にアタッチするIAMロールの作成 (必要がある場合のみ)
  2. EC2にアタッチするセキュリティグループの作成 (必要がある場合のみ)
  3. EC2インスタンス作成
    • ディレクトリの配備されているサブネットに作成
  4. 作成したインスタンスの状態チェック
    • SSM PingStatusで状態チェック
  5. EC2インスタンスにRemote Server Administration Tools(RSAT)をインストール
  6. ドメイン参加

なお、SSMの機能を使う+RSATのインストールが発生するためEC2インスタンスはインターネットアクセス可能である必要があります。

試してみた

ここからは実際に試した結果を見てもらうほうが早いと思います。
私の検証用AWSアカウントの東京リージョンで新規にAWS Managed Microsoft AD環境を用意します。

まずAWS Managed Microsoft AD環境の作成は従来通り変わりありません。
今回Standard Editionのcorp.contoso.comドメインを作成しています。

作成したディレクトリ情報欄に新しく「ディレクトリ管理 EC2インスタンス」が増えているのが見て取れます。

そしてアクションで可能な操作に「ディレクトリ管理EC2インスタンスの起動」が増えており、ここから新しくEC2インスタンスを作成することができます。

「ディレクトリ管理EC2インスタンスの起動」をクリックすると以下の作成画面になります。

ここでは以下のパラメーターを指定します。

パラメーター名 内容 特記事項
キーペア名 EC2インスタンスで使うキーペア名
IAMインスタンスプロファイル名 EC2にアタッチするインスタンスプロファイル名 デフォルトでAmazonSSMDirectoryServiceInstanceProfileRoleというロールを新規作成する
セキュリティグループ名 EC2にアタッチするセキュリティグループ デフォルトでAmazonSSMDirectoryServiceSecurityGroupという名前のセキュリティグループを新規作成する
オートメーション引き受けロール SSMオートメーションの実行ロール
AMI ID 利用するAMI ID デフォルトでは最新の英語版Windows Server 2019が指定される
インスタンスタイプ EC2のインスタンスタイプ デフォルトはt3.medium
リモートアクセス CIDR セキュリティグループでRDP通信を許可するCIDR TCP 3389の通信許可を設定

ほとんどのパラメーターは初期値が設定されており、必要に応じて内容を変更してやります。
今回はキーペア名だけ変更して「送信」をクリックしてみます。

これでSSMオートメーションが実行されEC2の作成が開始されます。

オートメーションの詳細はこんな感じです。
AWS-CreateDSManagementInstanceドキュメントが実行され、最初に説明した6つの作業が実行されます。
(オートメーションのステップ数としては約40あります)

しばらく待ちエラー無くEC2が作成されると「ディレクトリ管理 EC2インスタンス」欄に作成したインスタンスIDが記載されます。

EC2の情報はこんな感じになります。

IAMロールAmazonSSMDirectoryServiceInstanceProfileRoleはこんな感じで

  • AmazonSSMManagedInstanceCore
  • AmazonSSMDirectoryServiceAccess

の2ポリシーがアタッチされます。

セキュリティグループAmazonSSMDirectoryServiceSecurityGroupはこんな感じ。
指定したCIDRでTCP 3389のインバウンド通信を許可してくれます。

そしてRDPでこのインスタンスに接続してやるとActive Directoryの管理ツールがインストール済みになっています。

より具体的には、SSMオートメーション内で実行されるコマンドは以下のため

# AWS-CreateDSManagementInstance ドキュメント内で実行されるコマンド
Install-WindowsFeature -Name GPMC,RSAT-AD-PowerShell,RSAT-AD-AdminCenter,RSAT-ADDS-Tools,RSAT-DNS-Server
  • GPMC
  • ActiveDirectory PowerShellモジュール
  • Active Directory管理センター
  • ADDSスナップインおよびコマンドラインツール
  • DNSサーバーツール

が自動インストールされます。

その他

導入手順は以上となります。
その他の点についてはざっくり以下の挙動となりました。

1. EC2が作成されるサブネット

この機能ではEC2を作成するサブネットを指定することができず、AWS Managed Microsoft ADと同じサブネットが自動的に選ばれます。

AWS Managed Microsoft ADのサブネットは2つ存在しますが、必ず最初のサブネットが選択されます。

# 選ばれるサブネットは以下のAWS CLIと等価
aws ds describe-directories --directory-ids d-xxxxxxxxx --query 'DirectoryDescriptions[0].VpcSettings.SubnetIds[0]'

2. SSMオートメーションに失敗した場合

たとえばインターネットアクセスできないサブネットでEC2を作成した場合はSSMオートメーションに失敗します。
この場合はオートメーション側の後処理でロールバック(EC2が削除)されるため中途半端なインスタンスが残るといったことは無い様です。

3. EC2インスタンスを削除する場合

AWS Managed Microsoft ADのコンソール上でEC2を削除する機能はありません。
EC2のコンソールからインスタンスを削除すればAWS Managed Microsoft AD側の表示もしばらく経ってから消えます。

ただ、いきなりEC2を削除してしまうとActive Directory上でコンピューターオブジェクトが残りっぱなしになってしまうので、EC2インスタンスを削除する際は

  1. Active Directoryから離脱
  2. EC2インスタンスの削除

の手順を選ぶと良いでしょう。

4. 日本語Windows Serverにしたい場合

AMIの指定はデフォルトで英語版Windows Server 2019 AMIを選ぶ様になっています。
これはPublic SSMパラメーター

{{ssm:/aws/service/ami-windows-latest/Windows_Server-2019-English-Full-Base}}

を指定することで実現していますが、残念ながらマネジメントコンソールのUI上ではこの形式をカスタマイズできない様です。
(UI上で選べるのは既存のAMI IDのみであり、SSMパラメーターのパスを選べない)

ただ、CLIから実行する分には任意のSSMパラメーターを選べました。
このため、たとえば「最新の日本語版Windows Server 2022」を使いたい場合、以下の様にAMI IDだけ差し替えてAWS CLIを実行してやれば良いです。

# AMI IDだけ差し替えてCloudShellから実行
aws ssm start-automation-execution --document-name "AWS-CreateDSManagementInstance" --document-version "\$DEFAULT" --parameters '{"DirectoryId":["d-xxxxxxxxxx"],"Tags":["{\"Key\":\"Description\",\"Value\":\"Created by AWS Systems Manager Automation\"}","{\"Key\":\"Created By\",\"Value\":\"AWS Systems Manager Automation\"}"],"KeyPairName":["your-keypair"],"IamInstanceProfileName":["AmazonSSMDirectoryServiceInstanceProfileRole"],"SecurityGroupName":["AmazonSSMDirectoryServiceSecurityGroup"],"AmiId":["{{ssm:/aws/service/ami-windows-latest/Windows_Server-2022-Japanese-Full-Base}}"],"InstanceType":["t3.medium"],"RemoteAccessCidr":["10.0.0.0/16"]}' --region ap-northeast-1

CLIコマンドのベースはマネジメントコンソールから参照可能なので割と容易に改変可能です。

上の例を実行した結果はこんな感じになります。

期待通り日本語Windows Server 2022環境になってくれました。

最後に

以上となります。

私は比較的AWS Managed Microsoft ADを検証することが多いため、このSSMオートメーションと同等の作業を何度も実施してきました。
慣れている人間にとっては余り苦にならない作業ではありますがそうでない方にとっては正直面倒だと思います。

今回の更新はそういった手間を省いてくれる便利機能ですので機会があればぜひ使ってみてください。