yuj1osm's tech blog

クラウドやセキュリティなど

Session Managerを使用したEC2接続

Session Managerを使用したEC2接続の方法を紹介します。

Session Managerとは

AWS Systems Managerという、AWSリソースの構成や変更を管理するサービスがあり、Session Managerはその1機能です。
Session Managerを利用することで、従来のSSHを使わずに、AWSマネジメントコンソールからEC2へ接続することができます。

docs.aws.amazon.com

何が嬉しいか

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接続の方法を紹介しました。
設定項目が多いですが、順に追っていけばできるはずです。
うまくいかない場合は、ロールやセキュリティグループを見直してみてください。
セキュリティを考慮しながら、簡単にプライベートサブネットのインスタンスへ接続することができるため、ぜひ活用してみてください。