【小ネタ】スイッチロール画面のURLをブックマークすると複数アカウントのログインがはかどる件


ごあいさつ

 皆さんこんにちは。
 AWSで複数アカウントを所有している場合、ログイン用アカウントからスイッチすること、ありませんか?
 例えば普段は開発用アカウントで作業をして、リリース時には本番用アカウントにスイッチする、など。

 ですが、アカウント数が増えれば増えるほど、この作業が面倒になります。
 スイッチのキャッシュは5つしかありませんし、それ以上となるといちいち入力するのも面倒です。

 今回は、スイッチロールの設定方法と、簡単なスイッチの仕方について書いていきます。

スイッチロール(アシュームロール)

 スイッチロールとは、ログインユーザーが他の権限を使って作業したい場合に、IAMロールを利用して権限を変更することを指します。
 例えば、Aユーザーでログインし、Bロールにスイッチするとき、下の図のようなやり方でスイッチします。


 ここをクリックして、

 この画面に遷移したとき、

 アカウント:遷移先アカウントID(12桁)
  ロール:利用ロール名

 表示名は適当でよく、何も入れなくても自動で入ります。
 こうすることで、Aユーザーが持つ権限からBロールが持つ権限に完全に切り替わって作業が可能になります。

スイッチ用ロールの設定

 では、ここで、Bロール(スイッチ先の権限)の作り方です。
 
 必要なのは、ロールを作成するときに「別のAWSアカウント」からのアクセスを許可することです。
 この時、ログインと同じアカウントIDを指定すると、「ログイン時は閲覧のみ→昇格して開発権限」ということも実現可能ですし、「ログイン→Aシステム用、Bシステム用」と同じユーザーで違うシステム用の権限にスイッチすることも可能です。

 また、ログイン時にMFA有効化にしておき、さらにログインユーザーのpolicyにだけIPアドレス制限をかけておくと、ログイン管理ができます。
 その上でスイッチ先にはIP制限なしにしておけば、API発行元がAWSサービスであるためにIPアドレス制限が邪魔をして作業が完了しない、ということが防げます。

 ということで、ロールを作成し、ポリシーをアタッチしますが、中身は必要なものをアタッチしてください。
 注意すべきは「スイッチ先のアカウントでロールを作成する」ということです。

スイッチ用ポリシーの作成

 ここでは、スイッチするユーザーが、スイッチできるための権限を設定します。
 単純に下記のポリシーをアタッチすればよいです。

sts_role
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": "sts:AssumeRole",
            "Resource": "arn:aws:iam::[スイッチ先アカウントID]:role/[スイッチ先ロール名]"
        }
    ]
}

これをスイッチさせたいユーザーにアタッチすることで、スイッチロールが可能になります。

でもスイッチは面倒

 さて、比較的簡単にスイッチロールの設定は可能なのですが、これらが増えてきたときにスイッチの設定をいちいちやるのは大変ですね。
 アカウントID入れて、ロール名入れて。
 ロール名何だっけ? このIDは何のシステムのIDだっけ?

 それを防止するために、スイッチロールにはURLが割り当ててあります。

https://signin.aws.amazon.com/switchrole?roleName=[RoleName]&account=[AccountID]

 [RoleName]にスイッチ先ロール名、[AccountID]にスイッチ先アカウントIDを入れれば、スイッチ設定画面にIDとロール名が入った状態でページが開きます。
 後はスイッチボタンを押すだけです。

 これをブックマークする、もしくはhtmlでリンク集を作るなどすれば、非常に便利ではないでしょうか。

 一つ注意点は、このURLを実行するのは、スイッチできるユーザーでログインした後である必要がある、ということです。
 スイッチ権限がないと、エラーが出てしまうので注意してください。

 では、楽しいAWSライフを!