2018.12.30
セッションマネージャーとは、AWS Systems Managerの中の一機能で、EC2インスタンスに安全にSSH接続する機能を提供してくれる。従来であればEC2インスタンスのSSHポートに踏み台サーバーのセキュリティグループをインバウンドルールで指定して、必要なタイミングで踏み台サーバーを起動してSSH接続していた手間が一気に解消できる。
セッションマネージャーを使うことで、EC2インスタンスのSSHポートは完全に閉じてしまうことができる。
今回は試しに新しくEC2インスタンスを起動して、セッションマネージャーでSSH接続して使い勝手を検証してみた。
マネジメントコンソールのEC2管理画面からt2.microインスタンスを1台起動。 インバウンドルールなしのセキュリティグループを新たに作って割り当てる。22番ポートが開いていないので、当然ターミナルからSSH接続することはできない。
インスタンス名は「session-manager-test-20181230」とした。
これでEC2インスタンス側の設定は完了。
別タブでSSH接続が開くので、任意の操作を行う。
sh-4.2$ whoami
ssm-user
sh-4.2$ sudo su -
Last login: Sun Dec 30 01:33:39 UTC 2018 on pts/1
[root@ip-172-31-19-169 ~]#
sh-4.2$ /bin/bash
[ssm-user@ip-172-XX-XX-XXX bin]$
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して作業を行うユーザーは複数いる可能性があるので、その場合はどう設定したら良いのかもまた調べていきたい。