AWS Organizations を利用して AssumeRole できる環境を構築する

はじめに

AWS Organizations を利用することでセキュリティ、リソース、請求の一元管理が無料で実現できます。また、AssumeRole機能を利用することで必要な権限を持ったアカウントへ簡単かつセキュアにSwitchRoleすることができます。

今回は GUI で SwitchRole できる環境を構築する方法をまとめます。
次回は 1password と sesstok というCLIツールを利用して CUI でも SwitchRole できるようにします。

f:id:nananao_dev:20191215084658p:plain

AWS Organizations の作成

AWS Organizations の管理画面から 組織の作成 をクリックするとログインしているユーザーをマスターアカウントとする組織ができます。

アカウントの作成

今回はアカウントの追加 → アカウントの作成 を選択して新規にアカウントを作成します。
必要な項目は フルネームEメールIAM ロール名 です。
IAM ロール名は特に区別する必要がなければ OrganizationAccountAccessRole が placeholder となっています。

AWS Organizations email verification request というメールが来るのでリンクを踏んで諸々設定します。

AssumeRole 用の IAMポリシー の作成

AssumeRoleを利用することで ID/Password を入力することなく SwitchRole することができます。 AssumeRole を許可するIAMポリシーを作成します。
Resource で指定している Role はアカウントの作成時に指定したものを指定します。(上の例だとOrganizationAccountAccessRoleです)

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

IAMユーザの作成

ルートユーザでは AssumeRole機能 を利用した SwitchRole ができないので IAMユーザを作成します。
上で作成したIAMポリシーをアタッチしておきます。
作成したユーザのcredentialはcsv等で保管しておきます。

SwitchRole

一度 AWSコンソールログアウトし先ほど作成したIAMユーザでログインします。
アカウントはマスターアカウントのアカウントIDで、ユーザー名/パスワードはIAMユーザの作成で作成した IAMユーザのものです。

SwitchRole 先の設定

右上のアカウント情報のプルダウンメニューからスイッチロールを選択します。

  • アカウント: AWS Organizations の作成 で作成したアカウントのアカウントIDを入力します。
  • ロール:アカウントの作成で指定したIAM ロールを入力します。
  • 表示名:任意の文字列です。コンソールからSwitchRoleする時にわかりやすいものを指定します。
  • 色:任意の色を選択します。気が利いていますね。

ロールの切り替え を行うと実際にSwitchRoleすることができます。

まとめ

AWS Organizations を利用して AssumeRole できる環境を構築する方法をまとめました。
次回は moznion/sesstok と 1password を使って CLI でも AssumeRole できるようにします。

参考サイト

AWS Organizations を実際に初めてみる第一歩 - Qiita