経緯
AWSを使っていくと、
- 本番環境と開発環境を分離したい
- 部署単位やプロジェクト単位でコストを明確に分けて出したい
という要望がでてきます。
その要望を応える為にAWS OrganizationsというAWSの複数アカウントを管理する仕組みがあります
AWS Organizationsを使うことによって、上記メリットの他に
- 一括請求、支払いが可能となる
- ボリュームディスカウントが適用される
- Cloud TrailやAWS Configで一元管理できる
- IAMユーザーの一元管理ができる
等のメリットがあります。
それでは設定していきましょう。
OU(organization Unit)の作成
ルートAWSアカウントとなるAWSアカウントでログインします。
サービス一覧より”AWS organizations”を選択して、”組織の作成”をクリックします。
組織が追加されました。
次にOU(organization unit)を追加します。
今回は、”root”の下に”Corporate”,”Partners”を追加します。
また、”Corporate”の下に”ServiceA”を追加します。
左上の”Root”をクリックします。
すると右ペインに「新規組織単位」が表示されますので、クリックします。
組織単位の名前に”Corporate”と入力して「組織単位の作成」をクリックします。
“Root”の下にCorporateが追加されました。
同じ手順で”Partners”を追加してください。
次に”Corporate”の下に”ServiceA”を追加します。
左のツリーの”Corporate”をクリックして、「組織単位の作成」をクリックします。
組織単位の名前に”ServiceA”と入力して「組織単位の作成」をクリックします。
“Corporate”の下に”ServiceA”が作成されました。
AWSアカウントの作成
AWSアカウントを追加します。
追加する方法は、
- 既存アカウントを招待する方法
- 新規アカウントを作成する方法
があります。
今回は新規アカウントを作成する方法でアカウントを追加します。
OU(ServiceA)に属する”ServiceA_Developer”というAWSアカウントを作成していきます。
“アカウント”タブをクリックして、「アカウント追加」ボタンをクリックします。
「アカウント作成」ボタンを押して、[アカウント名][Eメール]を入力して「作成」ボタンをクリックします。
[IAMロール]欄は未入力の状態だと”OrganizationAccountAccessRole”というAssumeRoll用のIAMロールが自動で作成されます。(Administrators Access権限)
登録されました。(綴りを間違えましたが・・・)
AWSアカウントをOUへ紐づけ
先ほど作成したAWSアカウントをOU”ServiceA”へ紐づけをします。
“アカウントの管理”タブより該当のAWSアカウントにチェックを付けて”移動”リンクをクリックします。
移動先のOU(ServiceA)を選択して「移動」をクリックします。
OU”ServiceA”に”ServiceA_Developer”が紐づいていることが確認できました。
一時的にAWSアカウントを切り替える(スイッチロール)
別AWSアカウントを作ったものの、いちいち個別にIAMユーザーを作成し、ログインするのは面倒くさいですよね。
安心してください。
スイッチロールという機能が準備されており、一時的に現在ログインしているIAMユーザーに別AWSアカウントの指定したロールを適用して切り替える事ができます。
スイッチロールするには”AssumeRole”を許可するポリシーが必要になりますので、必要であればポリシーを作成してアタッチしてください。
またAWSアカウントではスイッチロールできませんので、IAMユーザーでログインしてください。
それではスイッチロールしてみましょう。
サービス”AWS Organizations”メニューの[アカウント]タブよりスイッチしたいAWSアカウントの”アカウントID”をコピーします。
右上のアカウント部をクリックして”スイッチロール”をクリックします。
[アカウント]に先ほどコピーした”アカウントID”を入力
[ロール]に”OrganizationAccountAccessRole”を入力
[表示名][色]は任意に入力してください。
スイッチロールされました。
OrganizationAccountAccessRoleを付与された状態でAWSアカウント(ServiceA_Developer)にログインした状態となります。
元の状態に戻るには”○○に戻る”をクリックします。
最後に
今回の流れでAWS複数アカウントの概要はつかめたかと思います。
今回はコンソールでのスイッチロールを試しましたが、EC2等のサービスにAssumeRoleを使って別AWSのロールをアタッチすることもできます。