新しくAWS Control Towerを導入してみた話(新規アカウント編)

Akira Yagishita
nextbeat-engineering
13 min readDec 15, 2022

はじめに

こんにちは。

ネクストビートでSRE担当の八木下です。

前回のBlogでは、Well-Architected Tool導入のお話をさせていただきましたが、その取り組みを進めていく上で「AWS Control Tower」におけるマルチアカウント管理に魅力を感じていました。

この度、弊社で管理しているAWSアカウントにおいて、子会社向けに切り出す要件が生じ、「AWS Control Tower」を導入してみましたので、自身の備忘の意味合い兼ねて本ブログを執筆いたします。

「AWS Control Tower」って何だ?

ユーザーガイドの言葉を引用すると、「規範的なベストプラクティスに従って、AWS 複数アカウント環境を設定して管理するための簡単な方法を提供します。」とあります。

弊社では複数のAWSアカウントを所有しており、AWS OrganizationsやAWS IAM Identity Center(以前でいうAWS Single Sign-On)を使ってはいましたが、よりセキュアかつ管理の簡略化を目的に、「AWS Control Tower」を新たに導入することにしました。

ただ、既にAWS Organizationsを使用しており、配下で管理している他アカウントへの影響がどの程度あるか不明だったので、今回新規にAWSアカウントを作成し、その上で導入を行いました。(既存アカウントへの導入はまた後日検証した上でブログ執筆します。)

実際に設定してみた

0.事前に必要なもの

・AWSアカウント登録用のメールアドレス×4つ(管理用マスターアカウント・ログアーカイブアカウント・監査アカウント・テスト登録用アカウント)

1.管理用マスターアカウント作成

公式で提供されている手順に従ってAWSアカウントを1つ発行します。RootアカウントにおけるMFAのセットアップも忘れずに行います。

2.AWS Control Towerの有効化

Rootユーザで管理用マスターアカウントにログインし、画面上部の検索窓より「Control Tower」と入力し、【Control Tower】を選択します。

★重要★使用するホームリージョンを選択し、変更されたことを確認します。(一度選択したリージョンは以後変更できなくなるためとなります。)

「ランディングゾーンの設定」ボタンを押下し、ステップ1「料金の確認とリージョンの選択」に進み、必要設定を入れて「次へ」ボタンを押下します。

・「ホームリージョン」:使用するリージョンを選択。(今回はシンガポールリージョンを選択。)

・「リージョン拒否設定」:有効

※明示的に許可したリージョン以外への操作を拒否する事ができる設定です。今回は使用するリージョンが限定的なので、【有効】にしてみます。

・「ガバナンスのための追加AWSリージョン」:使用するリージョンを選択。(今回はバージニア北部・東京リージョンを追加)

※「リージョン拒否設定」で【有効】にしたため、リソースを作成したりするリージョンを追加します。

ステップ2:「組織単位(OU)の設定」へと遷移し、必要設定を入れて「次へ」ボタンを押下します。

・「基礎となるOU」:(デフォルト通り)Security

・「追加のOU」:(デフォルト通り)Sandbox

ステップ3:「共通アカウントの設定」へと遷移し、必要設定を入れて「次へ」ボタンを押下します。

・「管理アカウント」:(変更不可)

・ログアーカイブアカウント:新規アカウントの作成を選択

・アカウントの作成:事前に取得したメールアドレス(2つ目)を入力

・アカウント名を変更:(必要に応じて変更します)

・アカウントの監査:新規アカウントの作成を選択

・アカウントの作成:事前に取得したメールアドレス(3つ目)を入力

・アカウント名を変更:(必要に応じて変更します)

ステップ4「CloudTrailと暗号化を設定する」へと遷移し、必要設定を入れて「次へ」ボタンを押下します。

・AWS CloudTrailの設定:有効

(Amazon S3のログ設定)

・ログ用のAmazon S3バケットの保持

・アクセスログ用のAmazon S3バケットの保持

・KMS暗号化:無効

※KMS暗号化は後日有効化します。

ステップ5「ランディングゾーンの確認とセットアップ」へと遷移し、設定内容に差分が無いことを確認し、「ランディングゾーンの設定」ボタンを押下する。

この時、自動でいくつかのIAMロールもデフォルトで作成されるので確認します。

・AWSControlTowerAdmin

・AWSControlTowerStackSetRole

・AWSControlTowerCloudTrailRole

・AWSControlTowerConfigAggregatorRoleForOrganizations

他にも注意事項が記載されていますので併せて展開します。

画面上部にランディングゾーンの設定が始まった旨の表示が表れ、しばらくすると完了した旨のメッセージが表示されます。(おおよそ30分前後で完了しました。)

