[ついに来た!?] AWS Systems Manager セッションマネージャーを OS ユーザー指定で使えるようになりました

AWS Systems Manager セッションマネージャーに待望の機能(のひとつ)がやってきました!

Session Manager launches Run As to start interactive sessions with your own operating system user account

今回のアップデートで IAM ユーザー・ロール単位でセッションマネージャ利用者時の OS ユーザを指定できるようになったため、例えばですが、

  • IAMロール SSM-User からアクセスした場合は sudo 権限無し、グループ user
  • IAMロール SSM-App からアクセスした場合は sudo 権限無し、グループ www
  • IAMロール SSM-Admin からアクセスした場合は sudo 権限あり

等ということができますね。各 IAMロールにスイッチできる IAMユーザ・ロールをコントロールすることで、より安全・柔軟に EC2 インスタンスの OS を運用することが可能になります。

ということで、さっそく試してみましょう!

前準備

まず、EC2 インスタンス上の amazon-ssm-agent を最新にしましょう。AWS Systems Manager の記事なので、ここはランコマンド( Run Command )をつかってさくっと実行しちゃいましょう。

今朝の時点で 2.3.672.0 が入りました。

設定

まずはこの機能を有効にします。セッションマネージャーの「設定」から「編集」をクリックします。

Enable Run As support for Linux instances というチェックボックスがあると思うので、これを ON にしてください。
チェックボックスの ON / OFF で画面の表示内容が変わるので、若干注意が必要です。

この下のフォームに OS ユーザー名を記入することも可能ですが、ここでは IAM ロール側でコントロールしてみます。

別タブを開くなどして IAM のコンソールを開き、ロール > 該当のロール名をクリック、下記の内容でタグを設定します。

キー
SSMSessionRunAs OSユーザ名(ここでは cm-user

問題なければ保存してください。
実際に Session Manager に設定が反映されるまでに少しラグがあるようなので、1〜2分待ってみてください。

設定は以上です!

上記の例を実運用で行うには、下記の手順が必要でしょうか。

  • セッションマネージャー経由で使う、複数の権限の OS ユーザを用意する(新規または既存)
  • 各ユーザに対応する IAM ロールを作成、それぞれに SSMSessionRunAs タグで対応する OS ユーザを指定する
  • 各ロールにスイッチできる IAM ロール・ユーザを制限する

試してみた

試すと言っても、見た目・やり方は従来のセッションマネージャーと変わりません。
アクセスしたあと id コマンドを実行してみると、確かにタグで指定した OS ユーザーになっていることが確認できますね。

なお試しに、 root などのユーザを指定してみたり、チェックボックスだけ ON にして何もユーザーを指定しないなどを試してみましたが、その場合はセッションマネージャーを開始してもプロンプトが表示されない(何も操作できない)状態となりました。

この辺りの挙動は詳細未確認ですが、不用意に root アクセスされないらしいのは良いですね。

まとめ

従来あった「セッションマネージャ経由だと、OS上の権限がひとつで使いづらい」という欠点が解消されたアップデートでした。

ただ、アクセス時点ではシェルが Bash(などのログインシェル)ではない、カレントディレクトリも /usr/bin 、というところはそのままです。

AWS Systems Manager のセッションマネージャで EC2 (Linux) にアクセスした際に気をつけたいこととその緩和策 | DevelopersIO

とはいえ先日発表された EC2 Instance Connect に続き、着実に進化している AWS の OS アクセス事情、今後も注目していきたいと思います!

EC2のSSHアクセスをIAMで制御できるEC2 Instance Connectが発表されました