LoginSignup
25
17

More than 5 years have passed since last update.

IAM ロールを切り替える

Last updated at Posted at 2018-09-02

ロールの切り替えとは

AWSアカウントが増えた場合、それぞれのAWSアカウントにユーザーを作ると運用管理が大変です。
スイッチロールを使うことで、1つのAWSアカウントにユーザーを作成し、そのAWSアカウントから残りのAWSアカウントにスイッチしてログインすることができます。

管理者は、ユーザーの追加や削除は1つのAWSアカウントになるので運用管理が楽です。
ユーザーも複数のAWSアカウントごとにログインログアウトログインがなくなり便利です。

図で表すとこのようなイメージです。

switch-role-Page-3 (1).png

AWSアカウント1は末尾・・71
AWSアカウント2は末尾・・51

やってみます

以下の流れでやってみます

  1. 今回の例
  2. Account2で、IAM Roleを作成します。(スイッチした先のAccount2で与える権限をロールとして定義する)
  3. Account1で、IAM Policyを作成し、それをUserまたはGroupにアタッチ(今回はGroupにアタッチします)
  4. スイッチロールを試す

①今回の例

例えば管理者チーム、開発者チームがあるとします。
それぞれ管理者チームをAdmin_group、開発者チームをDev_groupでIAM Groupを作成していきます。
Admin_groupにuser1、Dev_groupにuser2を追加していきます。

switch-role-Page-2.png

②Account2で、IAM Roleを作成します。

管理者のAdmin_group用のロールと開発者のDev_group用のロールを作成します。

switch-role-Page-1.png

AWS Account2に管理者でログインし、IAMの画面で"ロールの作成"をクリックします。

スクリーンショット 0030-09-02 18.56.31.png

"別のAWSアカウント"をクリックし、スイッチ元となるアカウント(AWS Account1)のIDを入力し、"次へ"をクリックします。

スクリーンショット 0030-09-02 19.03.38.png

管理者の権限をアタッチしたいので、"AdministratorAccess"のポリシーにチェックを入れ、"次へ"をクリックします。

スクリーンショット 0030-09-02 18.58.12.png

ロール名に"Admin_group"を入力し、"ロールの作成"をクリックします。

スクリーンショット 0030-09-02 18.58.50.png

Admin_groupというIAMロールが作成されました。

スクリーンショット 0030-09-02 18.59.04.png

割愛しますが、Dev_groupというIAMロールも同じ要領で作成します。
先程のAdmin_groupとの違いは権限に"AmazonEC2FullAccess"をアタッチしている点です。
※DevなのでEC2のみに権限を与えていると思ってください。

スクリーンショット 0030-09-02 18.59.58.png

作成したロールの"信頼関係"というタブを確認すると、ロールを渡すことができる(信頼している)AWSアカウントIDの設定が入っています。
これでこのAWSアカウントID(Account1)にロールを渡すことができます。

スクリーンショット 0030-09-02 19.06.06.png

Account1で、IAM Policyを作成、それをUserまたはGroupにアタッチ(今回はGroupにアタッチします)

ポリシー作成

スイッチ元となるAccount1に管理者でログインし、IAMの画面を開き"ポリシー作成"をクリックします。

スクリーンショット 0030-09-02 20.40.50.png

"Json"のタブをクリックし、以下の内容をコピペします。
スイッチ先のAccount2(・・58)へのSTSアクセス権限を与えています。(STSはロールをくださいというAPIアクセスのこと)

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": "sts:AssumeRole",
            "Resource": "arn:aws:iam::xxxxxxxxxx58:role/Admin_group"
        }
    ]
}

スクリーンショット 0030-09-02 20.45.17.png

"Admin_policy"という名前をつけて"Create"をクリックします。

スクリーンショット 0030-09-02 20.45.42.png

Dev_policyも同じ要領で作成します。

グループ作成

IAMの画面で"グループ作成”をクリックします。

スクリーンショット 0030-09-02 20.46.45.png

"Admin_group"と入力し"次へ"をクリックします。

スクリーンショット 0030-09-02 20.47.06.png

ポリシーのアタッチで先程作成した"Admin_policy"にチェックを入れ"次へ"をクリックします。

スクリーンショット 0030-09-02 20.47.24.png

ユーザー作成

IAMの画面で"ユーザーの追加"をクリックし、以下を入力し、"次へ"をクリックします。
ユーザー名に"test_user1"
"AWSマネージメントコンソールへのアクセス"にチェック
パスワードは任意を入力

スクリーンショット 0030-09-02 20.49.32.png

ユーザーをグループに追加で"Admin_group"にチェックを入れ"次へ"をクリックします。

スクリーンショット 0030-09-02 20.49.44.png

"ユーザーの作成"をクリックします。

スクリーンショット 0030-09-02 20.49.57.png

Dev用ユーザーのtest_user2も同じ要領でユーザー作成する

スイッチロール試してみる

全体の流れはこんな感じ
スイッチ元のユーザーが、スイッチ先のアカウントからロールをもらってログインします。

switch-role-Page-4.png

test_user1(スイッチ元の管理者ユーザー)でログインし、右上のユーザー名のところをクリックし、"ロールの切り替え"をクリックします。

スクリーンショット 0030-09-02 20.51.52.png

ロールの切り替え画面で、スイッチ先のAWSアカウントID(末尾58のaccount2)を入力し、ロール名を先程作成した"Admin_group"を入力し、"ロールの切り替え"をクリックします。

スクリーンショット 0030-09-02 20.52.33.png

ユーザー名部分がピンク色になり、末尾が58のAccount2にログインしているのが分かります。

スクリーンショット 0030-09-02 20.52.49.png

S3をクリックすると、Administorator権限を持ってるので表示されます。

スクリーンショット 0030-09-02 20.53.26.png

元のアカウントに戻る時は、画面右上のユーザー名をクリックし、"test_user1に戻る"をクリックします。

スクリーンショット 0030-09-02 20.53.35.png

次にDevユーザーでの動作確認です。
test_user2でログインしなおし、画面右上のユーザー名をクリックし"ロールの切り替え"をクリックします。

スクリーンショット 0030-09-02 20.54.34.png

ロールの切り替え画面で、スイッチ先のAWSアカウントID(末尾58のaccount2)を入力し、ロール名を先程作成した"Dev_group"を入力し、"ロールの切り替え"をクリックします。

スクリーンショット 0030-09-02 20.54.49.png

ユーザー名部分がピンク色になり、末尾が58のAccount2にログインしているのが分かります。

スクリーンショット 0030-09-02 20.55.00.png

S3をクリックすると、Access Deniedで表示されません。DevはEC2の権限しかないからです。

スクリーンショット 0030-09-02 20.55.33.png

EC2インスタンスを作成することはできます。DevはEC2の権限があるからです。

スクリーンショット 0030-09-02 20.56.27.png

まとめ

スイッチ元のIAMグループに対してスイッチ先のIAMロールが1:1で結びついているため、ユーザーが増えてもスイッチ先のIAMロールを増やす必要はありません。

CLIでのスイッチロールも簡単です。こちらの方のブログにきれいにまとまってるので参照ください。
https://nasrinjp1.hatenablog.com/entry/2018/04/06/215737

25
17
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
25
17