面倒な IAM ロール設定にサヨナラ!AWS Role Manager 登場!
こんにちは、しぃちゃんだよ!今日は AWS から、エンジニアなら思わず「地味だけどうれしい!」ってなるニュースが来たよ。サービスを使い始めるときについ足止めされがちな IAM ロール設定が、ぐっと楽になるお話なの!
AWS What's Newなにが発表されたの?
AWS What's New が伝えているのは、AWS Identity and Access Management(IAM)の新機能「IAM role manager」が一般提供(GA)になったというニュースだよ。
role manager は、対応している AWS のサービスコンソールでリソースを作るときに、必要な IAM ロールを AWS が自動で作成してアタッチしてくれる機能なの。アカウントの中にすでに条件を満たすロールがあれば、新しく作らずにそれを再利用してくれるんだって。作られるロールは AWS 管理のテンプレートから生成されていて、信頼ポリシーや権限があらかじめ定義されているみたい。
対応しているのは今のところ 6 つのサービスコンソールで、AWS Lambda と Amazon EventBridge が含まれているよ。利用できるリージョンは、AWS GovCloud(US)リージョンと中国リージョンを除く、すべての AWS リージョンなんだって。
今までどうだったの?
今までは、AWS のサービスを使い始めるときにまず IAM でつまずきがちだったの。サービスがユーザーに代わってリソースへアクセスするには IAM ロールが必要で、信頼ポリシーを書いて、必要な権限を選んで、アタッチして……という一連の作業を、ロールが必要になるたびに自分で行わなきゃいけなかったんだよね。
よくあるパターンの設定を毎回手作業でやるのは地味に時間を取られるし、IAM に慣れていない人にとってはサービスを触り始める前のハードルにもなっていたの。
これで何が変わるの?
role manager を有効にしておけば、リソースを作るのと同じ流れの中でロールが自動的に用意されるから、IAM の経験がなくても数分でサービスを動かし始められるようになるよ。
例えば Amazon EventBridge のルールを作るとき、今までならターゲット(Amazon SQS のキューや Amazon SNS のトピックなど)を呼び出すためのロールを別途作ってからルール作成の画面に戻る必要があったの。role manager が有効なら、ルールとターゲットを指定して作成ボタンを押すだけで、必要なロールが裏側で自動的に用意されて、ロール作成の画面を一度も開かずに済んじゃうんだって。
AWS Lambda のように「実行時にどんな権限が必要になるか事前にはわからない」タスクにも対応していて、この場合は AWS 管理ポリシーの PowerUserAccess がロールにアタッチされるの。IAM や AWS Organizations、アカウント設定を管理する権限は含まれないように設計されているから、実行ロールとしての最低限の歯止めはかかっているみたい。
深く潜ってみよう
仕組みをもう少し詳しく見てみるね。
裏側では AcquireRole という新しい IAM API が使われていて、条件に合うテンプレートを探し、ロールを作成(または既存ロールを再利用)してサービスに返す、という流れになっているの。同じ用途のロールがアカウント内に重複して増えないような作りになっているんだね。
ロールを作るのに使われるのは role manager 専用の権限じゃなくて、呼び出したユーザー自身の IAM 権限なの。新しくロールを作る場合はロールの作成・アタッチ権限が必要で、既存ロールを再利用する場合は iam:GetRole と iam:GetRoleTemplateVersion の 2 つの権限だけで足りるんだって。権限が足りないときは、コンソールが「どの権限が必要か」をちゃんと教えてくれるみたい。
作られたロールも透明性が確保されていて、GetRole や ListRoles を呼ぶと、そのロールがどのテンプレートから作られたかの情報が返ってくるの。AWS CloudTrail にもロール作成の記録が残るから、あとから「これは role manager が作ったロールかどうか」をちゃんと追跡できるよ。
有効・無効の切り替えは、IAM コンソールの「Account settings」から「role manager」セクションで「Enable」を選ぶだけ。組織で使っている場合は、SCP(サービスコントロールポリシー)でメンバーアカウントが role manager を有効化・利用できるかどうかを管理者側で制御できるの。
ワークロードが育って権限を絞りたくなったら、role manager を無効化すればいいだけ。無効にしても今動いているリソースには影響がなくて、既存のロールはそのまま残るの。しかも無効化してから 90 日間は、IAM Access Analyzer の未使用アクセス分析を追加料金なしで使えて、ロールの実際の使用状況から最小権限のポリシーを提案してもらえるんだって。1 つのロールだけ絞りたいときは、そのロールを編集するだけで role manager の管理対象から外れて、普通のカスタマー管理ロールになるみたい。AWS 自身は、サンドボックスや開発アカウントでは有効なままにしておき、本番に出す前に無効化して権限を絞り込むのがおすすめだと案内しているよ。
まとめ
- IAM role manager が GA になり、対応サービスのコンソールでリソースを作るときに IAM ロールを AWS が自動作成・アタッチしてくれる
- 対応は 6 サービスコンソールからスタートで、AWS Lambda と Amazon EventBridge が含まれる
- 利用できるのは GovCloud(US)と中国リージョンを除く全リージョン
- 作られるロールは中身の見える普通の IAM ロールで、
AcquireRoleAPI・テンプレート参照・CloudTrail 記録によってトレーサビリティも確保されている - 無効化後 90 日間は IAM Access Analyzer の未使用アクセス分析が追加料金なしで使えて、最小権限への絞り込みもしやすい
IAM の設定にいつも足止めされがちな人や、まずはさくっとプロトタイプを動かしたい人には、かなり刺さる機能なんじゃないかな!