みなさん、こんにちは。サニービュー事業部の小寺です。
たまたま、プライベートサブネットでセッションマネージャーを使う機会があったので、改めて設定する方法や
そもそものセッションマネージャーのメリットについて、ご紹介いたします。

セッションマネージャーとは

AWS Systems Managerの一部の機能です。Systems Managerについての過去記事はこちらから。
Session Managerを利用して、Amazon EC2インスタンス、エッジデバイス、オンプレミスサーバー、仮想マシン (VM) を管理することができます。
セッションマネージャーを利用することのメリットとしては、IAMポリシーのみ設定すればアクセスを一元的に管理することができます。

EC2にログインするには、インスタンス作成時の秘密鍵を使って、アクセス元セキュリティグループで絞り込み、ログインする必要がありますが、セッションマネージャーがあれば、秘密鍵を使うことなく、アクセス元も毎回セキュリティグループに変更を加えることなく、EC2にアクセスすることができます。
他には、多くの AWS のサービスと連携しているので、AWSアカウントのセッション履歴を監査してログに記録することができます。
セキュリティ面でも安心できるサービスですよね。

利用するには、いくつか前提条件があります。
・セッションを介して接続するマネージドノードに AWS Systems Manager の SSM Agent バージョン 2.3.68.0 以降のインストールが必要
・接続するマネージドノードは、以下のエンドポイントへの HTTPS (ポート 443) アウトバウンド・トラフィックも許可する必要があります
ec2messages.region.amazonaws.com
ssm.region.amazonaws.com
ssmmessages.region.amazonaws.com
・Session Manager でオンプレミスマシンに接続する場合、オンプレミスマシンをマネージドインスタンスとして登録するためにハイブリッドアクティベーションを作成する際に AWS アカウントとAWS リージョンのアドバンストインスタンス層を有効にする。

特に対象としているのは、セキュリティと監査の体制を強化して、アクセス制御を一元化したい方や、ブラウザまたは AWS CLI からワンクリックかつSSH キーを使わない運用を考えている方です。

プライベートサブネットにあるEC2からはどうやってアクセスするの?

セッションマネージャーを使うには、外部のインターネット経由443から該当サブネットへアクセスできることが条件となります。
まずNAT Gatewayを使う、踏み台サーバを使う、VPCエンドポイントを使う、この3つの選択肢がありますよね。

今回は、料金的にも一番安いVPCエンドポイントを用意してセッションマネージャーを使うことを試してみました。
元々、NAT Gatewayを使っているのであれば、良いと思うのですが、今回の環境ではNAT Gatewayの利用はなかったのと、EC2と比較すると若干VPCエンドポイントの方が料金も安く、System Manager利用の推奨でもあるからです。

プライベートサブネットのEC2にVPCエンドポイントを設定して、セッションマネージャーを利用する

(1)VPCからエンドポイントを選びます。

(2)エンドポイントとして、以下の3つを作成します。
ec2messages.region.amazonaws.com
ssm.region.amazonaws.com
ssmmessages.region.amazonaws.com

サービスカテゴリでは「AWSのサービス」を選び、サービス名を検索して設定します。

(3)VPCは対象のプライベートサブネットがあるVPCを選びます。
その際に「DNS名を有効化」にチェックを入れます。

(4)サブネットでは、該当のプライベートサブネットを選びます。

(5)セキュリティグループはあらかじめ、作成しておきましょう。
インバウンドルールとして、HTTPS(443)を選び、接続元は対象のサブネットのIPアドレスを入力しておきます。

(6)対象のセキュリティグループを選び、VPCエンドポイントの作成を開始しました。

(7)が、・・VPCエンドポイントの作成中に以下エラーが発生しました。

(8)エラーを修正するために、DNS解決の有効化とDNSホスト名の有効化を行いました。

(9)残りの2つのエンドポイントも同様の手順で作成します。完了すると以下の状態となります。しばらく待てばSystems Managerにも表示がされるようになりました。