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