このページについて
AWS Systems Manager(SSM)のSession Managerを、IAMユーザ・ロールごとにOSユーザを指定して使うことができます。
今回はそれぞれの設定の流れをご紹介します。
前提
環境
Amazon Linux 2023
ami-012261b9035f8f938 (64 ビット (x86))
また、事前にテスト用OSユーザを追加してます。
$ sudo useradd test-user-for-iam-user $ sudo useradd test-user-for-iam-role
ssm-user
通常は ssm-user
でSession Manager接続することになります。
ただ、今回設定するRun As サポートを有効にすると、 ssm-user
を使用してセッションを開始することができなくなると、以下のドキュメント内に記載があります。
Run As サポートを有効にすると、Session Manager がマネージドノードの ssm-user アカウントを使用してセッションを開始することができなくなります。つまり、Session Manager が、指定された OS ユーザーアカウントを使用して接続に失敗しても、デフォルトの方法を使用した接続にはフォールバックしません。
Linux と macOS のマネージドノードで Run As サポートを有効にする
やってみた
Run As サポート設定
「Session Manager」の「設定」から「Linux インスタンスの Run As サポートを有効にする」を確認します。
デフォルトではチェックが入っておらず、無効となっています。
ec2-userを指定
試しに ec2-user
と設定してみると、無事 ec2-user
でSession Manager接続できました。
IAMユーザ・ロールでOSユーザを指定
さて、本題のIAMユーザ・ロールでOSユーザを指定する方法についてです。
Run As サポート設定ではOSユーザを指定せずに、IAMの方のタグで指定します。
そのため、ここではチェックだけ入れてOSユーザ名は空欄にします。
ちなみに
この状態でそのまま接続しようとすると、エラーになります。
デフォルトのユーザ名を入れなさいと言われます。
Invalid RunAs username. Set default username in Session Manager Preferences page.
IAMユーザの場合
対象のIAMユーザのタグに、「SSMSessionRunAs」タグを設定します。
ここでIAMユーザと紐付けたいOSユーザを値に入れます。
Key | Value |
---|---|
SSMSessionRunAs | test-user-for-iam-user |
このIAMユーザでSession Manager接続すると、無事 test-user-for-iam-user
で接続できました。
IAMロールの場合
ここではスイッチロールのケースで試してみます。
IAMロールの場合も、IAMユーザと同様に「SSMSessionRunAs」タグを設定します。
Key | Value |
---|---|
SSMSessionRunAs | test-user-for-iam-role |
スイッチしてSession Manager接続すると、無事 test-user-for-iam-role
で接続できました。
おわりに
Run As サポートの有効化とタグを使用することで、簡単にOSユーザを指定して使うことができました。
IAMユーザ・ロールのどちらでも指定可能ですが、スイッチロールする運用と合わせて考えてみると運用しやすくなるかもしれません。
ぜひ導入してみてください。