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

AWS Systems Manager の Session Manager は従来ユーザ権限が ssm-user 固定でしたが、これを指定できるようになりました!タグで IAM ユーザ・ロールごとに別に指定できるのもかゆいところに手が届くアップデートです
2019.07.10

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が発表されました