必見の記事

SSH不要時代がくるか!?AWS Systems Manager セッションマネージャーがリリースされました!

AWS Systems Mangerに新機能 セッションマネージャーが追加されました! この機能はマネジメントコンソール上からEC2インスタンス内のbash・PowerShellを実行できる機能です。操作ログをS3・CloudWatch Logsに保存することも可能です。
2018.09.12

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

おはようございます、加藤です。す...すごい機能がリリースされました!AWS Systems Mangerの新機能でセッションマネージャーという機能です。

一言で言えば、「EC2インスタンスにSSH・RDPで接続せずにブラウザ上からCLI操作ができる機能」です。ブラウザがSSHクライアントとして動作している訳でなく、制御はSSMによって実現されています。

セキュリティグループのインバウンド設定や踏み台ホストを作ること無く安全にEC2インスタンスへ接続できちゃいます!テンション高まる!

やってみた

前提

  • SSMエージェントのバージョンが2.3.12以上である必要があります(2018/09/12 09:00 時点で起動したインスタンスはアップデート必要と思われます)
    • 作成済みのインスタンスの場合はRun CommandのAWS-UpdateSSMAgentを使うなどしてバージョンアップしてください
  • EC2インスタンスのIAMロールにAWS管理ポリシーAmazonEC2RoleforSSMが割り当てられてる
    • より詳細に権限管理したい場合はこちらを参考にしてください
  • EC2インスタンスからSSMエンドポイントへアクセスができること
    • インターネットへのアウトバウンド or VPC Endpoint(SSM)

SSMエージェントのバージョンが古い場合のメッセージ

セッションの開始(Amazon Linux2)

Systems Mangerの画面を開きます。

https://ap-northeast-1.console.aws.amazon.com/systems-manager/session-manager?region=ap-northeast-1

アクションのメニューにセッションマネージャーが追加されていますね、セッションの開始をクリックします。

対象インスタンスの選択を求められます。チェックを入れてセッション開始をクリックします。

これだけで使えちゃうんです!

コマンドを打って状態を調べてみました。

  • ユーザーは ssm-user
  • cd で カレントディレクトリを変更しても維持される
  • sudoで昇格が可能(パスワード無し)
  • 日本語入力が可能(echo "ああああ"が動作した)

セッションの開始(Windows Server 2016)

Windowsの場合もAmazon Linux2とセッション開始までの手順は同じです。

Windows Server 2016ではPowerShellが起動しました。

  • ユーザーは ssm-user
  • cd で カレントディレクトリを変更しても維持される
  • cmd.exeでコマンドプロンプトも使用可能
  • 日本語入力が可能(echo "ああああ"が動作した)

操作ログの保存(S3 & CloudWatch Logs)

セッションマネージャーはCLIの操作ログをS3 と CloudWatch Logsに保存することができます。

保存用のS3バケットとCloudWatch Logsを用意してから試してみました。EC2インスタンスのIAMロールにアクセス権限が必要です、AWS管理ポリシーのAmazonEC2RoleforSSMなどを使用せず権限を最小化している場合はご注意ください。

設定を有効にした後、セッションを開始します。

コマンドを実行してセッションを終了します。(exit or 右上の終了ボタン)

セッションマネージャーはセッション履歴が一覧で見ることができます。出力したログをここからアクセスするのが簡単です。

S3

CloudWatch Logs

リアルタイムでログを出力している訳ではなく、セッション終了時のEC2インスタンスが出力している気がしますね、後ほどドキュメントに明記されていないか確認してみます。

ローカル端末から操作

ローカル端末から操作したい方は、こちらのブログをどうぞ!!

AWS Systems Manager Session Manager for Shell AccessでMacからLinux EC2インスタンスに端末でアクセスする

参考情報

あとがき

過去にこんなブログも書いていましたが、このセッションマネージャーは、個人的にまさに!待ち望んでいた機能です!

Systems ManagerのRunCommandでSSHを使わずにShellライクにコマンドを実行する

この機能によって下記の作業から開放されます。

  • セキュリティグループのインバウンド
    • 管理者のグローバルIPアドレスを調べてSSH・RDPを開放
  • 公開鍵・秘密鍵の受け渡し
    • 作成と保管は必須ですが、セッションマネージャーでのアクセスが前提なら複数人でインスタンスを管理する場合でも鍵の受け渡しが不要

みなさんも、ぜひぜひ活用してみてください!