はじめに
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
を使用している旨を書いておくのが良いと思いました。