AWS Session Manager接続でLinuxのOSユーザーを変えてみた
概要
この記事では以下の内容について説明します。
- EC2 Linux / Macインスタンスで、ssm-user以外でセッションマネージャーに接続する方法
- Session Managerの「Run As」機能について
「Run As」とは?

Run As機能はSession Managerを使用して接続するユーザーアカウントを指定できる機能です。
Session Managerを使用してLinux/macOSサーバーに接続する場合、
デフォルトでは、ssm-userアカウントが生成されて接続されます。
(ssm-userアカウントは、サーバー内にSSM-Agentをインストールする際に
自動で生成され、/etc/sudoers/に追加されます)
ssm-userは強い権限を持っているので、実際の運用で利用するには
別のOSユーザーで運用させたい場合もあると思いますし、IAMユーザーごとに
利用させたいOSユーザーを分けたいという場合もあると思います。
そのような場合、「Run As」を利用することで、
サーバー上に存在するOSユーザーアカウントを使用してセッションマネージャーに接続できるようになります。
ただし、インスタンス上に存在しないOSアカウントを利用しようとすると、接続は失敗します。
また、セッションマネージャーはrootユーザーを使用して接続することはできません。
使い方

「Run As」の使用方法は一般的に以下の通り
- Session Managerの設定から「Run As」を有効化します。
- IAMユーザーまたはロールに
SSMSessionRunAsタグを付けます。 - タグを付けたIAMユーザーでセッションを開始します。
「SSMSessionRunAs」タグが付いていないIAMユーザーは接続できないことに注意してください。
ハンズオン概要

ここでは、「Run As」を使用して特定のOSユーザーでセッションマネージャーに接続する方法を紹介します。
1つ目の方法は、Session Managerの設定でOSユーザーを指定する方法
もう1つの方法は、IAMユーザーにSSMSessionRunAsタグを付ける方法
スイッチロールにSSMSessionRunAsタグを付ける方法もありますが、ここでは省略します。
実装
-
AWS Systems ManagerのSession Manager画面から「Edit」を選択します。

-
「Enable Run As support for Linux instances」にチェックを入れると、「Run As」が有効になります。ここで「Operating system user name」の項目にOSユーザー名を入力すると、セッションを開始する際に常にそのユーザーで接続されるようになります。

-
IAMユーザーの場合は、
SSMSessionRunAsタグにOSユーザー名を指定します。
-
あとはEC2(Linux)にSession Manager接続を行えば、指定したOSユーザーでログインできます。(事前にLinux上でユーザーを作成していることが前提です)

まとめ
この記事ではSession Managerの「Run As」機能について説明しました。
特定のOSユーザーでセッションを開始したい場合などに便利ですので、ぜひ活用してみてください。
Discussion