LAC WATCH

セキュリティとITの最新情報

RSS

株式会社ラック

メールマガジン

サイバーセキュリティや
ラックに関する情報をお届けします。

サービス・製品 | 

AWS Control Towerでマルチアカウント環境を構築してみた

はじめまして。クラウドインテグレーションサービス部の中尾です。
「クラウド」という名のつく通り、AWSやOCI、Azure、Google Cloud(旧GCP)などクラウド案件を幅広く扱っている部門に所属しており、私自身はAWSの案件に携わって2か月ほどになります。

突然ですが、AWS環境でのマルチアカウント構成を利用していますか?

マルチアカウントとは、一つのサービスを複数のアカウントで使い分けて利用することを指します。AWSでは、複数のAWSアカウントでシステムを構成する方法をベストプラクティスとして推奨していますが、セキュリティに強みを持つラックとしても、セキュリティやガバナンスの強化のため、マルチアカウント構成を推奨しています。

しかし、アカウントが増えれば管理が煩雑になるのではないか、アカウントごとに設定にばらつきが出てしまうのではないか、といった不安の声も聞こえてきます。そこでご紹介したいのが、「AWS Control Tower」です。

今回は、AWS歴が浅い私でも短時間で複数のAWSアカウントをセットアップできた「AWS Control Tower」というサービスについて、社内のAWS検証環境で構築した際に感じたメリットとデメリットをご紹介します。

AWS Control Towerとは

AWS Control Towerとは、マルチアカウントを設定、管理できるマネージドサービスです。これを利用すると、セキュリティのベストプラクティスに則った環境を自動でセットアップできます。

AWS Control Towerの機能

AWS Control Towerには大きく4つの機能があります。

1. シングルサインオン

ログイン・ユーザー管理を一本化するSSO(シングルサインオン)を自動で有効化、セットアップしてくれます。アカウントごとにユーザーID・パスワードを管理し、ログイン処理を実施する手間を取り除けます。

2. ログ集約

CloudTrailを自動で有効化、セットアップしてくれます。アカウントごとにログ設定を入れる必要がなくなる、複数アカウントのログを一か所で管理し調査等が簡単になる、オペレーションミスや故意に操作ログを失うことがなくなるメリットがあります。

3. ガードレール

AWS ConfigやAWS Organizationを自動で有効化、セットアップしてくれます。ガードレールはAWS環境全体に継続的なガバナンスを提供する高レベルのルールであり、「コントロール」と呼ばれます。

この機能によって、セキュリティ担当者のリスト作成、更新、確認の負担、セキュリティのチェックリストの入力や確認の負担を減らしつつ、セキュリティの向上を実現します。セキュリティ上問題のある操作をしないよう禁止する「予防的ガードレール」と、リスクのある構成などを検知・通知する「発見的ガードレール」の2種類を組み合わせてセキュリティ統制を行います。

4. アカウント作成

AWS Service CatalogやAWS CloudFormationによってアカウント作成を自動でセットアップしてくれます。このAccount Factoryと呼ばれる機能によって、先述のSSO、ログ集約、コントロールの設定が施されている、統制の効いた環境を作成できます。

AWS Control Towerのアカウント区分

AWS Control Towerでは、大きく4種類のアカウントが登場します。

AWS Control Towerで登場する4種類のアカウント
アカウント 概要
AWS Control Tower管理アカウント AWS Control Towerの設定を行うアカウント。コントロールの有効化、権限管理を実施。
監査アカウント セキュリティやコンプライアンスのチームが利用するアカウント。各アカウントの変更を監視し、通知を送信。
ログアーカイブアカウント ログを安全に保存するためのアカウント。AWS CloudTrailとAWS Configのログを一元管理されたAmazon S3バケットに保存。
メンバーアカウント AWS Control Towerに登録されたアカウント。AWS Control Towerで有効化したコントロールが設定される。

AWS Control Towerを使ってみた

AWS Control Towerのセットアップ方法は、ランディングゾーンを含んだ新しい組織を作成する方法と、既存の組織にAWS Control Towerランディングゾーンを追加する方法の2種類があります。

