概要
この記事では以下の内容について説明します。
- EC2 Linux / Mac インスタンスで、ssm-user以外でセッションマネージャーに接続する方法
- Session Managerの「Run As」機能について
「Run As」とは?
Session Managerを使用してLinux/MacOSサーバーに接続する場合、
デフォルトではssm-user
アカウントを自動生成し、接続されます。
(ssm-user
アカウントは、サーバー内にSSM-Agent
をインストールする際に
自動で生成され、以下の様に/etc/sudoers.d/
に追加されます)
[root@ip-172-31-34-95 sudoers.d]# ll
total 8
-r--r-----. 1 root root 128 Oct 31 23:55 90-cloud-init-users
-r--r-----. 1 root root 58 Nov 1 00:13 ssm-agent-users
[root@ip-172-31-34-95 sudoers.d]# cat ssm-agent-users
# User rules for ssm-user
ssm-user ALL=(ALL) NOPASSWD:ALL
ssm-user
は強い権限を持っているので、実際の運用で利用するには
別のOSユーザーで運用させたい場合もあると思いますし、IAMユーザーごとに
利用させたいOSユーザーを分けたいという場合もあると思います。
そのような場合、「Run As」を利用することで、
サーバー上に存在するOSユーザーアカウントを使用してセッションマネージャーに接続できるようになります。
ただし、インスタンス上に存在しないOSアカウントを利用しようとすると、接続は失敗します。
また、セッションマネージャーはrootユーザーを使用して接続することはできません。
使い方
「Run As」の使用方法は一般的に以下の通り
- Session Managerの設定から「Run As」を有効化します。
- IAMユーザーまたはロールに
SSMSessionRunAs
タグを付けます。 - タグを付けたIAMユーザーでセッションを開始します。
「SSMSessionRunAs」タグが付いていないIAMユーザーは接続できないことに注意してください。
「Run As」の設定手順
ここでは、「Run As」を使用して特定のOSユーザーでセッションマネージャーに接続する方法を紹介します。
- Session Managerの設定でOSユーザーを指定して接続
- 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ユーザーでセッションを開始したい場合は便利な機能ですので、ぜひ活用してみてください。