🦔

【IAM】Organizationsで作成した新アカウントへスイッチロールする

2023/07/06に公開

はじめに

別アカウントへのスイッチロールを試します。

前回はOrganizationsで新しいAWSアカウントを作成したので
そのアカウントにスイッチロールしてみます。

イメージ図

スイッチロールのメリット

  • それぞれのアカウントにログインせずとも操作可能
    • パスワードの管理も不要にできる
    • ただしスイッチロールする、される権限は必要
  • 踏み台アカウントからスイッチロールすることで複数のアカウントを容易に行き来できる

流れ

以下2つを試してみたいと思います。

  1. スイッチ先のロールを作りスイッチする
  2. Organizations作成時に指定したロールにスイッチする

Organizationsで作成したアカウントは2ができるので楽ですね。

1. スイッチ先のロールを作りスイッチする

rootのMFA設定と同じタイミングで作成してしまいましょう。

IAMポリシーはスイッチ先のアカウントで操作したいサービス・リソースのものをアタッチします。
信頼ポリシー設定では以下のように接続元アカウントの接続ユーザ(もしくはRole)を指定するのが望ましいでしょう。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": [
                    "arn:aws:iam::<スイッチ元AccountID>:user/<スイッチ元IAMUser>",
                    "arn:aws:iam::<スイッチ元AccountID>:role/<スイッチ元IAMRole>",
                    // 略
                ]
            },
            "Action": "sts:AssumeRole",
            "Condition": {}
        }
    ]
}

接続元のポリシーではスイッチ先ロールを指定し、AssumeRoleを許可します。

{
    "Version": "2012-10-17",
    "Statement": {
        "Effect": "Allow",
        "Action": "sts:AssumeRole",
        "Resource": "arn:aws:iam::<スイッチ先AccountID>:role/<スイッチ先IAMRole>"
    }
}

これでOKです。
ないとロールの切替時に怒られます。

ロールの切り替えよりスイッチロールできたら成功です。
表示名が変わっていたらスイッチロールできています。

2. Organizations作成時に指定したロールにスイッチする

作成時にロールにつけた名前を控えておけばすぐに接続可能です。
この画像の赤枠で囲われているところですね。

許可ポリシーはAdministratorAccess、信頼ポリシーは以下の通りでした。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::<接続元AccountID>:root"
            },
            "Action": "sts:AssumeRole"
        }
    ]
}

こいつに適切なprincipal設定をつければ1の手順いらんな...
お好みの方で設定すればよいですね。

参考

https://dev.classmethod.jp/articles/iam-role-passrole-assumerole/
https://dev.classmethod.jp/articles/create-new-aws-account-by-organizations/
https://dev.classmethod.jp/articles/overview-introduction-to-organizations-enabled-configuration-procedure/

Discussion