はじめに
これまでは、EC2(Amazon Linux)を使うために、macからsshでログインしていました
> ssh -i [キーファイル] ec2-user@[パブリックIP]
キーファイルの管理が面倒だったり、ネットワーク環境によっては接続できないなど、いくつか問題がありましたが、少し前に「SysemsManager-セッションマネージャー」なるものがリリースされていました。管理コンソールからEC2にログイン出来、とても便利だと聞きましたので、ちょっと使ってみました
セッションマネージャの良いところ
-
マネジメントコンソールさえ使えれば、CLIが使える
-
キーファイルの管理が不要
-
追加料金不要
-
実行したコマンドの履歴を記録することができる
- この機能によって、本番環境の踏み台サーバが不要になりますね
詳細はこちらを参照ください ユーザーガイド:AWS Systems Manager Session Manager
セッションマネージャのイマイチなところ
-
ブラウザ上で使うため、Ctl-f が使えず emacsユーザは困る
- vimならいいんです!
- 普通の人にとって、特にイマイチなところは無いということですね
当然ですが、ファイルのやりとりはできません。S3を使いましょう
設定方法
とりあえず、サクッと設定してみましょう!
対象
「Qiita-test05」というインスタンスに対して セッションマネージャーを設定します
※test05 の"05"は気にしないでください。記事書くために5回作り直しただけです
クイックセットアップ
セッションマネージャを利用するためには、SM(Systems Manager)-Agentのインストールが必要です。さらに、ロールを付与する必要があります。とりあえず使ってみるのであれば、最近リリースされた[クイックセットアップ]が便利です。これで簡単に設定が完了します。
- まず、AWS Systems Managerの画面へ移動して[クイックセットアップ]を選択します
- [Edit all]ボタンを選んでセットアップします
- [Targets]エリアで対象のインスタンスを選択します
セッションマネージャの設定変更
このままセッションマネージャを使っても、操作ログをCloudWatch Logsに転送しようとしてCLIが固まります。S3バケットを作って切り替えます。
※操作ログが必要なければバケット作成は不要ですが、簡単に記録できる便利な機能なので設定しました
-
S3バケット作成
- S3 のメニューから [+バケットを作成する]を押してバケットを作ります。
-
バケットを暗号化します
暗号化は必須では無いですが、S3のデフォルト暗号化なら費用がかからずに暗号化できます。S3のメニューから、さっき作ったバケットを選択し、[プロパティ]タブから[デフォルト暗号化]を選択します
- 無償のSSE-S3を使います
-
セッションマネージャの設定
セッションマネージャを使ってみる
これで準備ができました。早速使ってみましょう。
- [セッション開始]ボタンで繋がります
- ssm-userというユーザで接続されていますが、ec2-userと同じでsudo可能なユーザです。もちろんec2-userにもスイッチできます
証跡の確認
Systems Manager -> セッションマネージャ の[セッション履歴]タブから、S3に格納された操作ログを見ることができます
もちろん、S3の画面からバケットを選択して参照することもできます
感想
踏み台いらずで大変便利です。しかも、従来のsshログインよりもセキュリティ的に優れた素晴らしい機能だと思います。今後sshログインは推奨されなくなるかもしれません。ただし、仕組みを理解して正しく設定しなければ、新たなセキュリティホールを作ることになります。権限の管理はこれまで以上に徹底する必要があります。