[ついに来た!?] AWS Systems Manager セッションマネージャーを OS ユーザー指定で使えるようになりました
AWS Systems Manager セッションマネージャーに待望の機能(のひとつ)がやってきました!
- Session Manager launches Run As to start interactive sessions with your own operating system user account
- Enable Run As Support for Linux Instances - AWS Systems Manager
今回のアップデートで 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 アクセス事情、今後も注目していきたいと思います!