AWS Organizations 環境で DHMC と Quick Setup を使って EC2 のインベントリ情報収集を試してみた
はじめに
AWS Systems Manager で EC2 のインベントリ情報収集を組織全体で適用する方法として、Default Host Management Configuration(DHMC)と Quick Setup を使用する手法はよく知られています。私は実際に手を動かして確認したことがなかったため今回試してみました。検証を進める中でドキュメントやブログ記事を斜め読みでは気が付かなかった点を備忘録として共有します。
検証環境
AWS Organizations構成
├── 管理アカウント
├── 委任管理者アカウント(SSM 管理用)
└── メンバーアカウント(EC2 インスタンス配置用)
├── EC2インスタンス #1
├── EC2インスタンス #2
├── EC2インスタンス #3
└── EC2インスタンス #4
検証用 EC2 インスタンスの構成
インスタンス | IAM ロール | ネットワーク設定 | インスタンス状態 |
---|---|---|---|
EC2 #1 | なし | インターネット接続あり | 起動中 |
EC2 #2 | なし | インターネット接続あり | 起動中 |
EC2 #3 | なし | SSM API への経路なし | 起動中 |
EC2 #4 | なし | インターネット接続あり | 停止 |
SSM 管理のための EC2 に設定する権限(IAM ロール、IAM ポリシー)は DHMC を設定し利用します。
前提条件
今回の設定のために EC2 には以下の必要条件があります。SSM エージェントのバージョンが v3.2.52.0 以降ではないと対応していないなど諸条件があります。
詳細は Black Belt の資料をご確認ください。
SSM の委任管理者設定
最初に管理アカウントから Quick Setup のサービスを有効化し、管理権限を別の AWS アカウントへ委任しました。
Quick Setup 委任管理者の仕様
Quick Setup の委任管理者として登録すると、自動的に以下のサービスも委任されます。
- AWS CloudFormation StackSets の委任管理者
- Systems Manager の委任管理者
組織内の 1 つのアカウントを委任管理者として登録できます。アカウントを Quick Setup の委任管理者として登録すると、このアカウントも AWS CloudFormation StackSets と Systems Manager Explorer の委任管理者になります。
https://docs.aws.amazon.com/ja_jp/systems-manager/latest/userguide/quick-setup-delegated-administrator.html
委任管理者の設定が完了したら、以降は委任されたアカウントで作業を進めます。
管理アカウントから Systems Manager の画面を確認した様子
Quick Setup で DHMC を有効化
委任管理者アカウントにログインし、Quick Setup から DHMC を設定しました。
実施手順
- Systems Manager コンソール → Quick Setup
- Default Host Management Configuration を選択
デフォルトの設定で作成しました。
DHMC の適用範囲
仕様
- 全リージョン、全アカウントに一括適用される
- 個別の OU 指定オプションは存在しない
- 全体へ一括で適用
組織全体で統一的な管理を前提としている点は合理的です。ただし、段階的な導入を計画している場合は適用対象として OU やリージョンを選択できないので注意してください。
EC2 インスタンスの準備と DHMC の動作確認
別のメンバーアカウントに 4 台の EC2 インスタンスを用意し、DHMC の動作を確認しました。
インスタンス | IAM ロール | ネットワーク設定 | インスタンス状態 |
---|---|---|---|
EC2 #1 | なし | インターネット接続あり | 起動中 |
EC2 #2 | なし | インターネット接続あり | 起動中 |
EC2 #3 | なし | SSM API への経路なし | 起動中 |
EC2 #4 | なし | インターネット接続あり | 停止中 |
結果確認
委任管理者アカウントの SSM コンソールから確認します。
期待通りの動作
EC2 #1 と #2 は IAM ロールを設定していないにもかかわらず、マネージドノードとして認識されました。DHMC が自動的に必要な権限を提供しているため、従来必要だった IAM ロールの設定が不要になっています。
SSM API への経路がない EC2 #3 と、停止中の EC2 #4 は、アンマネージドノードとして表示されました。
アンマネージドノードの判定ついて
ドキュメントには判定条件の詳細が記載されていませんでした。停止中でアンマネージドノードと表示と判定されるのは困るときもありますが、現時点で SSM 管理できていないインスタンスを特定できる点では良かったです。
アンマネージドノードの診断レポートを作成
ダンロードしたレポートの内容
アンマネージドノードの確認方法は以下の記事も参考にしてください。
Host ManagementでInventory設定
DHMC の設定完了後、Quick Setup の Host Management 機能の中の 1 つインベントリ収集を設定しました。
実施手順
- Quick Setup から Host Management を選択
DHMC がすでに有効なため、インスタンスプロファイルのオプションの設定は不要です。
- リージョン: すべて
- すべてを選びましたが、大阪リージョンなど一部リージョンは非対応でした
- 適用先: 検証のため特定の OU 配下を指定
インベントリ収集の動作確認
Quick Setup で設定したインベントリ収集状況を確認します。
委任管理者アカウントでの確認
委任管理者アカウントの SSM コンソールからは、インベントリ情報は表示されません。
メンバーアカウントでの確認
EC2 インスタンスが存在するメンバーアカウントに切り替えると、インベントリ情報が表示されます。
各マネージドノードの詳細情報も確認できます。
インベントリ情報は各アカウント内でのみ参照可能です。委任管理者アカウントからの横断的な参照はできません。
横断的にみたいときのための S3 バケットを使った集約設定
残念ながら Quick Setup では、インベントリデータを S3 バケットに集約する設定は行えません。
組織全体でのインベントリ集約の仕組み(参考資料より)
画像引用: AWS Organizations環境でなるべく楽にSSMインベントリデータを集約したい | DevelopersIO
Quick Setup のインベントリ設定では、S3 バケットへの出力設定項目が提供されていません。
組織全体でインベントリデータを集約する場合は、CloudFormation でカスタムリソース(Lambda)の設定が必要です。詳細な設定方法については、以下の記事を参考にしてください。
まとめ
学んだことをまとめます。
- Quick Setup の委任管理者設定により、CloudFormation StackSets と Systems Manager も同時に委任される
- DHMC は組織全体に一括適用され、段階的導入はできない
- SSM エージェントのバージョン、IMDSv2 の必要要件があること
- インベントリの横断的な設定のための S3 バケット集約は Quick Setup から設定はできない
おわりに
DHMC と Quick Setup の組み合わせにより、組織全体の SSM 管理のための設定がとても簡単でした。とくに、EC2 の IAM ロールの設定が不要な点がいいですね。セッションマネージャーのために大方設定されている気持ちではいますが、大規模環境だとそうも言い切れないことがありまして。