AWS入門ブログリレー2024〜AWS Control Tower編〜
みなさんこんにちは、杉金です。
当エントリは弊社AWS事業本部による『AWS 入門ブログリレー 2024』の3日目のエントリです。
このブログリレーの企画は、普段 AWS サービスについて最新のネタ・深い/細かいテーマを主に書き連ねてきたメンバーの手によって、 今一度初心に返って、基本的な部分を見つめ直してみよう、解説してみようというコンセプトが含まれています。
AWS をこれから学ぼう!という方にとっては文字通りの入門記事として、またすでに AWS を活用されている方にとっても AWS サービスの再発見や 2024 年のサービスアップデートのキャッチアップの場となればと考えておりますので、ぜひ最後までお付合い頂ければ幸いです。
では、さっそくいってみましょう。今回のテーマは『AWS Control Tower』です。
Control Towerとは
AWS Control Tower | AWSの概要より引用
Control Towerとは、簡単に言うと複数のAWSアカウント(マルチアカウント)をベストプラクティスに基づいて設定および管理してくれるサービスです。Control Towerは次の機能を持っています。
- AWSのOrganizations、Service Catalog、IAM Identity Centerなど複数サービスを使ってランディングゾーンを構築する
- ダッシュボードからランディングゾーンの状態を監視する
- 組織からOUやアカウントのControl Towerへの登録状況を確認でき、OUやアカウントの作成/登録ができる
- 管理・統制からの逸脱(ドリフト)をさせないためにOUにコントロールを適用する
- Account Factoryで新しいAWSアカウントの作成と初期設定を行う
各機能を紹介
ランディングゾーン
ランディングゾーンとは、マルチアカウントを適切に管理、利用するために整えた環境のことです。ランディングゾーンは、おもに2種類あります。
- サービスベースドランディングゾーン
- カスタムランディングゾーン
サービスベースドランディングゾーンはサービスとして提供されるランディングゾーンで、Control Towerが作るランディングゾーンはこれに該当します。もう一方のカスタムランディングゾーンは自身で構築するランディングゾーンです。Control Towerが作るランディングゾーンでは、AWSのセキュリティサービスを組織全体で管理するAuditアカウントやログを一元保管するLogArchiveアカウントを用意します。ほかにもアカウントログインに使用するIAM Identity Centerの有効化なども含まれます。
aws-control-tower - Building a landing zone - AWS Prescriptive Guidanceより引用
ランディングゾーンの説明は以下のページにも記載されています。
ランディングゾーンは例えるなら空港
個人的なイメージですが、ランディングゾーンは空港全体を作り出すようなものだと思っています。飛行機が安全に離着陸できる滑走路、空港とその付近をモニタリングする管制塔、メンテナンスを行う格納庫、乗客の乗り降りに使うターミナルなど。どれも空港に欠かせないものでありながら、安全性とガバナンスが求められます。
新たに空港を作りたいときに、自ら設計・構築するのもひとつの選択肢ですが、ベストプラクティスに応じた設計で構築してくれる。そのようなサービスベースドランディングゾーンを作る機能をControl Towerは持っています。
ランディングゾーンのセットアップ
Control Towerをはじめに利用するときにまずランディングゾーンのセットアップから始まります。
(Control Towerサービスの有効化とランディングゾーンのセットアップは同義です)
ランディングゾーンのセットアップには前提条件が存在します。
前提条件を満たしたらランディングゾーンをセットアップしていきます。
ランディングゾーンのカスタマイズ
ランディングゾーンはカスタマイズができます。ランディングゾーンのセットアップ時にパラメータをデフォルトから変更することやセットアップ後に必須以外のコントロールを有効にして統制を高めることなどができます。また、CfCTというランディングゾーンのカスタマイズを行うソリューションも提供されています。
ランディングゾーンにはバージョンがある
Control Towerが提供するランディングゾーンにはバージョンがあります。本記事の執筆時点では最新バージョンは3.3です。各種AWSサービスのアップデートに追従するようにランディングゾーンも日々進化していきます。どれくらいの頻度で新バージョンが発表されるのか、直近3年のペースです。
- 2023年:3回
- 2022年:3回
- 2021年:1回
新バージョンの発表が年に数回あることが分かります。新バージョンに切り替えるには手動でランディングゾーンの更新を行います。各バージョンについての詳細は以下のページをご確認ください。
ちなみに昨年11月にControl TowerのAPIが強化され、ランディングゾーンの運用をAPI経由で行えるようになりました。
ダッシュボード
ダッシュボードからランディングゾーンの状態を確認できます。
確認できる情報としては以下のものがあります。
- 環境の概略(組織単位とアカウント数)
- 有効な統制の概要(種類ごとのコントロール数)
- 非準拠のリソース
- 登録済みの組織単位
- 登録済みアカウント
ランディングゾーンが管理を逸脱した状態(ドリフト)になるとダッシュボード上に次のような表示になります。
組織
組織では、OUやアカウントのControl Towerへの登録状況が確認でき、OUやアカウントの作成/登録ができます。
登録には前提条件があります。
前提条件を満たさず登録を進めると以下のエラーになります。
事前チェックをダウンロードするとCSV形式で何が原因で失敗したかを確認できます。上記のケースではAWS Configの設定が既に行われていたことが原因でした。設定を修正して、再度OUを登録します。
Control Towerベースライン
Control Towerベースラインを使用すると、OU単位でガバナンス標準を設定できます。ランディングゾーンにもバージョンがありますが、ベースラインにもバージョンが存在します。 デフォルトで現在のランディングゾーンのバージョンと互換性のある最新のベースラインが適用されます。必要性が生じない限りはベースラインを意識する必要はありません。
コントロール
組織全体のガバナンス保護や逸脱を検知する機能としてコントロール(統制)が存在します。コントロールは動作の種類と必須度合いを表すガイダンスが決められています。
- 動作の種類
- 予防
- 検出
- プロアクティブ
- コントロールのガイダンス
- 必須
- 強く推奨
- 選択的
動作の種類ですが、「予防」はSCPを利用したコントロールで、各AWSアカウントの利用者にさせてはいけない操作を禁止するものです。「検出」はポリシー違反やリソースの非準拠を検出するものです。しくみとしてはAWS Configルールを使用しています。「プロアクティブ」は、プロビジョニング前にリソースをスキャンし、リソースがそのコントロールに準拠していることを確認します。これは裏側でCloudFormationフックが呼び出されて機能しています。
コントロールのガイダンスですが、「必須」のコントロールは常に有効化になっており、オフにすることはできません。そのほかの「強く推奨」や「選択的」は必要性に応じて、コントロールを有効化にして対象OUを指定します。
コントロールは500以上の種類があります。どのようなコントロールがあるかは以下のライブラリをご参照ください。
アカウントファクトリー
アカウントファクトリーからAWSアカウントを作成できます。
また、作成するVPCについても[ネットワーク構成]からいくつか設定をチューニングできます。
- インターネットアクセス可能なサブネット
- プライベートサブネットの最大数
- VPCのCIDR
- VPC作成のリージョン
AWSアカウントの作成画面は以下です。アカウントに登録する情報やIAM Ideneity Centerへの登録情報を入力します。 登録するとService Catalog経由でアカウント発行が処理されます。
画像の下の方にあるカスタマイズは、re:Invent 2022で発表された機能で、AFCと呼ばれます。 アカウントの作成時の初期セットアップなどを行えます。
AFCを使用したアカウントのカスタマイズ
AFTを使用したアカウントのカスタマイズ
Terraformを利用したアカウントのカスタマイズ(AFT)も可能です。Terraformを利用している場合はぜひとも使いたい機能です。
ここまでControl Towerの各種機能を紹介しました。注意点として、リセラー経由でAWSアカウントを利用する場合、利用できない機能がある可能性があります。利用前に制約がないか事前に確認するとよいでしょう。
補足情報
ドリフトについて
管理を逸脱した状態をドリフトと呼びます。ドリフトは複数タイプがあります。
ランディングゾーン自体の提供に関わるドリフトは以下のようになり、修復を行わない限りControl Towerを一切使用できない状態になります。
修復はランディングゾーンのセットアップや更新と同じく、ランディングゾーンを再設定します。
学習用ワークショップ
Control Towerを学ぶためのワークショップがあります。
その中の「Extending Your Landing Zone」は英語版のみページに対応していますが、OUのベストプラクティスやランディングゾーンを拡張させる各種サービスとの連携方法が紹介されています。Control Tower知っているよという方でもこのあたりは改めて見ると新たな発見があるかもしれません。また、学習コンテンツをまとめたブログもあります。
料金
Control Tower自体には料金は発生しません。Control Towerが作成する各種リソースに料金が発生します。 以下の料金ページに各リソースでどのように料金が発生するかのサンプルが記載されています。
管理者向けのベストプラクティス
管理者向けのベストプラクティスについてまとまったページがあります。 ランディングゾーンの計画についても記載されていますので、Control Towerの利用を検討する段階から見ておくとよいでしょう。
さいごに
以上、『AWS 入門ブログリレー 2024』の3日目のエントリ『AWS Control Tower』編でした。 次回、3/28は弊社あしざわによる『Amazon S3』編の予定です!
参考情報
- AWS Control Towerで大阪リージョンを利用する際の注意事項をまとめてみた | DevelopersIO
- Getting started with AWS Control Tower - AWS Control Tower
- AWS Control Tower 基礎編【AWS Black Belt】 - YouTube
- AWS Control Tower 手順編 AWS Control Tower の有効化【AWS Black Belt】 - YouTube
- Control Towerを有効化するための前提条件についてまとめてみた | DevelopersIO
- Control Tower 有効化後、IAM Identity Center ユーザーを作成し LogArchive アカウントと Audit アカウントにログインするまで | DevelopersIO
- AWS再入門2020 AWS Control Tower編 | DevelopersIO