AWS Control Towerを使って本気でAWSアカウントを守る

# はじめに
この記事はDevOps on AWS大全の一部です。
DevOps on AWS大全の一覧は[こちら](https://qiita.com/tech4anyone/items/b06f88035d27c6ef13b2)。

この記事ではAWS Control Towerに関連する内容を超詳細にまとめています。

具体的には以下流れで説明します。

- AWS Control Towerとは
- AWS Control Towerの仕組み
- AWS Control Towerの活用
- AWS Control Towerのベストプラクティス

AWSの区分でいう「Level 200：トピックの入門知識を持っていることを前提に、ベストプラクティス、サービス機能を解説するレベル」の内容です。

# この記事を読んでほしい人
- AWS Control Towerがどういうサービスか説明できるようになりたい人
- AWS Control Towerを採用するときのベストプラクティスを説明できるようになりたい人
- AWS Certified DevOps Engineer Professionalを目指している人


# AWS Control Towerとは
AWS Control Towerは、AWSのマルチアカウント環境を簡単にセットアップし、管理するためのサービスです。

AWS Control Towerは、AWSのベストプラクティスに基づいて、セキュリティやコンプライアンスを確保するためのポリシーを自動的に適用します。
また、AWS Control Towerを利用することで、新しいアカウントの作成や既存のアカウントの統合を容易に行うことができます。

# AWS Control Towerの仕組み
AWS Control Towerは、AWS Organizationと組み合わさりながら、以下のコンポーネントで構成されています。

## Landing Zone
Langind ZoneはAWS Control Towerが作成するマルチアカウント環境の基盤です。
Landing Zoneには、管理アカウントとログアカウントが含まれます。

管理アカウントは、AWS Control Towerの設定や操作を行うためのアカウントで、ログアカウントは、Landing Zone内のすべてのアクティビティを監査するためのアカウントです。

また、Landing Zone内のアカウントをグループ化するための単位にOUが存在します。

OUには、ルートOUとサービスOUがあります。
ルートOUは、Landing Zone内のすべてのアカウントを含む最上位のOUで、サービスOUは、ルートOUの下に作成される任意のOUです。
サービスOUは、特定の目的や役割に応じてアカウントを分類することができます。

AWS Organizationを利用するとき同様、適切な組織設計にすることで効率よく各アカウントを管理することが可能になります。

## Guardrails
GuradrailsはAWS Control Towerが提供するアカウントのセキュリティとコンプライアンスを守るためのポリシーで予防的なGuardrailsと検出的なGuardrailsがあります。

![](https://storage.googleapis.com/zenn-user-upload/e3e7a47d75ee-20231216.png)

予防的なGuardrailsは、Landing Zone内のアカウントに対して、許可された操作やリソースを制限するためのSCPです。

一方、検出的なGuardrailsは、Landing Zone内のアカウントに対して、不適切な操作やリソースを検出するためのAWS Configルールです。

Guardrailsを活用することで、AWS Control Tower配下のAWSアカウントのセキュリティとコンプライアンスを一貫性のあるものにできるため、マルチアカウント戦略をとっている場合には必ず利用したい機能です。

# AWS Control Towerの活用
## 新規にマルチアカウント環境を構築する場合
新規にマルチアカウント環境を構築する場合、AWS Control Towerを使用すると、ベストプラクティスに基づいたマルチアカウント環境を簡単にセットアップすることができます。

また、Account Factoryを使用すると、必要な数だけ新規アカウントを作成することができます。

![](https://storage.googleapis.com/zenn-user-upload/94b4ad4b0b7a-20231216.png)

Account Factoryを利用することで、事前に作成したベースラインと設定に沿ったAWSアカウントが簡単に作成されるようになります。
これによって、全社での一貫したセキュリティとコンプライアンスを守りながら、迅速なAWSアカウントの払い出しが可能になります。

## 既存のマルチアカウント環境を管理する場合
既存のマルチアカウント環境をAWS Control Towerの管理下に置く場合、AWS Control Towerを使用すると、既存のマルチアカウント環境をLanding Zoneに登録し、一元的に管理することができます。

![](https://storage.googleapis.com/zenn-user-upload/e72355a26a3a-20231217.png)

また、Guardrailsを使用すると、既存のマルチアカウント環境に対してもガバナンスルールやセキュリティポリシーを適用することができます。

# AWS Control Towerのベストプラクティス

AWS Control Towerを効果的に利用するためには、以下のようなベストプラクティスを守ることが推奨されます。

| ベストプラクティス | 説明 |
| --- | --- |
| 管理アカウントとログアカウントを保護する | 管理アカウントとログアカウントは、Landing Zone内で最も重要な役割を果たすため、厳重に保護する必要があります。管理アカウントとログアカウントには、MFAを有効にし、最小限のユーザーやロールにアクセス権を付与し、定期的にパスワードやキーを変更することが推奨されます。 |
| OUを適切に設計する | OUは、Landing Zone内のアカウントを効率的に管理するための単位です。OUは、ビジネスやプロジェクトの要件に応じて、適切な階層や名称で設計することが推奨されます。また、OUには、必要なGuardrailsを適用し、不要なGuardrailsは無効化することが推奨されます。 |
| Account Factoryを利用する | Account Factoryは、AWS Control Towerが提供するアカウント作成サービスです。Account Factoryを利用することで、Landing Zone内に新しいアカウントを簡単に作成し、自動的にOUやGuardrailsを適用することができます。また、Account Factoryは、AWS SSOやAWS Service Catalogを利用して操作することができます。 |
| AWS Configを活用する | AWS Configは、AWSリソースの設定変更やコンプライアンス状態を監視するサービスです。AWS Control Towerは、AWS Configを利用して検出的なGuardrailsを実現しています。AWS Configを活用することで、Landing Zone内のリソースの変更履歴やコンプライアンスレポートを確認することができます。また、AWS Configは、カスタムルールやレメディエーションアクションを作成することで、より柔軟なポリシー管理を行うことができます。 |


# まとめ
この記事ではAWS Organizationに関連する内容を超詳細にまとめました。

- AWS Control Towerとは
- AWS Control Towerの仕組み
- AWS Control Towerの活用
- AWS Control Towerのベストプラクティス

次回はIAM Identity Centerを超詳細解説します。