Posted at

初めてのAWS Session Manager


概要

 いまさらですが、先日開催されたJAWS DAYS 2019でSSH使わずにEC2に接続できるSession Managerを知り、現状自社サービスにおいてもSSH管理が課題になっていましたので、さっそく試してみました

 

 いつ、だれが、何をしたのかはすべてログ(実行結果も含めて)に保存されるので、問題発生時にトレース用としても使えます!

 設定自体は非常に簡単なので、どんなものなのかを試してみたい方は是非試してみてる価値はあります!

 ※以下の手順は新規インスタンスにSSM用ロールを追加していますが、既存インスタンスに追加する場合はこちらを参照ください

 ※すぐに試してみたい方向けの内容なので権限設定等はガバガバなのでご注意ください!


手順


ロールの作成


  1. 「IAM」-「ロール」-「ロール作成」

    1.create_role.png


  2. 「AWSサービス」-「EC2」ロールを選択

    2.select_role_type_ec2.png


  3. ポリシーから「AmazonEC2RoleforSSM」を選択

    権限の絞り込みをしたい場合は、「ポリシーの作成」から作成してください

    3.select_policy.png


  4. タグやロール名を付けて作成



EC2の作成

Session Managerからコントロールするためには、EC2にssm-agentがインストールされている必要があります。最新のAmazon Linux 2のAMIであれば最初から入っています


  1. インスタンスを新規作成し、インスタンスの詳細の設定で作成したIAMロールを選択すればOK!
    ec2_select_iam_role.png


Session Manager


  1. サービス「Systems Manager」-「セッションマネージャー」-「セッションの開始」

    ※実行中のセッションがあれば、セッションマネージャーの一覧に表示される

  2. 前述で作成したEC2インスタンスを選択し、「セッションの開始」

    session_start.png


  3. 新しいタブにターミナルが立ち上がる(若干動作がもっさり)

    接続ユーザはssm-userになるが、sudo実行が許可されている

    ※参考: [小ネタ]新機能Session Managerで使うssm-userの権限が気になった話



  4. ターミナルの「終了」を押下するとセッションが終了され、セッション履歴が保存されます

    操作ログをS3出力設定していれば、S3の指定していたバケットにログファイルが出力されます

    session_history.png


    操作ログ(サンプル)



以下のように標準出力された内容がすべてログファイルに出力されます


ssm-log

Script started on 2019-02-24 10:00:54+0000

[?1034hsh-4.2# /usr/bin/ssm-session-logger /var/lib/amazon/ssm/i-0ddd6efc384ff9fc9/sess
ion/orchestration/xxxxx-xxxxxxxx/Standard_Stream/ipcTempFile.log
false
Error occurred fetching the seelog config file path: open /etc/amazon/ssm/seelog.xml: no such file or directory
Initializing new seelog logger
New Seelog Logger Creation Complete

sh-4.2$ ls -la

total 127096

dr-xr-xr-x 2 root root 24576 Feb 24 09:54 .

drwxr-xr-x 13 root root 155 Jan 14 18:29 ..

-rwxr-xr-x 1 root root 41344 Jul 31 2018 [

-rwxr-xr-x 1 root root 107744 Sep 12 22:17 a2p

-rwxr-xr-x 1 root root 28712 Aug 2 2018 ac

-rwxr-xr-x 1 root root 28976 Jan 3 20:00 addr2line

~中略~

-rwxr-xr-x 2 root root 189440 Jul 27 2018 zipinfo

-rwxr-xr-x 1 root root 95896 Aug 1 2018 zipnote

-rwxr-xr-x 1 root root 99968 Aug 1 2018 zipsplit

-rwxr-xr-x 1 root root 2041 Jul 27 2018 zless

-rwxr-xr-x 1 root root 2859 Jul 27 2018 zmore

-rwxr-xr-x 1 root root 5343 Jul 27 2018 znew

lrwxrwxrwx 1 root root 6 Jan 14 18:29 zsoelim -> soelim

sh-4.2$ sh-4.2# exit
exit

Script done on 2019-02-24 10:02:40+0000