- 公開日
- 最終更新日
Session ManagerのRun AsをIAM Identity Center環境で利用する
この記事を共有する

目次
はじめに
IAM Identrity Center(以降Identity Center)の情報を用いてAWS Systems ManagerのSession Managerにログインする方法をご紹介します。
結論から言うとRun Asとアクセスコントロールの属性という機能を利用して実現します。
Run As とは
Session ManagerにはRun Asという機能があります。
デフォルトではssm-user
にログインされますが、IAMユーザー毎に利用するOSユーザーを分けたいときに活躍するのがこのRun Asです。
IAMユーザーやIAMロールにタグ SSMSessionRunAs:${OSユーザー名}
を設定することで、指定したOSユーザーに直接ログインすることができます。
Linux と macOS のマネージドノードで Run As サポートを有効にする
IAM Identity Centerで利用するには
Run Asはとても便利な機能なのですが、困ったことにIdentity Centerによって自動作成されるIAMロール(AWSReservedSSO_~)にはタグを付与することができません。
公式ドキュメントにもこのように記載されていました。(機械翻訳なので日本語が少しおかしいですが、、、)
IAM Identity Center が作成する対応するロールにタグを適用することはできません
AWS IAM Identity Center リソースのタグ付け
ではどうしたらいいのかというと、Identity Centerのアクセスコントロールの属性というものを設定します。
アクセスコントロールの属性はABAC(Attribute Based Access Control)に基づいて許可を制御するために利用するものです。
AWSに限った話にはなりますが、ABACとは雑に言ってしまうと、タグによる制御です。Identity Centerによって作成されたロールにはタグが付与できませんが、この機能を使うことで同じようなことが実現できるわけです。
詳細は以下の記事が参考になるかと思います。
アクセスコントロールの属性
ABAC 認可で属性に基づいてアクセス許可を定義する
設定方法
設定方法は簡単です。
まず、Identity Centerの設定にある「アクセスコントロールの属性」を有効化します。
すると新しくタブが増えますので、属性のキーと値が追加できるようになります。
今回、キーはSSMSessionRunAs
、値は${path:userName}
を選択します。
※選択肢以外でも自由に入力することは可能です。
属性の値として使えるのは表示名やEmailアドレスなどがありますが、今回はユーザー名を利用します。 利用できる値の詳細はサポートされている外部 ID プロバイダ属性をご確認ください。
続いてSession Managerの設定をします。 設定の編集から「Linux インスタンスの Run As サポートを有効にする」をチェックして保存します。
あとはOSにIdentity Centerのユーザーと同名のユーザーを用意したら準備は完了です。
接続確認
Identity Centerのユーザー(TestUser01)と同じ名前のOSユーザーに直接接続できるか試してみます。
では実際にSession Managerでインスタンスに接続してみます。
Identity Centerのユーザーと同じ名前のOSユーザー(TestUser01)でログインされました!
属性のキーを設定したけどうまく接続できないという方は40分くらい待ってみてください。
アクセスコントロールの属性は設定しても即時反映されないみたいです。
まとめ
このようにIdentity Center環境であってもSession ManagerのRun Asを利用することができます。
アクセスコントロールの属性はこの機能以外にも様々な権限管理に利用できますのでIdentity Centerを利用している方は検討してみてください。
この記事がどなたかのお役に立てれば幸いです。
この記事は私が書きました
渡邉 和貴
記事一覧CCoEをやってます。森と山に出没します。 好きなAWSサービスは IAM と CloudFormation
