このページについて

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ユーザ・ロールのどちらでも指定可能ですが、スイッチロールする運用と合わせて考えてみると運用しやすくなるかもしれません。
ぜひ導入してみてください。