3.推奨されるアクションの確認

Control Towerの有効化は完了しましたので、続けて各種設定項目などを見ていきます。

A.「APIでコントロールをプログラム的に管理する」:APIリファレンスにリダイレクトします。(本ブログでは割愛します。)

B.「組織単位を追加または登録」:OUの一覧が表示されます。試しにOUを一つ追加してみます。画面右上の「リソースを作成」>「組織単位の作成」を選択し、OU名の入力・親OUの選択をします。

・OU名:(今回はSuspendedとします。)

・親OU:Root

作成に完了すると、画面上部に作成完了した旨のメッセージが表示されます。

続けて、アカウントの作成を試みます。画面右上の「リソースを作成」>「組織単位の作成」を選択します。

Rootユーザでログインしていると、画面上部にエラー発生した旨のメッセージが表示されます。(Rootユーザの場合は、Control Towerでユーザ作成できないと応答が返るので、一旦この手順は後回しにします。)

C.「その他のコントロールを有効にする」:各種ガバナンスルールに一覧が表示されます。まずガイダンスが必須となっているルールを確認します。

・対象ルール:(一旦、「ログアーカイブの削除を許可しない」とします。)

ガバナンスルールが適用されているAWSアカウント名が表示されています。

試しに一つガバナンスルールの設定を変更してみます。対象のルール名を選択し、画面中部の「OUの制御を有効にする」を選択します。

・対象ルール:(一旦、「Amazon S3 バケットの暗号化設定の変更を許可しない」とします。)

ガバナンスルールに追加するOUを選択し、「OUの制御を有効にする」ボタンを押下します。

・対象OU:(一旦、「Security」とします。)

選択したOUが追加され、配下にあるAWSアカウントも追加されていることを確認します。

追加したOUを今度は削除します。OU「Security」の左側にあるラジオボタンを選択し、「コントロールを無効にする」を押下し、表示されるポップアップにおいて「無効化」を選択します。

対象のOUが削除され表示されていないことを確認します。

D.「ユーザーとアクセスを確認する」:IAM Identity Center(旧:AWS Single Sign-On)の設定状況が確認できます。アクセス許可セットも併せて作成されていますので確認しておきます。

将来的にはActive Directoryと連携してユーザ管理できるようにしますが、本ブログにおいては割愛し、後日紹介したいと思います。

E.「共有アカウントを確認する」:Control Tower 有効化した際に設定したログアーカイブ・監査用AWSアカウントのステータスを確認できます。

4.AWSアカウント作成

先程Rootユーザで作成できなかったOU配下へのAWSアカウントの追加を行います。

AWS Control Tower 有効化時、管理用マスターアカウントに登録したメールアドレス宛に件名「Invitation to join AWS Single Sign-On」というメールが届きますので、「Accept invitation」ボタンを押下します。

パスワードの設定を求められるため、任意のパスワードを入力し、「新しいパスワードを設定」ボタンを押下します。

以下ログイン画面に遷移しますので、管理用マスターアカウントにおける「AWSAdministratorAccess」ロールにてマネジメントコンソールにログインします。

再度、Control Towerの設定画面に遷移し、ダッシュボード上の「組織単位を追加または登録」の画面に遷移し、「リソースを作成」>「アカウントの作成」を選択する。

必要な情報をそれぞれ入力し、「アカウント作成」を選択します。

・アカウントEメール:事前に取得したメールアドレス(4つ目)を入力

・表示名:(任意の値を入力します。)

・Identity CenterユーザーのEメール:(アカウントEメールと同じ値を入力します。)

・IAM Identity Centerユーザー名:(任意の値を入力します。)

・組織単位:(今回はSandboxとします。)

アカウント作成が始まります。(おおよそ15分程度要しました。)

アカウントが作成されると、指定したOU配下にアカウントが作成されます。

本ブログではアカウント作成までとします。

まとめ

本記事では新規AWSアカウントにおけるAWS Control Towerの有効化の手順をまとめました。今後はControl Tower配下における挙動の確認(リージョン拒否設定において許可していないリージョンでの操作やガバナンスルールで保護されている操作が適切に効いているかどうか)や、既存AWSアカウントにおけるControl Tower導入を検証してブログに投稿していきます。

ここまで読んでいただきありがとうございました。

参考文献

We are Hiring!

株式会社ネクストビートでは

「人口減少社会において必要とされるインターネット事業を創造し、ニッポンを元気にする。」
を理念に掲げ一緒に働く仲間を募集しております。

全事業、全プロダクトのインフラを支える!クラウドネイティブな技術選定~運用を行い、事業の成長に大きく貢献しませんか?ぜひSREのポジションへのご応募をお待ちしております。

--

--