セッションマネージャでEC2インスタンスにセキュアに接続
はじめに
案件でインフラの環境構築をする中で、定石な構成としてEC2にSSH接続をする場合は踏み台サーバを経由して接続するように構築していたのですが、アプリケーションを開発しているベンダー様から「EC2に直接接続したい」といった要望がありました。
AWS Systems Manager(以下:SSM)のSessions Managerを使用する事でEC2にSSHする為の22 番ポートを開ける必要がなくなる他、プライベートサブネットにある、グローバル IP をもたないEC2にも踏み台なしで SSH アクセスができるようになります。また、AWSコンソール上からも接続できるようになります。便利ですね。
前提
amazon linux2を使用
(amazon linuxとamazon linux2022では現状セッションマネージャーエージェントがインストールされていない)
概要
↑の図が元々の構成である踏み台サーバーを経由して、private subnetにあるEC2インスタンスにSSH接続するという形になります。EC2に接続するために、踏み台を経由しないといけないという二度手間の点や、インスタンスを2台立てているため料金もその分かかるという2点がデメリットとして挙げられます。
↑の図が実際にSession Managerを使用して、直接EC2に接続する方法となります。
図を見てわかるように、先程の踏み台を経由する方法であったデメリットが解消されています。そしてシンプルです。
Session Managerとは
Session Managerはフルマネージド型 SSM機能であり、AWS CLIなどを介してAmazon EC2インスタンス、オンプレミスインスタンス、および仮想マシン(VM)を管理できるもの。
自分の解釈としては、SSMを使用することで、元々アンマネージドサービスであったEC2インスタンスをマネージドインスタンスに設定し、そのマネージドインスタンスに接続する機能がSession Managerという認識でいます。
Session Managerのメリット、デメリット
従来のSSHと比べてのメリット,デメリットを挙げます。
メリット
・ SSH キー不要
・ セキュリティグループで SSH ポートの開放が不要
・ プライベートサブネットでも踏み台なしでアクセス可能
・ IAM によるアクセス制御が可能
引用:AWS Systems Manager セッションマネージャで EC2 インスタンスにセキュアにログイン
「セキュリティグループでSSHポートの開放が不要」がメリットな理由としては、
SSHのポートのソースIPを無駄に開放したり、設定ミスによる第三者の攻撃を防げるという点が挙げられます。
またCloudWatch Logsを使用することにより、
ログインのログ、イベントが取得可能(S3、Cloud Watch 等との連携)です。
上記に加え、
踏み台サーバー削除によるコスト削減(コストだけで見たらデメリットの可能性も有り)というメリットもあります。
デメリット
- Session Managerを使用するための設定がある
- 踏み台サーバーを削除でコスト削減かと思うが、構成によってはVPCエンドポイントを作成しなくてはならないので、コスト増してしまう可能性がある
(例として、EC2がプライベートサブネットにあり、インターネットへのアウトバウンド通信経路がない場合など)
Session Managerの設定方法
設定方法に関しては、以下のサイトを参考にして設定しました。
さらば踏み台サーバ。Session Managerを使ってEC2に直接SSHする
まとめ
今回は案件で使用した、SSMの機能であるSession Managerについてまとめました。
実際に使用していた感想としましても、踏み台を経由しないことによって手間が省けたり、
AWSのコンソール上から接続できる点もかなり有効的でした。
デメリットで挙げた設定についても、使用しているローカルPCにSession Manager Pluginをインストールしてしまえば、その他の設定は多くないので、とてもいい機能と思えました。
宣伝
パーソンリンクではエンジニアを募集しています!
Discussion