今回はランディングゾーンを含んだ組織を新規に作成する方法を検証していきます。

AWS Control Towerで環境を構築する

AWSマネジメントコンソールにサインインし、AWS Control Towerのサービス画面を開きます。右上の「ランディングゾーンの設定」をクリックします。

AWS Control Towerのセットアップ、ランディングゾーンの設定

ステップ1 料金の確認とリージョンの選択

まずは、ホームリージョンや追加リージョンの設定をします。

今回の検証では、ホームリージョンを「アジアパシフィック(東京)」、リージョン拒否設定を「有効になっていません」に設定し、「次へ」をクリックします。ホームリージョンは設定後に変更ができないので注意が必要です。

ホームリージョンを「アジアパシフィック(東京)」に設定
リージョン拒否設定を「有効になっていません」に設定

ステップ2 組織単位(OU)の設定

OUの設定を行います。必須の「基礎となるOU」と、任意で追加できる「追加のOU」をここで作成します。

デフォルト名はそれぞれ「Security」「Sandbox」となっています。OU名も設定後に変更ができないため注意してください。

基礎となるOU
追加のOU

ステップ3 共有アカウントの設定

ログアーカイブアカウント、監査アカウント、暗号化の設定を行います。

「新規アカウントの作成」を選択し、メールアドレスとアカウント名を入力して「次へ」をクリックします。各アカウント名もホームリージョン、OU名と同様に、設定後に変更ができません。

ログアーカイブアカウントで「新規アカウントの作成」を選択
アカウントの監査で「新規アカウントの作成」を選択

ステップ4 その他の設定

SSO(シングルサインオン)を実装する場合、「AWS Control TowerはIAM Identity Centerを使用してAWSアカウントアクセスを設定します。」を選択します。CloudTrailでログを収集したい場合、AWS CloudTrailの設定を「有効」にします。

AWSアカウントアクセス設定
AWS CloudTrailの設定

さらに、Amazon S3のログ設定で、ログの保持期間を設定します。

Amazon S3のログ設定
KMS暗号化

暗号キーを作成してAWS Control Towerでリソースをコントロールしたい場合、「KMSキーを作成する」をクリックして、KMSキーを新規に作成します。キーのタイプは「対称」、キーの使用方法は「暗号化および復号化」、詳細オプションは「KMS - 推奨」、リージョンごとは「単一リージョンキー」を設定し、「次へ」をクリックします。

キーのタイプ
キーの使用法
詳細オプション

エイリアスに任意の名前を設定し、「次へ」をクリックします。

エイリアス

キーを管理できるIAMユーザーを選択し、「次へ」をクリックします。今回の検証ではAWS ConfigとCloudTrailにだけ使いたいため、キーユーザーは指定せずに「次へ」をクリックします。

キーユーザー

設定値を確認して「完了」をクリックします。

キー設定
エイリアスと説明
タグ

作成したキーのポリシーを編集します。

キーポリシー

AWS Control Towerの設定画面で作成したKMSキーを選択し、「次へ」をクリックします。

KMS暗号化

ステップ5 ランディングゾーンの確認とセットアップ

これまでに設定してきた内容を確認し、ページ下部のチェックボックスにチェックを入れて「ランディングゾーンの設定」をクリックします。

内容を了承する場合はチェックボックスにチェックを入れ、「ランディングゾーンの設定」をクリック

「ランディングゾーンの設定が完了しました。」と表示が出たら設定完了です。

今回の検証では20分ほどでセットアップが完了しました。

お客様のランディングゾーンが利用できるようになりました

AWS Control Towerのプロビジョニングが完了すると登録したメールアドレスに確認メールが来るので、リンクをクリックします。

「Subscription confirmed!」と表示された画面に遷移すると認証完了です。

検証してみて気付いたAWS Control Towerのメリット・デメリット

メリット

簡単にセットアップできる

