こんにちは、技術3課の城です。
今回はAWSでActiveDirectory(以降、AD)環境にてSSMを利用する上でハマったポイントがあったので、共有したいと思います。
最初にまとめの3行
長くなりそうなので、最初にまとめておきます。
- SSMをVPCエンドポイント経由で利用するにはAmazonProvidedDNSでの名前解決が必要
- AD環境での解決策は条件付きフォワーダーの設定
- 名前解決した際に返されるIPアドレスはフォワーダー先のAmazonProvidedDNSのあるVPCのVPCエンドポイント
ハマったポイント
とある環境にてSSM自体が利用が出来なくなる事象が発生していました。
原因を確認したところ、VPCエンドポイントを構築しているにもかかわらず、外部のIPに対してアクセスしようとしていることが原因でした。
更に調べたところ、インターフェースVPCエンドポイントを利用するにはAmazonProvidedDNSを利用する必要があるようです。
一般的にADサーバーにDNSサーバーを同居させることが多いと思いますが、デフォルトのDNS設定(AmazonProvidedDNS)から向け先を変更したことが原因でした。
実際にssm.ap-northeast-1.amazonaws.comを名前解決してみると、グローバルIPアドレスが返されていました。
構成パターン図
AWS環境にDNS(AD)サーバーが存在する場合
AWS環境のサーバー群がAWS環境のDNS(AD)サーバーを参照します。
オンプレミス環境にDNS(AD)サーバーが存在する場合
AWS環境のサーバー群がオンプレミス環境のDNS(AD)サーバーを参照します。
AWS環境にDNS(AD)サーバーが存在する場合の対応方法
こちらはシンプルで、DNSサーバーの条件付きフォワーダーの設定にて対応可能です。
※そもそものフォワーダーをAmazonProvidedDNSを向けている場合は対応不要ですが、今回は別のDNSサーバーを向いている前提で進めます。
SSMの場合は設定が必要なドメインは下記となります。(東京リージョンの場合)
- ssm.ap-northeast-1.amazonaws.com
- ssmmessages.ap-northeast-1.amazonaws.com
- ec2.ap-northeast-1.amazonaws.com
- ec2messages.ap-northeast-1.amazonaws.com
条件付きフォワーダーの設定
1.DNS(AD)サーバーにRDPログインします。
2.[スタートメニュー]⇒[Windows 管理ツール]⇒[DNS]とクリックしDNS マネージャーを開きます。
3.[条件付フォワーダー]を右クリックし、[新規条件付きフォワーダー]をクリックします。
4.DNSドメインに上記の対象ドメイン、IPアドレスにAmazonProvidedDNSのIPアドレスを入力し、[OK]をクリックします。
例ではAmazonProvidedDNSのIPアドレスは10.0.0.2となっていますが、VPCのCIDRの第4オクテットに2を足したアドレスとなります。
詳細は下記ドキュメントに記載があります。
https://docs.aws.amazon.com/ja_jp/vpc/latest/userguide/VPC_DHCP_Options.html#AmazonDNS
5.項3及び4を登録するドメイン全てで実施します。
6.結果確認
ssm.ap-northeast-1.amazonaws.comを名前解決すると、プライベートIPアドレスが返されています。
オンプレミス環境にDNS(AD)サーバーが存在する場合の対応方法
こちらの場合は、AmazonProvidedDNSはVPC外からのDNSクエリを受け付けないという仕様があるため、Route53リゾルバーのインバウンドエンドポイントを条件付きフォワーダーの宛先として設定する必要があります。
https://docs.aws.amazon.com/ja_jp/Route53/latest/DeveloperGuide/resolver.html#resolver-overview-forward-network-to-vpc
Route53リゾルバー インバウンドエンドポイントの作成
VPCエンドポイントを作成したVPCにインバウンドエンドポイントを作成します。
1.Route53のダッシュボードにて[Inbound Endpoints]をクリックします。
2.[インバウンドエンドポイントの作成]をクリックします。
3.インバウンドエンドポイントの作成画面にて、必要項目を記載、選択していきます。
- エンドポイント名
- VPC
- エンドポイントにアタッチするセキュリティグループ
- IPアドレス
- アベイラビリティゾーン
- サブネット
- IPアドレス指定 or 自動
※IPアドレスは2つ以上指定する必要があります。
項目の記載、選択が出来たら、[送信]をクリックします。
作成中・・・
出来ました!
5.IDをクリックすると詳細を見ることが出来ます。
赤枠がインバウンドエンドポイントのIPアドレスとなります。
条件付きフォワーダーの設定
オンプレミス環境のDNS(AD)サーバーに条件付きフォワーダーを設定します。
設定方法は前述と同様ですが、フォワード先にインバウンドエンドポイントのIPアドレスを設定すればOKです。
各VPCそれぞれのVPCエンドポイントを利用するには
今回紹介した構成では一つのVPCのエンドポイントを利用しています。
各VPCに作成した、それぞれのVPCエンドポイントを利用させたい場合は、下記の条件が必要なようです。
- 各VPCにDNS(AD)サーバーを配置
- 各VPCで異なる条件付きフォワーダーを設定(配置されたVPCのAmazonProvidedDNSを設定)
- メンバーサーバーのDNSの向け先を各VPCに配置されたDNS(AD)サーバーを設定
終わりに
例えばRDSなどはパブリックの名前解決でプライベートIPアドレスを返してくれるなど、AWSでは上手い具合にやってくれるところも多いですが、やはり利用するサービス仕様をきちんと考慮して設計することが重要ですね。
どなたかの助けになれば幸いです。
城 航太 (記事一覧)
営業部カスタマーサクセス課・課長
AWSへの移行、AWSアカウントセキュリティ、ネットワーク広く浅くといった感じです。最近はAmazon WorkSpacesやAmazon AppStream2.0が好きです。APN Ambassador 2019,2020