記事を書くきっかけ
自分「IAMユーザにIAMロールをアタッチして、権限制御することを考えていて〜」
同僚「IAMロールはAWSリソースにつけるもので、IAMユーザにはアタッチできないよ」
自分「確かに書いてあるな。だけど、以前の現場でマネコンにアクセスする際、環境ごとにリンクを踏んでスイッチロールした記憶があるぞ???」
ということで調べてみました。
検索してみた
- どうやら、あるアカウント内にあるIAMユーザについて、他のアカウントでのロールを引き受けることはできるよう。
- 例えば、ユーザ管理用アカウントを作っておき、別に○○システム動作用のアカウントを作るとすると、以下のような設定が必要です。
- ○○システム動作用のアカウント内で、以下のポリシー・ロールを作成する。
- ユーザ管理用アカウントのIAMユーザを信頼するポリシー
- 動作用アカウント内で必要な動作を許可するポリシー
- 上記のポリシーを付与したロール
- ユーザ管理用アカウント内では、以下のポリシーを作成する。
- ○○システム動作用アカウントのIAMロールを引き受けることを許可するポリシー
- ○○システム動作用のアカウント内で、以下のポリシー・ロールを作成する。
- これで、ユーザ管理用アカウント内のユーザで○○システム動作用アカウント内での作業が可能になります。
仕様が想定されるシチュエーション
- 私の経験上、本番環境・検証環境・開発環境など、環境ごとにアカウントを分割する例は多いです。
- そうなると、各アカウント内で個別にユーザを持つと管理が煩雑になるので、一つのアカウント内でユーザを一元管理できるというメリットがあります。
- 私の過去の現場では、URLでスイッチロール先のアカウント等の情報を持たせて、それを踏ませて権限制御していたようです。
なので、原則論(単一アカウント)としてはロールはリソースに付与されますが、アカウントをまたぐとそうでもない、ということかと理解しました。