マネジメントコンソールの画面に沿ってボタンをクリックするだけで、複数のアカウントを作成し複数のサービスをセットアップができました。AWSの理解度に依存せずに、AWSのベストプラクティスに沿った形で複数のAWSアカウントを構築・管理できることは大きなメリットだと感じました。

AWSアカウントの切り替えが楽になる

正確にはIAM Identity Centerの機能にはなりますが、アカウントを切り替えるときに毎回ユーザーIDやパスワードを入力する、Authenticatorアプリを起動して認証する手間が省けるので、作業効率の向上にも繋がりました。AWS Control Towerを活用すれば、簡単にこの機能を実装できます。

複数のAWSアカウントに対して統制を効かせられる

AWS Control Towerには予防、検出、プロアクティブといった非常に多くの種類のセキュリティのコントロールが用意されています。このコントロールを用いることで、セキュリティリスクのある操作をブロック、またリスクへの早期対処が実現できます。

デフォルトで有効になっているのはガイダンスが「必須」になっているコントロールのみとなっていますが、「強く推奨」「選択的」といったガイダンスのコントロールを、自身の環境に合わせて機能させられます。コントロールを活用すると、複数のAWSアカウントに対して統制を効かせられるため、アカウントごとの設定にばらつきが出なくなりました。

詳細のガイダンスが「必須」になっている

デメリット

リソースのカスタマイズができない

AWS Control Towerで作成されたリソースは変更・削除しないことが推奨されており、SCPで制御されているため、カスタマイズができません。

例えばAWS Control Towerが作成したEventBridgeのルールだと、Configルールを新たに追加したり、Configルールのコンプライアンスステータスが変わったりしたタイミングで監査アカウント宛てに通知メールが送信されます。大量のメールが届くことになりますが、EventBridgeのルールを編集できないようにSCPで制御されているため、通知の抑制ができません。

複数のAWSサービスを使用するため、理解に時間を要する

AWS Control Towerのメリットは簡単にセットアップできると先述しましたが、たった数クリックで複数のサービスができあがるので、各AWSアカウントにどのようなリソースが、どのような意図で作成されるのかを理解したり、それぞれのリソースにどのような関係性があるのかを把握したりすることが大変でした。

また、作成されたリソースを確認してみると、AWSユーザーガイドに記載の「作成されるリソース」と一部異なることがわかりました。以下に示しますが、実際に利用する際には確認が必要です。

