今回は、AWS Organizationsを用いたマルチアカウント環境のセットアップをご紹介します。
実はAWSの資格を6つほど駆け足で取得したのですが、学習した内容を忘れないために手を動かしていろいろ検証したいと思っています。
取得した資格に紐づく形でそれぞれ最低1回は何かしらの検証をする予定ですが、AWSを利用する以上課金は発生してしまうため、それぞれの検証にかかったコストを管理するため、マルチアカウント構成でコスト管理を容易にしたいと考えています。
今回用意するAWSアカウントは以下の8つです。
各種検証用アカウント
①DEA検証アカウント
DEAで学んだことを検証するためのアカウント
②SAP検証アカウント
SAPで学んだことを検証するためのアカウント
③DOP検証アカウント
DOPで学んだことを検証するためのアカウント
④DVA検証アカウント
DVAで学んだことを検証するためのアカウント
⑤SOA検証アカウント
SOAで学んだことを検証するためのアカウント
⑥SAA検証アカウント
SAAで学んだことを検証するためのアカウント
別用途アカウント
⑦デモ用アカウント
上記に含まれない検証や、各検証アカウントとマルチアカウント構成を試したいときに利用するアカウント
管理アカウント
⑧管理アカウント
組織管理、コスト周りの設定を実施するアカウント
以下の構成でアカウントを管理する予定です。
今回は管理アカウントに相当するAWSアカウントは既に作成済みという前提で説明を進めていきます。
Organizationsでマルチアカウントのセットアップをする
①管理アカウントのOrganizationsから新規アカウントを発行する
まずはOrganizationsにアクセスし、アカウントを作成します。
アカウント名およびEメールアドレスを入力します。
IAMロール名は特に要件がなければ変更しなくてもよいです。
タグはオプショナルなので設定しなくても問題ありません。
なお、各AWSアカウントに対し重複しないメールアドレスを設定する必要があります。
個人開発なので同じメールアドレスを入力したいところですが、それはできないため、私はoutlookのエイリアス機能で8つのメールアドレスを用意しました。*1
アカウントが作成されると以下のようなメールがAWSから届きます。
②組織を作成し、新規アカウントを組織に紐づける
Organizationsの画面から組織を作成します。
組織が作成されたら、先ほど作成したAWSアカウントを選択し組織の配下に移動します。
③組織にSCPを適用する
今回は個人開発なのであまり必要ないような気もしますが、SCPの挙動を見ておきます。
サービスコントールポリシーを選択してポリシーを作成します。
今回はおそらく利用しないと思われるbedrockリソースの操作を禁ずるポリシーを作成し、組織に紐づけてみました。
④新規アカウントにログインしてみる
作成されたアカウントにログインしてみましょう。
画面右上の「ユーザ名@AWSアカウント名」が表示されている箇所をクリックし、
「ロールの切り替え」を押下します。
押下後以下の画面が表示されるため、
AccountIDに作成したAWSAccountのIDを、IAM Role nameには「OrganizationAccountAccessRole」を入力します。
Switch Roleを押下すると作成したアカウントにログインすることができます。
試しにbedrockのページにアクセスしてみたところ、以下のエラーが出ました。
SCPの設定が効いているようですね。
IAM Identity Centerでマルチアカウントアクセスを簡素化する
上記手順を実施した場合、各検証アカウントへのアクセス方法は
①管理アカウントにAWSアカウントでログインする
②スイッチロールを利用してアクセスしたいアカウントにログインする
となっていると思います。
現時点の構成だと必ず管理アカウントにアクセスしなければいけないのですが
今回の管理アカウントの用途はAWS Organitzationsの管理とコスト管理なので踏み台の機能を持たせたくありません。
管理アカウントを各アカウントへのアクセスから分離する方法はいくつか考えられると思いますが、一般的にはどちらかの方式で実現されるのではないかと思います。
①踏み台アカウントを作成して、そちらから各アカウントにアクセスさせる
②IAM Identity Centerを利用してアクセスポータル経由でアクセスさせる
①はJumpアカウント方式といわれるものですが、各アカウントでスイッチ用のIAMロールをセットアップする必要がありその設定が手間だったのと、踏み台用のアカウント払い出しをしたくないこともあり、②で対応することにしました。
以下、IAM Identity Centerのセットアップ手順です
①IAM Identity Centerの有効化
IAM Identity Centerの画面にアクセスし、IAM Identity Centerを有効化します。
上記画面が表示されるので、「有効にする」を押下します。
②ユーザを作成する
各アカウントにアクセスさせたいユーザを作成します。
各種必要な情報を入力していきます。設定したEmailアドレス宛に作成後メールが送信されます。
メールのリンクをもとにパスワードの再セットアップとMFAの設定を完了すればユーザ側のセットアップは完了です。
③グループの作成
ユーザを所属させるグループを作成します。今回は管理者権限用グループを作成しました。実運用ではここに各種ペルソナのグループが作成されると思います。
④許可セットの作成
グループに紐づける許可セットを作成します。今回は管理者権限を付与したいので以下の通り設定します。
細かい設定ができますが、今回はセッション時間を12時間に設定する以外は特に変更しませんでした。
⑤アカウントにグループおよび権限セットを紐づける
各アカウントにグループと権限セットを紐づけていきます
※wtnbはAWS管理アカウントに相当するものです
グループと権限セットを紐づけ終わったらサブミットします。
⑥アクセスポータルからアクセスする
「設定」→「アイデンティティソース」からアクセスポータルのURLが確認できるのでアクセスしてみます。
IDパスおよびMFAのコードを入力すると以下の画面が表示されました。
上記画面からAdministratorAccessを押下すれば各アカウントにアクセスすることができます。
今後
上記の構成でいろいろな検証を実施したいと思います。
どうぞよろしくお願いいたします。