こんにちはますのです。
LT資料作成のためにAWS Systems Managerを扱っており、ホスト管理設定 (DHMC、Default Host Management Configuration) を有効化するだけでSessionManagerとかが利用できるのかと検証しております。
EC2インスタンスをSystemsManager管理する場合にIAMロールが必要無くなったので試してみる(2023.2アップデート)
繋がらない…。
ということで、SessionManagerの接続までを確認します。
原因:KMSキーが利用出来ない状態
AWS公式のナレッジセンターを見てみます。
エラー:「無効な KeyName: セッションは次の理由で終了されました: NotFoundException: 無効な keyId xxxx」
セッションを暗号化するための Session Manager の詳細設定で指定された AWS KMS キー Amazon リソースネーム (ARN) が有効であることを確認します。使用可能なキー ARN を表示し、Session Manager の詳細設定で指定された ARN が、利用可能な ARN の 1 つと一致することを確認します。詳細については、キー ID と ARN の検索をご参照ください。
エラーの内容通り、KMSキーが利用出来ない状態とのことなのでSessionManagerで設定されているKMSの設定を確認します。
「カスタマー管理型のキー」を確認
AWSマネジメントコンソール > Key Management Service (KMS) > カスタマー管理型のキーをチェックします。
念のためにAWSマネージド型キーも確認しますが、該当のKMSキーIDは見当たらず。
マネージド型キーを確認しますがもちろん見当たらず。どこから出てきたキーIDなのかと不思議な気持ちでいっぱいです。
Session Managerは同じAWSアカウントで昔から利用していたので使えると思っていたので詰まりました。
Session ManagerのKMS暗号化設定を確認する
KMSキーIDが存在しないことを確認したので、大元となるSession Managerの設定を確認しましょう。
AWS Systems Manager > セッションマネージャー > タブ:設定 をクリック
設定した覚えが無いですが「KMS encryption:Enabled」となっています。
きっとハンズオン参加とかの時に何かの拍子で有効化したのでしょう。
「編集」をクリックして詳細を確認します。
「Select a KMS key」が選択されているものの、何も選択されていません。
カスタマー管理型キーが無効だったので当然ですね。
裏で持っていた情報でKMSキーのARNにアクセスしてエラーが出てたようです。

Session ManagerのKMS暗号化を無効化する
今回は検証目的なので無効化してしまいます。
「KMS encryption:Disabled」と変更されたので無効化完了です。
KMSキーを無効化しますが「TLS1.2暗号化」は有効化されるとメッセージを確認しました。
通信側の暗号化はデフォルトでされているようです。
以下のような要件があるときはKMSキー暗号化を利用したほうが良さそうです。
- SessionManagerで利用される際の保管データを暗号化する
- 暗号化出来る利用者を絞りたい
- EC2インスタンス⇔ローカルPC間で機密データを扱う
- CloudTrailのログでキーの使用を監査したい
- 暗号化キーの有効/無効を自分たちで管理したい
https通信での疎通で許容されないセキュリティ要件の場合は利用を検討しましょう。
Session Managerで接続出来るか確認する
実際に接続出来るか確認してみましょう。
接続は「①Session Manager」、「②EC2ダッシュボード」のどちらの画面からでも同様にアクセス出来るので分かりやすい方でアクセスしましょう。
- ①:AWS Systems Manager > セッションマネージャ > [セッションの開始] をクリック
- ターゲットインスタンス:対象のEC2インスタンスを選択 > [Start session] をクリック
- ②:EC2 > インスタンス > 対象のEC2インスタンスを選択 > [接続] をクリック
- タブ:セッションマネージャー > [接続]をクリック
以下のようにブラウザ上でアクセスが出来ました。
参考:対象のEC2インスタンスのセキュリティグループ
対象のEC2インスタンスがSystems Managerのエンドポイントへ443通信でアクセス出来る設定としています。
- インバウンド:設定なし
- アウトバウンド:https(TCP) 443 0.0.0.0/0
今回はパブリックIPを付与し、インターネットゲートウェイ経由で通信となっています。
プライベートサブネットの場合はVPCエンドポイントの作成や、NAT経由でのアクセスが必要となるため割愛です。
結論:デフォルトのホスト管理設定有効化でSession Managerは利用可能
利用出来ないかと思いましたが、ただ単純にKMSキーの設定がおかしかっただけでした。
ホスト管理設定 (DHMC、Default Host Management Configuration)を行うことで、EC2インスタンスへのIAMロール設定が不要になるのは有難いです。