AWS Systems Managerのセッションマネージャーで安全なSSH接続を試してみる

2018.12.30

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

セッションマネージャーとは、AWS Systems Managerの中の一機能で、EC2インスタンスに安全にSSH接続する機能を提供してくれる。従来であればEC2インスタンスのSSHポートに踏み台サーバーのセキュリティグループをインバウンドルールで指定して、必要なタイミングで踏み台サーバーを起動してSSH接続していた手間が一気に解消できる。

セッションマネージャーを使うことで、EC2インスタンスのSSHポートは完全に閉じてしまうことができる。

今回は試しに新しくEC2インスタンスを起動して、セッションマネージャーでSSH接続して使い勝手を検証してみた。

セッションマネージャー経由でSSHするEC2インスタンスを作成する

マネジメントコンソールのEC2管理画面からt2.microインスタンスを1台起動。 インバウンドルールなしのセキュリティグループを新たに作って割り当てる。22番ポートが開いていないので、当然ターミナルからSSH接続することはできない。

インスタンス名は「session-manager-test-20181230」とした。

セッションマネージャーを使うためのIAMロールを作成する

AWS Systems Managerのセッションマネージャーで安全なSSH接続を試してみる

  • 「信頼されたエンティティの種類」は「AWSサービス」を、「このロールを使用するサービス」は「EC2」を選択して次へ進む

AWS Systems Managerのセッションマネージャーで安全なSSH接続を試してみる

  • 「AmazonEC2RoleforSSM」を選択して次へ進む

AWS Systems Managerのセッションマネージャーで安全なSSH接続を試してみる

  • 必要に応じてタグを追加して次へ進む

AWS Systems Managerのセッションマネージャーで安全なSSH接続を試してみる

  • ロールの名前と説明を自由に入力して作成を完了する

AWS Systems Managerのセッションマネージャーで安全なSSH接続を試してみる

EC2インスタンスにIAMロールを割り当てる

AWS Systems Managerのセッションマネージャーで安全なSSH接続を試してみる

  • 先ほど作成したIAMロールを選択して割り当てる。

AWS Systems Managerのセッションマネージャーで安全なSSH接続を試してみる

これでEC2インスタンス側の設定は完了。

AWS Systems Managerの管理画面を開く

AWS Systems Managerのセッションマネージャーで安全なSSH接続を試してみる

  • セッションマネージャーのページで「セッションの開始」を選択する

AWS Systems Managerのセッションマネージャーで安全なSSH接続を試してみる

  • SSH接続したいインスタンスを選択して、「セッションの開始」をクリックする

AWS Systems Managerのセッションマネージャーで安全なSSH接続を試してみる

別タブでSSH接続が開くので、任意の操作を行う。

AWS Systems Managerのセッションマネージャーで安全なSSH接続を試してみる

セッションマネージャーに関するあれこれ

SSHしているユーザーは何になるのか?



sh-4.2$ whoami
ssm-user

rootにスイッチできるのか?



sh-4.2$ sudo su -
Last login: Sun Dec 30 01:33:39 UTC 2018 on pts/1
[root@ip-172-31-19-169 ~]#

シェルにbashは使えるのか?



sh-4.2$ /bin/bash
[ssm-user@ip-172-XX-XX-XXX bin]$

EC2側の設定は必要ないの?

SSMエージェントはAmazon Linux/Amazon Linux 2ではデフォルトでインストールされているので設定は不要。

https://docs.aws.amazon.com/ja_jp/systems-manager/latest/userguide/ssm-agent.html

SSMエージェントの起動確認方法



$ sudo systemctl status amazon-ssm-agent
● amazon-ssm-agent.service - amazon-ssm-agent
   Loaded: loaded (/usr/lib/systemd/system/amazon-ssm-agent.service; enabled; vendor preset: enabled)
   Active: active (running) since Sun 2018-12-30 01:32:26 UTC; 47min ago
 Main PID: 3429 (amazon-ssm-agen)
   CGroup: /system.slice/amazon-ssm-agent.service
           ├─ 3429 /usr/bin/amazon-ssm-agent
           ├─12149 /usr/bin/ssm-session-worker root-XXXXXX
           ├─12157 sh
           ├─12158 /bin/bash
           ├─12179 sudo systemctl status amazon-ssm-agent
           └─12180 systemctl status amazon-ssm-agent

感想

実質IAMロールの割り当て作業だけで利用を始めることができた。SSHのポートを開けっ放しにしておくのは怖いし、必要なタイミングで踏み台サーバーを立てるのも時間と手間がかかるしで悩みどころとなっていた部分をセッションマネージャーでスマートに置き換えられそう。

サーバーにSSHして作業を行うユーザーは複数いる可能性があるので、その場合はどう設定したら良いのかもまた調べていきたい。