🐈

スイッチロールで異なる AWS アカウントに簡単にアクセスしてみる

2023/02/18に公開

はじめに

受託開発などを行っている場合、複数のクライアントの 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