さて、前回の記事を踏まえ、今回は実際にControlTower自体の構築に取り掛かっていきます。
ポチポチ操作する項目は多くなく、設定を決めたらAWS側に自動で構築してもらう形です。
とはいえリソース数は多くなるため、AWSに作ってもらう「待ち時間」が1時間必要となります。(バックグラウンドで作成してくれるので別作業可)
ControlTower作成後のリソース確認は、本記事ではだいたい後回しにしています。
確認項目が結構多くなってしまうので、私の記事では作りながら確認していく形でいきます。
【マルチアカウント管理】AWSのベストプラクティスを実現できるControlTowerに取り組んでみる
目次
①マルチアカウント管理の利点
②ControlTowerの利点(&実際かかったコストの画像)
③ひとまず構築しながらControlTowerを理解してみよう(手順付)←本記事はここ
④SSOユーザー作成→サインインしてマルチアカウント管理を体感しよう
⑤セキュリティ(SecurityHub)の設定をしてみよう
⑥セキュリティ(GuardDuty)の設定をしてみよう
⑦コントロールのざっくり解説&設定をしてみよう
⑦までやればいったん一通り構築完了です。
ControlTowerだけの構築であれば③だけで完了です。
(+印付きはオプション 現在執筆中です)
+ベストプラクティスとはいえ、構築後に実運用に沿って変えた設定集
+全アカウントのコスト管理を行う
+アカウント管理者を任命したらやること
+SecurityHubをもっと詳しく
もし今回の記事が参考になったり、いいなと思ったら、よろしければストックやいいねしていただけると非常に嬉しいです🙌
あなたのいいねがとっても励みになり、記事を書くモチベになります。
コメントもぜひ、お待ちしております。
※本記事で使用するメールアドレスやアカウント名は一部マスキングしております。
あらかじめご了承ください。
本記事の流れ
本記事の大まかな流れは以下になります。Controltowerを作成するためのアカウントは事前にサインアップし、用意しておいて下さい。
①管理者のIAMユーザー作成
②ControlTower構築
まずControlTowerを構築するため、管理アカウントに管理者権限を持つIAMユーザーを作成します。その後、その管理者IAMユーザーを使用してControlTowerを構築します。
ControlTowerの構築をベースとして、一部「これも欲しいな」というリソースがあります。それらとControlTowerを統合するための手順は次回以降で行っていきます。
ControlTowerの構築自体は70分くらい、実際に手を動かすのは10分くらいだと思います。
もろもろのリソース統合も併せると、手順は難しくありませんが1時間くらいは手を動かしてポチポチします。自動で適用してくれる時間を含めると、2~3時間くらいだと思います。
①管理者IAMユーザー作成
では、まず管理者権限を持つIAMユーザー作成から行っていきます。
ここはControlTower用のカスタマイズとかしないので、既に作り方が分かる人は飛ばしてしまって全然問題ありません。
左上の検索窓から「IAM」を検索⇒左タブから「ユーザー」をクリック⇒右上の「ユーザーを作成」を押下します。
IAMユーザーの作成画面に遷移しました。ユーザー名をいい感じに入力します。
(適当につけてますが会社ならちゃんと真面目なやつにしましょう笑)
パスワードは要件によって決めてください。
プロジェクト等で決められたカスタムパスワードであればカスタムパスワードを、
自身ではない別の人が管理者としてControlTowerを作成する場合は新しいパスワードを、
などなどそれぞれの要件次第です。「次へ」を押下します。
許可の設定を行います。
特に用意しているものがなければ「ポリシーを直接アタッチする」を選びます。
許可ポリシーの検索欄で「AdministoratorAccess」を検索し、AdministoratorAccessのポリシーにチェックを入れます。許可の境界(Permissions Boundary)は今回特に設定しません。そこまで複雑な要件じゃないので……
「次へ」を押下し、確認画面にて正しいものを作れているか確認します。
パスワードは今回あらかじめ決めたものにしていますが、読者のみなさんの要件次第で変えてください。
IAMユーザーが作成できました。ユーザー名、パスワードはしっかり控えること、できれば念の為、csvファイルをDLしておくことをおすすめします。
ユーザーリストに戻ると、先ほど作成したユーザーが表示されています。
緑帯で「ユーザーが正常に作成されました」の表示もあります。
内容も確認し、設定通り出来ているか、問題なければ完了です。
ControlTower構築
さて、いよいよControlTower構築です。頑張りましょう。
今回ContolTowerを作成したアカウントが、ControlTowerの管理者アカウントとなり、ControlTowerの設定ができるなどあらゆる権限を持っています。セキュリティやアカウントは別アカウントに権限を委任できますが、ControlTower管理者を別アカウントに委任することは出来ないので、よく確認しましょう。
まずControlTowerを作りたいアカウントに、管理権限をもったIAMユーザーでサインインします。
サインインできたら、リージョンが アジアパシフィック(東京)[ap-northeast-1]となっていることを必ず確認し 、ControlTowerを検索します。メインが東京以外であれば業務でメインで使用するリージョンにしましょう。
ControlTowerのダッシュボードが開かれたら、「ランディングゾーンの設定」をクリックします。
ランディングゾーンとは、今回ControlTowerを作る、マルチアカウントAWS環境みたいなニュアンスです。
ここでControlTowerで管理をするリージョンをまとめて選びます。
注意!
青色の通知メッセージにもありますが、管理リージョンはワークロードを実行する必要があるAWSリージョンのみ選択しましょう(リソース実行する可能性があるとこだけ。
後からリージョンも追加できますので、よくわからなければ「東京」と「バージニア北部」くらいに留めて、必要なものを後から足すようにしたほうがいいかもです。
「もしかしたら使うかもだしな~」のノリで、ここでむやみにリージョンを増やすと後々の設定が増えて大変です(リージョナルサービスであるGuardDuty有効化の際、リージョンごとに同じ設定を入れていくため、これだけでも面倒です)。
あと曖昧なまま「管理対象外のリージョンへの操作を禁止する」(拒否リージョン)とかと組み合わせると色々エラーが出やすいです。
リージョンを吟味したうえで検索欄からリージョンを検索してチェックを入れていきます。
ここで選ばれなかったものは「管理対象外」として、証跡のログが生成されなかったりします。不要なものを選ばないことはコストを抑えることにも繋がります。
一応あとで不要なリージョンを対象外とするよう変更できますが、一度諸々構築した後でその変更を行うと、ControlTower内で齟齬が発生する可能性があり、手強いエラーを引き起こす可能性もあります。
一通り選んだらリージョン拒否設定を追加します。管理対象外のリージョンでなにか操作することを禁止する場合はこれをオンにしてください。ここは要件次第です。
上記は統一ポリシーであるコントロール(ガードレール)のため、後でオンオフ可能です。
また、後述しますが、オンにした場合は該当のコントロールが有効になり、無効の場合とコントロールの合計数が変わります。
「次へ」を押下するとOUの設定に進みます。
セキュリティ専門のアカウント、集約したログを保管するためのアカウントが上のOU、
下のOUが何のアカウントでもいれていいよのOUになります。
特にこだわりがなければそれぞれデフォルトの名前で作成しましょう。
下の方はオプションではありますが、どうせ作成するし検証で設定見るときにも使うので作っておいていいと思います。
入力し「次へ」を押下するとそれぞれ自動でつくられるアカウントの名前、メールアドレスを求められます。
上が先程伝えた、全てのアカウントのログを集約する「ログアーカイブアカウント」
下がセキュリティ・監査専門の「監査アカウント」になります。
アカウント名はデフォルトの名前がおすすめです。大体みんなデフォルトなので、他の人が見たり他の人のドキュメント見に行くとき、余計なこと考えなくて済む気がします(主観)。
メールアドレスは 組織や要件で決められたメールアドレスがあればそれを、特になければ管理が大変なのでエイリアスのメールアドレス をおすすめします。
エイリアス(Alias)とは別名の意で、一つのメールアドレスで複数のメールアドレスを使い分け、受信メールをまとめらます。
今回は管理者のメールアドレスのエイリアスで+log(ログアーカイブ),+audit(監査)に設定しています。
「次へ」を押下すると「AWSアカウント設定」「Cloudtrailの設定」のページに行きます。
上はマルチアカウントへのアクセスを手軽にするSSOサインインの提供、
下はあらゆるアカウントの証跡(APIアクション)を取ることができるcloudtrailの有効化
どちらも有効にします。マルチアカウント管理の核となる重要な設定です。
次にログ設定をします。ここではログをどのくらい保持するのか期間を決定します。
上の「ログ用S3バケット」は全アカウントで集約した主に証跡などの総合的なログを保管するストレージです。結構ログは溜まります。
下の「アクセスログ用s3バケット」は先程の「ログ用S#バケット」へアクセスしたログを保管するストレージです。上ほどログはたまりません……
要件次第ですが、あとで簡単に変更できるのでひとまずデフォルトでいきます。
年単位でなく日単位の指定も可能です。
(それにしても10年もいらない気がしますが……)
KMS暗号化も要件次第ですが、必須ではありません。セキュリティ要件を求めるのであれば必要ですが、一応少しだけお金がかかります。
ひとまず今回はオフにします。
BackupもKMS暗号化も後でこれも簡単に変更できるし、明確にバックアップしたいものが決まってないためです。
さて、やっと確認画面に来ました。設定が問題ないことを確認します。
※今回リージョンは多くしちゃったのですがなるべく最小限にしましょう。
確認し、問題なければ作成します。押下すると下記の画面に進み、ConrolTowerの構築が自動で進みます!
構築は60分間で、バックグラウンドで進むため、放置して別作業を行っていても問題ありません。
ControTowerによって、RootOUの下に管理者アカウントと、先ほど入力したSecurityOUとSandboxOUの2つが、SecurityOUの中に監査アカウントとログアーカイブアカウントが作成されます。
「ステータスを表示」すると、どこまで構築が進んでいるのかを確認可能です。
60分立つと、ControlTowerが構築完了し、ランディングゾーン(セキュリティとか諸々整備されたマルチアカウント環境)が利用できるようになっていました。
ControlTowerの左タブの「組織」をクリックすると、現状のControlTowerのアカウント構成がわかります。フォルダマークがOU,立方体マークがアカウントになります。
登録というのがControlTowerへの登録(=ControlTower管理下に置くこと)を指しており、ここでの登録数は 配下のOU/アカウントがどのくらい登録されているか を表しています。そのOU自身は数に含まれていまれていませんのでご安心ください。
数、構成が画面のようになっていれば問題ありません。
ここまででControlTowerの構築は完了です。ポチポチは大変でしたが、逆にそこまで知識がなくても基本的にデフォルトの設定で構築までできることがわかっていただけたと思います。
おわりに
ControlTowerの構築作業お疲れ様でした……
時間は少しかかるかもですが、基本的にはデフォルトで、一部カスタマイズすれば進められることがわかります。
これでControlTowerは完成しましたが、まだまだこの環境を活かして拡張することでよりセキュリティを高めたり、利便性を上げることが出来ます。
例えば
・SecurityHubと統合して全アカウントのセキュリティについてチェックしたり、
・GuardDutyと統合して外部からの脅威に備えたり
・各アカウントにSSOでサインインして、スイッチロールよりも快適&安全にサインイン
・IAM Access Analyzerと統合して全アカウントのIAMロール棚卸し/外部のユーザーを検知
などなど……色々なことができます、次回以降ではこういったものもやっていければと思いますので、よろしければ見てみてください!
あと参考になったらストック/いいねもしていただけると、とっっても嬉しいです
ではまた~
←前回記事
次回記事→
①の記事でも触れましたが、構築にあたり参考にした手順は@tonkatsu_oishiさんの以下記事です。
また、上記の補強として、もう一つ@gohanparty_humhumさんの以下手順も参考にしております。
お二方とも大変勉強になりました、ありがとうございました……!
今後もなるべくお二方とは違う視点で、2025年2月時点の更新情報込みで書いていければと思います。