スイッチロールで異なる AWS アカウントに簡単にアクセスしてみる
はじめに
受託開発などを行っている場合、複数のクライアントの AWS 環境にログインして作業をするケースがあります。その際、各クライアントから IAM ユーザーを払い出していただくこともできますが、そうなると IAM ユーザーの管理が必要となりますし、プロジェクトのメンバーの交代があった際に IAM ユーザーを追加・削除する、といった手間も発生します。
また、ひとりで複数のプロジェクトを担当していた場合、環境を切り替えるたびにログアウトして、マネジメントコンソールにログインして・・・という作業を繰り返すのは大変です。
AWS Organizations を使えば、Single-Sign-On の仕組みを使うことができますが、Organizations 配下にある AWS アカウントにしか適用ができないため、クライアントの AWS アカウントを自社の AWS Organizations 配下で管理できるようなケースでしか使うことができません。
こういった場合に便利な機能が IAM スイッチロール です。スイッチロールを利用すると、セキュリティ上のリスクを最小限に抑えながら、複数のAWSアカウントに簡単にアクセスすることができます。
以下でスイッチロールを有効化する手順を見ていきましょう。
スイッチロール用のロールを作成する
まずは、スイッチロール先の AWS アカウント側で、ロールの作成をしていきます。
ロール作成画面を開く
- ログイン先の AWS アカウントで、IAM コンソールを開く
- [ロール] -> [ロールを作成] を押す
信頼されたエンティティを選択
- 作成するロールに、アクセスしたい AWS アカウントを信頼するよう設定します
- [AWS アカウント] を選択
- [別の AWS アカウント] を選び、スイッチロール元の AWS アカウントの ID を入力 -> [次へ]
※ オプションについては、必要な場合有効化しましょう。実運用では MFA の有効化が推奨されています。
許可を追加
スイッチロール元からアクセスした際に、どんな操作を許可するのかをここで設定します
- ここでは、S3 の 読み取り権限だけ与えるために [AmazonS3ReadOnlyAccess]を付与しました
- [次へ] を押す
ロール名の詳細
- スイッチロール用のロールに任意の名前を付けて、[ロールを作成] を押す
スイッチロール元の AWS アカウントで作業する
次に、スイッチロールを行う元の AWS アカウント側で、スイッチロールを行っていきます。
スイッチロール元のアカウントからロールの切り替えを行う
-
スイッチロール元の AWS アカウントの IAM ユーザーとしてログインし直す
-
画面右上の AWS アカウント情報を押し、[ロールの切り替え] を選ぶ
-
もう一度 [ロールの切り替え] を押す
ロールの情報を設定する
-
アカウント
: スイッチロール先の AWS アカウント ID -
ロール
: 先程作成したロールの名前 -
表示名
: スイッチロール対象として表示される際にわかりやすい名前をつける - 入力できたら [ロールの切り替え] を押す
スイッチロールできたことを確認する
これで、スイッチロール元の AWS アカウントから、スイッチロール先のロールを引き受けることができました!
-
スイッチロール先のマネジメントコンソールに遷移するので、画面右上の
account-A
を押す -
switchrole
ロールを引き受けて、別アカウントにログインできたことを確認する
-
[スイッチバック] を押すとスイッチロール元のアカウントに戻ることができます
-
また、2回目以降は [account-A] を押すだけで簡単にスイッチロールすることができます
おわりに
スイッチロールを使った場合、スイッチロール先の AWS アカウントの作業は IAM ロールを作成するだけで済みます。IAM ユーザーを払い出してもらう場合に比べて、認証情報の管理や、毎回ログイン情報を入力する手間を省略することができます。
注意点として、スイッチロールを利用する場合は、必ず必要なアクセス権限のみを付与し、不要な権限を与えないように注意することが重要です。便利な仕組みではありますが、セキュリティには十分配慮して利用しましょう。
Discussion