はじめに
本記事の目的
本記事は、AWSの「ロール切り替え(スイッチロール)」機能をやさしく丁寧に解説することを目的としています。基本的な概念から設定手順、運用のポイント、CLIでの利用方法、よくあるトラブル対策まで、実務で使える知識を網羅的に紹介します。
誰に向けて書いたか
- AWSのアカウントやIAMに触れたことがある方
- クロスアカウントアクセスを導入したい管理者や開発者
- 権限管理を見直したいチームリーダー
難しい前提知識は不要で、具体例を交えながら進めます。
読み進め方の提案
まず第2章で概念を理解し、第4章で実際の設定手順を確認してください。運用やトラブル対策は後半でまとめますので、実務に合わせて読み飛ばしながら参照できます。安心して読み進めてください。
AWSロール切り替え(スイッチロール)とは
概要
AWSのロール切り替え(スイッチロール)とは、現在使っているIAMユーザーや一時的な認証でログインしている状態から、別の権限セット(IAMロール)へ切り替えて操作を行う機能です。これにより同じログイン情報で異なる権限を使い分けられます。
なぜ使うか
- 本番と開発で権限を分けたいとき
- 別アカウントの管理権限を一時的に借りたいとき
ロールを切り替えることで、必要最小限の権限で作業できます。
仕組み(簡単に)
ロールに切り替えると、一時的な認証情報が発行されます。これを使ってAWSコンソールやCLIで操作します。元のユーザー権限は保持され、切り替えを解除すれば戻れます。
利用例
- 開発者が本番リソースを確認するために限定的な読み取りロールへ切り替える
- 運用チームが別アカウントの管理ロールを借りてトラブル対応する
主なメリット
- 権限の分離で安全性が上がる
- クロスアカウント運用がシンプルになる
- 日常は低い権限で作業し、必要時だけ強い権限を使える
簡単な注意点
ロールに付与する権限は最小限にして、誰がどのロールを使えるかを管理してください。
基本的な利用シーン
アカウント間のアクセス権限移動(クロスアカウント)
企業やプロジェクトで複数のAWSアカウントを使う場面で有効です。たとえばAアカウントのIAMユーザーが、Bアカウントの管理ロールに切り替えて作業します。こうすると、同じ認証情報のまま別アカウント上の操作ができ、アカウントごとのアクセス管理を簡単にできます。
権限の一時昇格
日常は制限された権限で作業し、トラブル対応や設定変更が必要なときだけ管理者ロールへ切り替えます。これにより、常に強い権限を持たせずに済み、誤操作のリスクを抑えられます。短時間だけ使う運用をルール化すると効果的です。
セキュリティ強化
必要なときだけ必要な権限を付与するという原則を実現します。長期間にわたり余分な権限を持たせないため、内部不正や外部侵害による被害範囲を小さくできます。ログを残して誰がいつ切り替えたかを追跡する運用もおすすめです。
スイッチロールの設定手順
この章では、スイッチロールを実際に設定する手順を順を追って説明します。各手順は簡潔にまとめ、必要な例も示します。
1. スイッチ先アカウントでロールを作成
- AWSマネジメントコンソールで「IAM」→「ロールを作成」を選択。
- 信頼されたエンティティで「AWSアカウント」を選び、スイッチ元(呼び出し元)のアカウントIDを指定します(例: 123456789012)。
- 必要な権限(例: ReadOnlyAccess、またはカスタムポリシー)をアタッチし、ロール名を設定して作成します。
- 信頼ポリシー(例):
{
"Version":"2012-10-17",
"Statement":[{
"Effect":"Allow",
"Principal":{"AWS":"arn:aws:iam::123456789012:root"},
"Action":"sts:AssumeRole"
}]
}
2. スイッチ元アカウントでAssumeRole権限を付与
- スイッチ元のユーザーやグループに、作成したロールへAssumeRoleできるポリシーを付与します。
- 例(シンプルなインラインポリシー):
{"Version":"2012-10-17","Statement":[{"Effect":"Allow","Action":"sts:AssumeRole","Resource":"arn:aws:iam::987654321098:role/ExampleRole"}]}
3. マネジメントコンソールでの切替方法
- 画面右上のユーザー名をクリックし「ロールの切り替え」を選択。
- スイッチ先のアカウントIDとロール名を入力し、表示名や色を設定して切り替えます。切替後は指定した権限でコンソール操作できます。
4. AWS CLIでの切替方法
- 一時認証情報を取得:
aws sts assume-role --role-arn arn:aws:iam::987654321098:role/ExampleRole --role-session-name MySession
- 出力されたAccessKey/Secret/SessionTokenを環境変数に設定して操作します。より簡単にするには、~/.aws/configでrole_arnとsource_profileを使ったプロファイルを設定します。
運用上のポイント
1. 権限設計は最小権限で
ロールは必要最小限の操作だけ許可する設計にします。例えば、閲覧専用ロールと管理者ロールを分け、管理者権限は限定的に付与します。これにより不要な権限昇格や不正アクセスのリスクを下げられます。
2. コンソール履歴を活用する
AWSコンソールは「最近使ったロール」を残します。頻繁に切り替えるロールをすばやく選べるため、作業効率が上がります。日常的に使うロール名を統一するとさらに便利です。
3. ブックマークで時短
URLにアカウントIDやロール名を指定してブックマークすると、直接そのロールでコンソールを開けます。例えば開発用/本番用で別のブックマークを用意すると切り替えが簡単です。共有する際はURLに含まれる情報に注意してください。
4. 監査と定期見直し
CloudTrailで切り替えイベントを監査し、利用頻度が低いロールや不要な信頼ポリシーを定期的に削除または修正します。運用頻度に応じて、月次・四半期ごとのチェックを推奨します。
5. 実運用の注意点
セッション時間は短めに設定し、重要操作には多要素認証(MFA)を要求します。またロール名や説明に用途を書いておくと、誤利用を減らせます。定期的なアクセス権レビューを習慣にしてください。
よくあるトラブル・注意点
1. アカウントIDやロール名の入力ミス
最も多いのは入力ミスです。数字の抜けやハイフンの誤り、似た名前のロールを選ぶことでアクセスできなくなります。対策としては、コピー&ペーストで正確に入力するか、事前にメモした設定値を使うと安全です。
2. 信頼ポリシーやAssumeRole権限の設定漏れ
ロール側の「誰が切り替えできるか」を決める信頼ポリシーが正しくないと切り替えできません。例:信頼先として指定したアカウントIDが間違っている場合。相手側とIAMポリシーの両方を確認し、必要なアクション(sts:AssumeRole)を許可してください。
3. CLIでの一時認証情報の有効期限切れ
CLIで取得した一時的な認証情報は期限があります。期限切れになると認証エラーが出ます。再取得するか、自動的に更新するスクリプトを用意すると便利です。使用中に時間をまたぐ作業は注意してください。
4. ロール切り替えUIの変更による操作混乱
コンソールの表示やメニューが変わると、操作手順が分かりにくくなります。公式ドキュメントやスクリーンショットを更新しておくと新人でも迷いません。ブラウザの拡張やキャッシュが影響する場合もあるので、表示が変なら別ブラウザで試すと良いです。
チェックリスト(短縮)
- アカウントID/ロール名を再確認
- 信頼ポリシーとIAMポリシーを確認
- 一時認証情報の有効期限を確認
- ブラウザ/ドキュメントの更新状況を確認
これらを順に確認すれば多くの問題を短時間で解決できます。
まとめ
AWSのロール切り替え(スイッチロール)は、柔軟かつセキュアな権限管理やクロスアカウント運用に不可欠な機能です。正しく設定すれば、運用効率を上げつつ不要な権限付与を防げます。
- 基本の押さえどころ
- 信頼ポリシーで誰がロールを引き受けられるかを明確にします。ロールARNや外部ID、MFAの設定は誤りが起きやすいので注意してください。
-
最小権限の原則を守り、必要な操作だけ許可します。
-
運用面のポイント
- セッション期間や権限境界を設定して、長時間の不用意な権限維持を防ぎます。
- CloudTrailやログで監査できるようにし、異常は早めに検知します。
-
ロールの命名規則やドキュメントを整備し、利用者が迷わないようにします。
-
継続的な管理
- 定期的にポリシー・信頼関係を見直し、テストで想定どおりに動くか確認します。したがって、ログ監視と定期レビューを組み合わせる運用をおすすめします。
- 教育や手順書を用意し、利用者が誤った使い方をしないようにします。
まとめとして、設計・設定・運用の基本を押さえれば、スイッチロールは安全で便利な仕組みです。今すぐ設定を見直して、効率的で堅牢なAWS運用を目指しましょう。












