はじめに
2023/10/13にSystems Managerのデフォルトのホスト管理設定(DHMC、Default Host Management Configuration)といった機能が登場したようなので、何が便利になったのか試してみようと思います。
また、今回の記事は一部以前の記事を前提としているため、以下を見てから今回の記事を見ることをおすすめします。
デフォルトのホスト管理設定とは
Systems Managerの機能の一つとなり、DHMC(Default Host Management Configuration)と言うそうです。
通常、Session ManagerやPatch Managerなどの機能を使うためには、対象のインスタンスにSSMのポリシーを許可したIAMロールを割り当てた上で接続する必要がありましたが、DHMCを使うことで、なんとインスタンスにIAMロールを割り当てなくてもSession Managerなどが使えるようになります。
また、SSMのポリシーが許可されていないIAMロールが割り当てられている場合でも接続ができるそうです。
詳細は以下AWS公式ドキュメントを参照してください。
DHMCの有効化
以下よりDHMCを作成&設定を行い、使える状態にしていこうと思います。
DHMCの作成
DHMCの設定は「AWS Systems Manager」のダッシュボード画面から、「高速セットアップ」→「ライブラリ」タブの、「Default Host Management Configuration」から「作成」を行います。
特に設定項目もないため、デフォルトのまま「作成」を行います。
また、以下説明文に記載されている通り、AWS組織内のすべてのインスタンスがSystems Managerに接続できるようにセットアップされるため、もし組織内全ては対象にしたくないといった場合は注意してください。
DHMCの設定
作成したDHMCの設定を行うため、「高速セットアップ」→「設定」タブから先程作成したDHMCを選択し、「アクション」から「設定を編集」を選択します。
「デフォルトのホスト管理設定を有効にする」を有効にすることで、DHMCで使用するIAMロールを選択または作成できます。
予め作成しておいたIAMロールを選択しても良いですが、今回は、「AWSSystemsManagerDefaultEC2InstanceManagementRoleを作成(推奨)」を選択して、「設定」を選択します。
ちなみに推奨で作成した場合、以下のようなIAMポリシーが作成されます。
なお、こちらで作成されるIAMロールは、対象のEC2インスタンスに付与されるわけではなく、DHMCの機能に割り当てられるようなので、EC2インスタンスに付与されているIAMロールには影響はありません。
Session Managerでの接続確認
DHMCの設定としては完了したため、以下よりSession Managerによる接続確認を行っていきます。
DHMCで今までの手間が省かれるとのことなので、今回は以下3パターンでSession Managerの接続ができるのかを確認してみようと思います。
- パブリックサブネットのEC2インスタンスへの接続(SSM不許可IAMロールの付与)
- パブリックサブネットのEC2インスタンスへの接続(IAMロールなし)
- プライベートサブネットのEC2インスタンスへの接続
パブリックサブネットのEC2インスタンスへの接続(SSM不許可IAMロールの付与)
はじめにSSMを許可していないIAMロールがEC2インスタンスに付与されている場合の確認を行います。
接続はSession Managerの画面から行うこともできますし、「フリートマネージャー」の画面から対象のEC2インスタンスを選択→「ノードアクション」から「接続」→「ターミナルセッションを開始する」でも接続できます。
結論としては、SSMが許可されたポリシーが無くても接続することができました。
パブリックサブネットのEC2インスタンスへの接続(IAMロールなし)
次に、IAMロールがそもそも付与されていないEC2インスタンスに対して接続を行ってみようと思います。
こちらも結論としては、IAMロールが付与されていなくても接続することができました。
プライベートサブネットのEC2インスタンスへの接続
最後にNATゲートウェイもSystems Managerのエンドポイントも存在しないプライベートサブネットに存在するEC2インスタンスに対して接続を行ってみようと思います。
こちらは結論として、IAMロールが付与されていても、付与されていなくても、対象のEC2インスタンスに接続することはできませんでした。
DHMC機能を使ったSession Managerログインまとめ
3パターンの接続を試してみた結果として、IAMロールに関してはSSMの許可ポリシーが存在しなくても接続することができましたが、Systems Managerとネットワーク的には繋がる必要があるため、プライベートサブネットのEC2インスタンスへの接続は前回紹介したようにNATゲートウェイを設定するか、Systems Managerへのエンドポイントの設定が必要となります。
但し、接続できるパターンであっても、DHMC設定直後だったからなのか、EC2インスタンスからSystems Managerへの通信が無かったからなのか、すぐにEC2インスタンスに接続できず、再起動することで接続できるようになったので、DHMCを導入した場合は、念のため、EC2インスタンスの再起動も行っておいたほうが良いかと思います。
ネットワーク的に接続できない状態のEC2インスタンスは、「フリートマネージャー」の画面から見ると「接続が失われました」と表示されているため、接続できない対象は以下の画面を見ると良いです。
おわりに
Systems Managerと通信できないセグメントに対象のインスタンスが存在する場合は接続できませんが、IAMロールが未設定、またはSSMの許可がされていない場合でも接続できるようになることから、構築時に何も考えずとりあえずDHMCを有効にするというのでも良いかと思いました。
但し、DHMCの機能を知らない人や、新たにプロジェクトに参画してきた人が見た場合、IAMロール&許可ポリシーなしで接続できてしまうことに混乱してしまう可能性もあるので、やはり明示的にSSMポリシーを許可しておいたり、設計書等にDHMCを使用している旨を書いておくのが良いと思いました。







