Session Managerを使用したEC2接続
Session Managerを使用したEC2接続の方法を紹介します。
Session Managerとは
AWS Systems Managerという、AWSリソースの構成や変更を管理するサービスがあり、Session Managerはその1機能です。
Session Managerを利用することで、従来のSSHを使わずに、AWSマネジメントコンソールからEC2へ接続することができます。
何が嬉しいか
HTTPSで接続できるため、SSHキーの鍵管理や通信許可が不要
HTTPSは空いているけど、社内ルールでSSHが制限されている場合があります。
また、SSHキーの管理にも気を使わなければならないため、運用負担が大きいです。
Session ManagerはHTTPSで接続できるため、手軽に導入することができます。
踏み台サーバが不要
パブリックサブネットやプライベートサブネットに配置しているEC2へもアクセスできるため、踏み台サーバが不要になります。
パブリックIPが不要
EC2へパブリックIPを付与しなくても接続することができます。
前提条件
EC2にSSM Agentの導入が必要
Amazon Linux 2などデフォルトで導入されているケースがありますが、導入されていない場合は手動でインストールする必要があります。
EC2にSystem Managerへの適切な権限が必要
AWS管理ポリシー「AmazonSSMManagedInstanceCore」を含む権限が、インスタンスにアタッチされている必要があります。
インターネットを経由しない場合は、適切なVPCエンドポイントが必要
インターネットを経由しない完全に閉じた環境でSession Managerを使用する場合は、以下のVPCエンドポイントを用意し、それらにアタッチするセキュリティグループでインバウンド443ポートを許可する必要があります。
- com.amazonaws.region.ssm
- com.amazonaws.region.ec2messages
- com.amazonaws.region.ssmmessages
Session Managerで接続してみる
IAMロールを作成
EC2がSystem Managerを使用するために、EC2にアタッチするIAMロールを作成します。
信頼されたエンティティタイプは「AWSのサービス」、ユースケースは「EC2」を選択します。
ポリシーは、AWS管理ポリシー「AmazonSSMManagedInstanceCore」を選択します。
ロール名を付けて、ロールを作成します。
EC2を作成
今回は、デフォルトでSSM Agentがインストールされている、Amazon Linux 2をプライベートサブネットに配置した構成にします。
任意の名前を付けて、Amazon Linux 2を選択します。
キーペアはなしを選択します。
プライベートサブネットを選択します。
セキュリティグループは、デフォルトでインバウンドSSHが設定されていますが、不要なので削除します。
インスタンスプロファイルは先ほど作成したロールを選択します。
インスタンスが起動できたので、一度接続を確認してみます。
VPCエンドポイントを設定していないので、この時点では接続できません。
セキュリティグループを作成
後に作成するVPCエンドポイント用のセキュリティグループを作成します。
インバウンドルールで、VPC CIDERからのHTTPSを許可します。
エンドポイントを作成
以下3つのエンドポイントを作成します。
- com.amazonaws.region.ssm
- com.amazonaws.region.ec2messages
- com.amazonaws.region.ssmmessages
サービスから検索し、選択します。
EC2を配置しているVPCとサブネットを選択します。
セキュリティグループは先ほど作成したものを選択します。
ポリシーはデフォルトのフルカスタムのままにします。
同じ要領で他のエンドポイントを作成します。
Session Managerで接続
先ほどと同様に、EC2の画面からSession Managerで接続してみます。
今度は「接続」ボタンがアクティブになっているので、「接続」ボタンを押下します。
プライベートサブネットに配置したインスタンスに、Session Managerを使用して接続することができました。
まとめ
Session Managerを使用したEC2接続の方法を紹介しました。
設定項目が多いですが、順に追っていけばできるはずです。
うまくいかない場合は、ロールやセキュリティグループを見直してみてください。
セキュリティを考慮しながら、簡単にプライベートサブネットのインスタンスへ接続することができるため、ぜひ活用してみてください。