IAMのスイッチロールを理解したい

IAMのスイッチロールを理解したい

複数のアカウントで作業している際にアカウントの切り替えを楽にしてくれるIAMのスイッチロールの仕組みを理解したい自分のために書きました。(初心者向け)
Clock Icon2020.02.03

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

大阪オフィスのYui(@MayForBlue)です。

複数のアカウントで作業している際にアカウントの切り替えを楽にしてくれるIAMのスイッチロールですが、どんな仕組みになっているのかよくわからずモヤモヤしていたので、実際に手を動かして理解してみました。

目次

スイッチロールとは

複数のアカウントで作業する際にアカウントの切り替えを楽にする機能

IAMについてはこちらの記事がわかりやすいです。
AWS初心者にIAM Policy/User/Roleについてざっくり説明する

実装の手順

複数アカウント間でスイッチロールするために必要な手順を実際にやってみます。

スイッチ先での作業
IAMの画面でロールを選択し、「ロールの作成」をクリックします。

信頼する対象に「別のAWSアカウント」を選択し、スイッチ元のAWSアカウントIDを入力して次のステップへ進みます。

ロールにアタッチするポリシーを選択します。ここでは「AdministratorAccess」を選択しました。

次のステップで、付与したいタグを設定します。(設定しなくてもOK)

ロール名を入力して、「ロールの作成」をクリックします。

スイッチ元での作業
IAMの画面左側から「ポリシー」を選択し、右側の画面の「ポリシーの作成」をクリックします。

JSON形式でポリシーを記述していきます。

ポリシー名を入力して、「ポリシーの作成」をクリックします。

ポリシーが作成されたら、スイッチロールができる状態になっているはずなので、実際にスイッチロールしてみます。 画面右上のアカウント情報をクリックして「スイッチロール」をクリックします。

スイッチ先のアカウントIDと作成したロール名、任意の表示名と色を選択して「ロールの切り替え」をクリックします。

右上のアカウント情報で現在アクティブになっているアカウントがスイッチ先のアカウント、ロールであることが確認できます。

まとめ

スイッチ先のアカウントで準備したこと

  • スイッチ元がスイッチする用のロールの作成
  • ロールに付与するポリシーのアタッチ

スイッチ元のアカウントで準備したこと

  • ロールを引き受ける許可をするポリシーの作成(ソースは以下)
    {
        "Version": "2012-10-17",
        "Statement": {
            "Effect": "Allow",
            "Action": "sts:AssumeRole",
            "Resource": "arn:aws:iam::<スイッチ先のAWSアカウントID>:role/TestSwitchRole"
        }
    }
    

スイッチロールの何が嬉しいのか

  • スイッチ先でロールを作成すればそのアカウントにログインしなくても、スイッチ元からスイッチ先のロールを引き受けることでリソースを操作できる (ただしスイッチ先でスイッチ元のアカウントが許可されていること、スイッチ元でロールを引き受けることを許可する必要がある)
  • スイッチ元のAWSアカウントにログインしていれば毎回ログイン/ログアウトしなくても複数アカウントを簡単に切り替えることができる

必要な操作

  • スイッチ先のアカウントでスイッチ元が引き受けるロールを用意し、ロールにポリシーを付与する
  • スイッチ元のアカウントでロールを引き受ける許可をする

最後に

スイッチロール周りのネットの記事を読んだりしてもイマイチ理解できなかったのですが、実際に手を動かして何をしているかを整理するとものすごく納得しました。
理解できたことも嬉しいですが、自分で手を動かすことって大事だなあと改めて思いました。
この記事がどなたかの参考になれば幸いです。

以上、大阪オフィスのYui(@MayForBlue)でした(`・ω・´)

参考記事

Swith Roleで複数のAWSアカウント間を切替える

AWS CLIでスイッチロールするのは以下の記事がわかりやすいです。
【小ネタ】AWS CLIでスイッチロールして作業を行うための設定をやってみた
[小ネタ]ディレクトリ移動した際に自動で一時クレデンシャルを取得・設定する

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.