🌟

AWS Session Manager接続でLinuxのOSユーザーを変えてみた

2024/02/12に公開

https://www.youtube.com/watch?v=3e1b7H_m_T0

概要

この記事では以下の内容について説明します。

  • EC2 Linux / Macインスタンスで、ssm-user以外でセッションマネージャーに接続する方法
  • Session Managerの「Run As」機能について

「Run As」とは?

ssm-runas05

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ユーザーを使用して接続することはできません。

使い方

ssm-runas06

「Run As」の使用方法は一般的に以下の通り

  1. Session Managerの設定から「Run As」を有効化します。
  2. IAMユーザーまたはロールにSSMSessionRunAsタグを付けます。
  3. タグを付けたIAMユーザーでセッションを開始します。

「SSMSessionRunAs」タグが付いていないIAMユーザーは接続できないことに注意してください。

ハンズオン概要

ssm-runas07

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

実装

  1. AWS Systems ManagerのSession Manager画面から「Edit」を選択します。

    ssm-runas01

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

    ssm-runas02

  3. IAMユーザーの場合は、SSMSessionRunAsタグにOSユーザー名を指定します。

    ssm-runas03

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

    ssm-runas04

まとめ

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

参考リンク

Turn on run as support for Linux and macOS managed nodes

Discussion