アカウント ユーザーガイドにあるが作成されないリソース ユーザーガイドにないが作成されたリソース
管理アカウント ◆CloudFormationのStackSets
・AWSControlTowerExecutionRole
◆CloudFormationのStackSets
・AWSControlTowerGuardrailAWS-GR-DETECT-CLOUDTRAIL-ENABLED-ON-SHARED-ACCOUNTS
・AWSControlTowerBP-VPC-ACCOUNT-FACTORY-V1
監査アカウント ◆CloudFormationのStackSets
・StackSet-AWSControlTowerBP-BASELINE-CLOUDTRAIL-
◆Amazon Cloud WatchのCloudWatchLogs
・aws-controltower/CloudTrailLogs
◆IAMのロール
・aws-controltower-CloudWatchLogsRole
◆CloudFormationのStackSets
・StackSet-AWSControlTowerGuardrailAWS-GR-DETECT-CLOUDTRAIL-ENABLED-ON-SHARED-ACCOUNTS-
◆Amazon Cloud Watchのイベントルール
・AWSControlTowerManagedRule
ログアーカイブアカウント ◆CloudFormationのStackSets
・StackSet-AWSControlTowerBP-BASELINE-CLOUDTRAIL-
◆Amazon Cloud WatchのCloudWatchLogs
・aws-controltower/CloudTrailLogs
◆IAMのロール
・aws-controltower-CloudWatchLogsRole
◆Amazon Cloud Watchのイベントルール
・AWSControlTowerManagedRule
メンバーアカウント ◆CloudFormationのStackSets
・StackSet-AWSControlTowerBP-BASELINE-CLOUDTRAIL-
◆Amazon Cloud WatchのCloudWatchLogs
・aws-controltower/CloudTrailLogs
◆IAMのロール
・aws-controltower-CloudWatchLogsRole
◆CloudFormationのStackSets
・StackSet-AWSControlTowerBP-VPC-ACCOUNT-FACTORY-V1-
◆Amazon Cloud Watchのイベントルール
・AWSControlTowerManagedRule
管理アカウント
ユーザーガイドにあるが作成されないリソース
◆CloudFormationのStackSets
・AWSControlTowerExecutionRole
ユーザーガイドにないが作成されたリソース
◆CloudFormationのStackSets
・AWSControlTowerGuardrailAWS-GR-DETECT-CLOUDTRAIL-ENABLED-ON-SHARED-ACCOUNTS
・AWSControlTowerBP-VPC-ACCOUNT-FACTORY-V1
監査アカウント
ユーザーガイドにあるが作成されないリソース
◆CloudFormationのStackSets
・StackSet-AWSControlTowerBP-BASELINE-CLOUDTRAIL-
◆Amazon Cloud WatchのCloudWatchLogs
・aws-controltower/CloudTrailLogs
◆IAMのロール
・aws-controltower-CloudWatchLogsRole
ユーザーガイドにないが作成されたリソース
◆CloudFormationのStackSets
・StackSet-AWSControlTowerGuardrailAWS-GR-DETECT-CLOUDTRAIL-ENABLED-ON-SHARED-ACCOUNTS-
◆Amazon Cloud Watchのイベントルール
・AWSControlTowerManagedRule
ログアーカイブアカウント
ユーザーガイドにあるが作成されないリソース
◆CloudFormationのStackSets
・StackSet-AWSControlTowerBP-BASELINE-CLOUDTRAIL-
◆Amazon Cloud WatchのCloudWatchLogs
・aws-controltower/CloudTrailLogs
◆IAMのロール
・aws-controltower-CloudWatchLogsRole
ユーザーガイドにないが作成されたリソース
◆Amazon Cloud Watchのイベントルール
・AWSControlTowerManagedRule
メンバーアカウント
ユーザーガイドにあるが作成されないリソース
◆CloudFormationのStackSets
・StackSet-AWSControlTowerBP-BASELINE-CLOUDTRAIL-
◆Amazon Cloud WatchのCloudWatchLogs
・aws-controltower/CloudTrailLogs
◆IAMのロール
・aws-controltower-CloudWatchLogsRole
ユーザーガイドにないが作成されたリソース
◆CloudFormationのStackSets
・StackSet-AWSControlTowerBP-VPC-ACCOUNT-FACTORY-V1-
◆Amazon Cloud Watchのイベントルール
・AWSControlTowerManagedRule

さいごに

今回の記事ではAWS Control Towerを利用する手順と、メリット・デメリットをご紹介しました。複雑に見えるマルチアカウントを簡単にセットアップできるAWS Control Towerの魅力を感じていただけたでしょうか。

私自身、これまではオンプレミスの構築案件に携わる機会が多かったため、短時間で難なくこれだけの環境を整えられる手軽さにはあっけなさすら感じました。

気付いたらアカウントがどんどん増えて管理が大変だと感じている方、セキュリティやガバナンスを強化したいけれど何から始めればいいか分からず着手できていない方、何となくマルチアカウントは難しそうだなと後回しにしている方、一度AWS Control Towerを試してみてはいかがでしょうか。

また、ラックではお客様の漠然としたお悩みや課題にも一緒に向き合い、適切なサービスを提案いたしますので、ぜひお気軽にお問い合わせください。

「マルチアカウント」に関するお問い合わせ

この記事は役に立ちましたか?

はい いいえ

関連記事

LAC WATCH

関連記事をご紹介します

  • AWS Configアグリゲータによる収集データを、AWS LambdaからAPIで取得する

  • クラウドのパワーを使い切る!金融犯罪による被害ゼロを目指すAIゼロフラウドのAWS開発事例

  • AWSの機能を活用するために押さえておきたい"HTTPリクエスト"のはなし