はじめに
スイッチロールを試します。
おそらくスイッチロールは別のアカウントにスイッチすることが多いと思いますが、今回は同じアカウントでロールだけスイッチします。別のアカウント作るのは手間なので今回は同じアカウントで仕組みだけを理解します。業務では複数のアカウントを使ってると思いますが、個人の検証なのでそこまではしません
別のアカウントにスイッチするときは、さらに設定が必要かもしれません
ユースケースでは、通常は開発環境で作業している人たちを、商用環境に切り替えるために行うのだと思います。商用環境は別のAWSアカウントなのだと思います
参考にした手順
スイッチロール用のロールを作成する
ロール名:switchRoleAdmin
AdministratorAccess
権限(ポリシー)をアタッチしています。
※別のアカウントにスイッチするときは、別のアカウントでロールを作るはずです
スイッチ元のIAMユーザーを作成する
ユーザー名:testuser-ec2
権限(ポリシー)は何も付与しなくてもOK
testuser-ec2
でAWSにログインした際、権限がないのでいろいろ参照できないエラー(赤字)が画面にでているはずです。
※別のアカウントにスイッチするときは、スイッチ元でアカウントで作るはずです
ポリシーを作成する
ポリシー名:switch-policy-test
ロールはユーザーに付与できませんが、特定のロールを使うポリシーは作成できます。以下のポリシーを作成し、そのポリシーをユーザーに割り当てることで、特定のロールを使用することができます。
{
"Version": "2012-10-17",
"Statement": {
"Effect": "Allow",
"Action": "sts:AssumeRole",
"Resource": "arn:aws:iam::XXXXXXXXXXXX:role/switchRoleAdmin" // アカウントIDとロール名は自身のものに合わせる。別のアカウントIDになることもある
}
}
このポリシーは switchRoleAdmin
ロールを使用するためのポリシーです。
今回はこのポリシー直接ユーザに割り当てず、グループ経由で割り当てます
XXXXXXXXXXXXはスイッチ先のアカウントですが、今回はスイッチ元同じアカウントIDです
※別のアカウントにスイッチするときは、別のアカウントでポリシーを作るはずです
グループを作成する
グループ名:switchRoleTest
グループとはポリシーを束ねたもので、今回は switch-policy-test
をアタッチしておきます。ポリシーを直接ユーザーに付与するよりも、こちらの方が管理しやすいです。
このグループに testuser-ec2
を追加しておきます。
※別のアカウントにスイッチするときは、別のアカウントでグループを作るはずです
テスト
-
testuser-ec2
でAWSコンソールにログインします。 - スイッチロールができるかどうかを試します。方法については次のプラグインを使用すると簡単です。
AWS Extend Switch Roles プラグイン
AWS Extend Switch Roles プラグインを使用すると、スイッチロールが簡単に行えます。通常はAWSコンソールで設定します。
プラグインの画面を表示して、Configrationをクリックすれば設定画面が表示される
![image.png](https://qiita-image-store.s3.ap-northeast-
設定例
[prod]
role_arn = arn:aws:iam::XXXXXXXXXXXX:role/switchRoleAdmin # アカウントIDとロール名は自身のものに合わせる
region = ap-northeast-1
color = 95ea9f
XXXXXXXXXXXXはスイッチ先のアカウントですが、今回はスイッチ元同じアカウントIDです