目次
AWS Control Tower 完全ガイド v2.0
初心者から実務者向けの包括的解説
AWS Control Tower は、「AWS ランディングゾーン(セキュアなマルチアカウント基盤)をベストプラクティスに沿って自動構築・継続管理し、ガードレール(Preventive / Detective Controls)で全アカウントにセキュリティポリシーを強制するフルマネージドサービス」 です。AWS Organizations・IAM Identity Center・CloudTrail・Config・Security Hub・Backup Policy を統合し、Account Factory でアカウント自動プロビジョニング。Proactive Controls(CloudFormation Hooks)でデプロイ前のコンプライアンスチェック。本ドキュメントは Control Tower の概念・ランディングゾーン・ガードレール・運用・2025-2026 動向を体系的に解説する包括的ガイドです。
ドキュメントの目的
本ガイドは以下を対象としています。
- 初心者向け: マルチアカウント AWS 環境の基本を学びたい方
- アーキテクト向け: ランディングゾーン設計・セキュアなアカウント構造を構築したい方
- セキュリティ担当者向け: ガードレール・コンプライアンスコントロール全社適用を実装したい方
- DevOps / インフラ向け: Account Factory・AFT(Terraform)による自動化を実現したい方
- 意思決定者向け: 数十〜数百アカウント運用の標準化・セキュリティガバナンス
2025-2026 年の AWS Control Tower エコシステム
- Proactive Controls 拡張(2024-2025):CloudFormation デプロイ前のコンプライアンスチェック、200+ 組み込みコントロール
- RCP(Resource Control Policy)拡大:S3・KMS・STS に続き ECR・OpenSearch Serverless 対応
- AI Services Opt-out Policy:生成 AI 使用を組織レベルで制御・禁止可能
- Backup Policy 強化:自動バックアップスケジュール一括管理
- Chatbot Policy(Chat Applications Policy):Slack・Teams から AWS 操作を制御
- Tag Policy 拡張:リソースタグの統制をより厳密に実装
- Terraform / CDK 完全統合:Infrastructure as Code でランディングゾーン・アカウント定義
目次
- 概要
- Control Tower が解決する課題
- 主な特徴
- アーキテクチャ
- コアコンポーネント
- 主要ユースケース
- 設定・操作の具体例
- 類似サービス比較表
- ベストプラクティス
- トラブルシューティング
- 2025-2026 最新動向
- 学習リソース・参考文献
- 実装例
- チェックリスト
- まとめ
- 参考文献
概要
初心者向けメモ: Control Tower は「複数の AWS アカウントをセキュアに一括管理するサービス」です。AWS Organizations を手動でセキュアに構成するには数週間かかりますが、Control Tower はベストプラクティスに従って数時間で「ランディングゾーン」を自動構築。全アカウントに「ガードレール」(セキュリティルール)を自動適用し、Account Factory でアカウント作成を標準化・自動化できます。
AWS Control Tower 公式定義:
“AWS Control Tower provides a managed service for launching and governing a landing zone on AWS, which is a well-architected, multi-account AWS environment.”
Control Tower の位置づけ
graph LR
A["AWS マルチアカウント<br/>環境構築"]
subgraph Governance["ガバナンスレベル"]
Manual["完全手動<br/>(Organizations から<br/>全設定自分で)"]
CT["Control Tower<br/>(自動構築<br/>ベストプラクティス)"]
Custom["カスタム<br/>(Control Tower<br/>+ 追加ポリシー)"]
end
A --> Manual
A --> CT
A --> Custom
style CT fill:#e6ffe6
style Custom fill:#e6f3ff
このサービスを選ぶ理由
なぜ AWS Control Tower か?
| 理由 | 詳細 |
|---|---|
| セットアップ時間大幅短縮 | 手動で数週間かかるランディングゾーン構築を数時間で実現 |
| ベストプラクティス自動適用 | AWS Well-Architected Framework / CIS AWS Foundations Benchmark に準拠したガードレール |
| 一元ガバナンス | 全アカウントへのセキュリティ・コンプライアンスルール自動強制 |
| Account Factory 自動化 | 新規アカウント作成プロセス標準化、カスタマイズ可能(AFC / AFT) |
| Proactive Controls | CloudFormation デプロイ前のコンプライアンスチェック、違反リソース作成防止 |
| 複数アカウント管理の統一 | セキュリティ・ネットワーク・ID 管理を一元化、各チームは管理下で自由に開発 |
具体的なユースケース
- エンタープライズの AWS ランディングゾーン構築(開発・ステージング・本番の環境分離)
- 買収会社の AWS 環境統合・ガバナンス強制
- 金融・医療・公共セクターのコンプライアンス要件対応
- マルチリージョン展開時のセキュリティ管理統一
Control Tower が解決する課題
| 課題 | Organizations 手動管理 | Control Tower 解決方法 |
|---|---|---|
| セットアップ複雑性 | Organizations・IAM Identity Center・CloudTrail・Config を個別設定、数週間要 | ランディングゾーン自動構築、数時間完了 |
| セキュリティルール統一 | SCP・Config ルール・CloudTrail ログを個別設定 | ガードレール(200+ 組み込み)を全アカウント自動適用 |
| 新規アカウント作成プロセス | AWS アカウント作成 → Organizations へ追加 → SCP 適用 → IAM Role 設定、手動 | Account Factory で承認後、自動プロビジョニング |
| アカウント別コンプライアンス確認 | 個別にコンソール確認、検証困難 | Compliance Dashboard で一元監視 |
| セキュリティベースラインズレ | チーム・時期でルール異なる可能性 | ガードレール強制で統一ベースラインを維持 |
| 監査ログ管理 | 各アカウント CloudTrail を個別管理 | Log Archive Account に集約自動化 |
| 違反検出と対応 | Config ルール結果を各アカウントで確認 | Detective Control で違反検出・通知自動化 |
| Infrastructure as Code 管理 | CloudFormation / Terraform 個別管理 | AFT(Account Factory for Terraform)で一元定義 |
主な特徴
1. ランディングゾーン(Landing Zone)
自動構築される 3-4 アカウント構造
| アカウント | 用途 | 自動設定項目 |
|---|---|---|
| Management Account | ランディングゾーン全体・Organization 管理 | Organizations Root、Control Tower、ガードレール管理 |
| Log Archive | CloudTrail / Config ログ集約 | S3 バケット、暗号化、ライフサイクルポリシー |
| Audit Account | GuardDuty・Security Hub・Config 委任 | Delegated Administrator 権限 |
| Sandbox OU(初期) | 初期ワークロード・開発用 | 基本的なガードレール設定済み |
OU(Organizational Unit)構造
Root
├── Security(Log Archive / Audit Account)
├── Sandbox(初期開発用)
└── Custom OUs(ビジネス部門別 - ユーザーが追加)
├── Production
├── Development
└── Finance
2. ガードレール(Controls)
3 つのカテゴリ
| カテゴリ | 実装方式 | 例 |
|---|---|---|
| Preventive(予防的) | SCP ベース、違反操作を事前ブロック | 特定リージョン以外のリソース作成禁止、S3 パブリックアクセス禁止 |
| Detective(検出的) | Config ルール・Security Hub ベース、違反検出・通知 | EC2 パブリック IP 割り当て検出、CloudTrail ログ無効化検出 |
| Proactive(プロアクティブ) | CloudFormation Hooks、デプロイ前のコンプライアンスチェック | S3 バケット暗号化必須チェック、CloudFormation テンプレート検証 |
ガードレールの義務付けレベル
| レベル | 説明 | 無効化 |
|---|---|---|
| Mandatory(必須) | Control Tower が必ず適用、デフォルト有効 | 無効化不可 |
| Strongly Recommended(強く推奨) | AWS 推奨、デフォルト有効 | 有効化/無効化可能(非推奨) |
| Elective(選択的) | 組織の要件に応じて選択、デフォルト無効 | 有効化/無効化可能 |
3. Account Factory
アカウント自動プロビジョニング
- テンプレートベース:承認済みテンプレートから選択
- カスタマイズ:AFC(Account Factory Customization)で追加 CloudFormation テンプレート / Config ルール を自動展開
- Terraform 統合:AFT(Account Factory for Terraform)で IaC 管理
デフォルトで設定される項目
- AWS アカウント作成・Organizations への追加
- IAM Identity Center ユーザー・グループ作成
- SCP / RCP 自動適用
- CloudTrail ログ配置
- Config ルール有効化
4. Proactive Controls(CloudFormation Hooks)
CloudFormation デプロイ前のコンプライアンスチェック
テンプレート作成
↓
aws cloudformation deploy
↓
Proactive Control Hook(Preventive)がチェック
↓
コンプライアンス違反検出 → デプロイ中止
コンプライアンス準拠 → デプロイ続行
↓
リソース作成
Proactive Control の例
- S3 バケット:デフォルト暗号化必須
- EC2 インスタンス:IAM Role 必須
- RDS:マルチ AZ・バックアップ有効化必須
- KMS:キーローテーション必須
アーキテクチャ
ランディングゾーン全体構成
graph TD
A["Root(Management Account)"]
subgraph "Security OU"
LogArchive["Log Archive Account<br/>(CloudTrail / Config ログ)"]
Audit["Audit Account<br/>(GuardDuty / Security Hub)"]
end
subgraph "Sandbox OU"
Sand["初期開発アカウント"]
end
subgraph "Custom OUs(ユーザー追加)"
Prod["Production Accounts"]
Dev["Development Accounts"]
end
A --> "Security OU"
A --> "Sandbox OU"
A --> "Custom OUs"
A -->|SCP / RCP| "Security OU"
A -->|SCP / RCP| "Sandbox OU"
A -->|SCP / RCP| "Custom OUs"
A -->|CloudTrail 集約| LogArchive
A -->|GuardDuty 委任| Audit
"Security OU" --> A
"Sandbox OU" --> A
"Custom OUs" --> A
style A fill:#ff9999
style LogArchive fill:#99ccff
style Audit fill:#99ccff
style Prod fill:#99ff99
style Dev fill:#ffff99
コアコンポーネント
1. Organizations(組織階層管理)
Root:最上位、全 OU・Account のポリシー適用基点
OU(Organizational Unit):階層的な Account グループ分け
- Security:ログ・監査・セキュリティツール集約
- Sandbox:初期開発・テスト用
- Production:本番ワークロード
- Development:開発・検証環境
- Finance:財務・経営層専用
Account:個別 AWS アカウント
2. IAM Identity Center(SSO)
全アカウントへのシングルサインオン
- ユーザー / グループ管理(AWS Managed Directory または外部 IdP 連携)
- 権限セット(Permission Set):各アカウントでの IAM Role に相当
- セッション期間:デフォルト 12 時間(カスタマイズ可)
デフォルト権限セット
- AdministratorAccess:フル管理権
- ReadOnlyAccess:読み取りのみ
- カスタム権限セット:組織ポリシー定義
3. CloudTrail(監査ログ)
Organization Trail:全 Account / 全 Region の API 呼び出しを記録
- Log Archive Account の S3 バケットに集約
- S3 サーバーサイド暗号化
- MFA Delete 有効化
4. Config(リソース検証)
Organization Config Recorder:全 Account のリソース状態を記録
- Config ルール自動適用
- Audit Account へ集約
- Config Aggregator で一元監視
5. Backup Policy(自動バックアップ)
2025年新機能:Organizations レベルでバックアップスケジュール定義
- サービス別バックアップ周期(RDS / EBS / EFS / DynamoDB)
- リソースタグベースの差別化設定
6. RCP(Resource Control Policy)
2025年拡大:S3 / KMS / STS に続き、以下対応
- ECR(コンテナイメージレジストリ)
- OpenSearch Serverless
- Glue(データ統合)
主要ユースケース
1. 新規 AWS 環境のセキュアな構築
シナリオ
- スタートアップが AWS を初めて導入
- エンタープライズが AWS クラウドネイティブ化開始
- 数十〜数百アカウント運用の計画
実装フロー
1. Control Tower ランディングゾーン初期化
(Management / Log Archive / Audit Account 自動作成)
2. OU 階層設計(Security / Production / Development など)
3. ガードレール有効化
(Mandatory / Strongly Recommended)
4. Account Factory テンプレート定義
5. ビジネスユーザーがセルフサービスでアカウント作成
2. 既存 AWS 環境への Control Tower 適用(Bring Your Own OU)
シナリオ
- 既に複数アカウント運用中
- 組織として ガバナンス統一が必要
課題と対策
- 既存アカウント SCP 競合:Control Tower が既存 SCP を尊重
- Delegated Administrator 移行:既存から Control Tower へ段階的移行
- カスタムグループポリシー:Control Tower と共存可能
3. コンプライアンス要件対応
シナリオ
- 金融・医療・公共セクターのコンプライアンス監査対応
- PCI DSS / HIPAA / FedRAMP 準拠
実装内容
- Proactive Controls で違反リソース作成防止
- Detective Controls で違反検出・ログ記録
- 全 CloudTrail ログ検索可能(Log Archive)
- Security Hub で CIS / NIST フレームワーク準拠状況一元監視
4. マルチリージョン・マルチアカウント展開
シナリオ
- グローバル企業の地域別 AWS 環境
- リージョンごとの規制要件対応
実装方法
- 各リージョンで Control Tower ランディングゾーン(独立)
- Organizations は全リージョン共通で一元管理
- SCP / RCP / ガードレール:リージョン別カスタマイズ
設定・操作の具体例
CLI 例 1:Control Tower ランディングゾーン初期化
# AWS マネジメントコンソール から「Launch a landing zone」クリック
# CLI は後続の Account Factory 操作に使用
# ランディングゾーン状態確認
aws controltower list-landing-zones \
--region us-east-1
# 出力例
# {
# "landingZones": [
# {
# "arn": "arn:aws:controltower:us-east-1:111111111111:landing-zone/abc123",
# "status": "ACTIVE"
# }
# ]
# }
CLI 例 2:Account Factory でアカウント作成(Service Catalog)
# Account Factory Product を検索
aws servicecatalog search-products \
--filters FullTextSearch=account \
--region ap-northeast-1
# Account Factory テンプレートで新規アカウント作成
aws servicecatalog provision-product \
--product-id prod-xxxxxxxxxxxxx \
--provisioning-artifact-id pa-xxxxxxxxxxxxx \
--provisioned-product-name "team-a-prod-account" \
--provisioning-parameters '[
{"Key": "AccountName", "Value": "Team A Production"},
{"Key": "AccountEmail", "Value": "teamA+prod@company.com"},
{"Key": "ManagedOrganizationalUnit", "Value": "Production"},
{"Key": "SSOUserEmail", "Value": "admin@company.com"},
{"Key": "SSOUserFirstName", "Value": "Admin"},
{"Key": "SSOUserLastName", "Value": "User"}
]' \
--region ap-northeast-1
# 出力:RecordId、アカウント作成進行中ステータス
CLI 例 3:ガードレール有効化
# Control Tower コンソール → Organizations → Controls
# コマンドラインからのガードレール有効化は限定的
# (主にコンソール UI で実施)
# 有効なガードレール一覧確認
aws controltower list-controls \
--region us-east-1
CLI 例 4:Organizations SCP 管理(Control Tower 統合)
# Control Tower が自動生成する SCP を確認
aws organizations list-policies \
--filter SERVICE_CONTROL_POLICY \
--region us-east-1
# カスタム SCP 追加(Control Tower と共存)
aws organizations create-policy \
--content '{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Deny",
"Action": [
"ec2:TerminateInstances"
],
"Resource": "*",
"Condition": {
"StringEquals": {
"aws:PrincipalOrgID": "o-xxxxxxxxxx"
}
}
}
]
}' \
--description "Prevent EC2 instance termination" \
--type SERVICE_CONTROL_POLICY \
--region us-east-1
CLI 例 5:Account Factory for Terraform(AFT)
# AFT リポジトリで account-request.tf を定義
# GitHub / CodeCommit に commit → AFT パイプライン自動実行
# account-request.tf 例
cat > account-request.tf << 'EOF'
module "new_account" {
source = "github.com/aws-ia/terraform-aws-control_tower_account_factory"
control_tower_parameters = {
AccountName = "team-b-dev"
AccountEmail = "teamb+dev@company.com"
ManagedOrganizationalUnit = "Development"
SSOUserEmail = "admin@company.com"
SSOUserFirstName = "Admin"
SSOUserLastName = "User"
}
account_tags = {
Team = "TeamB"
Environment = "Development"
CostCenter = "CC-1001"
}
account_customizations_name = "dev-customizations"
depends_on = [
aws_organizations_organization.org
]
}
EOF
# AFT パイプライン実行(CodeCommit push トリガー)
git add account-request.tf
git commit -m "Add Team B Development Account"
git push origin main
SDK 例(Python)
import boto3
# Organizations API を使用(Control Tower 統合)
orgs = boto3.client('organizations', region_name='us-east-1')
# OU 一覧取得
response = orgs.list_organizational_units_for_parent(
ParentId='r-abcd' # Root ID
)
for ou in response['OrganizationalUnits']:
print(f"OU: {ou['Name']} ({ou['Id']})")
# OU 内のアカウント一覧
accounts = orgs.list_accounts_for_parent(
ParentId='ou-1234-xxxxxxxx'
)
for account in accounts['Accounts']:
print(f"Account: {account['Name']} ({account['Id']})")
# SCP ポリシー作成
policy_doc = {
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Deny",
"Action": "s3:DeleteBucket",
"Resource": "*"
}
]
}
orgs.create_policy(
Content=json.dumps(policy_doc),
Description="Prevent S3 bucket deletion",
Type="SERVICE_CONTROL_POLICY"
)
IaC 例(CloudFormation StackSet)
AWSTemplateFormatVersion: '2010-09-09'
Description: 'Control Tower - StackSet for multi-account deployment'
Resources:
ConfigBucketPolicy:
Type: AWS::S3::BucketPolicy
Properties:
Bucket: !Ref ConfigBucket
PolicyText:
Version: '2012-10-17'
Statement:
- Effect: Allow
Principal:
Service: config.amazonaws.com
Action: s3:GetBucketVersioning
Resource: !GetAtt ConfigBucket.Arn
ConfigBucket:
Type: AWS::S3::Bucket
Properties:
BucketName: !Sub 'config-logs-${AWS::AccountId}'
VersioningConfiguration:
Status: Enabled
PublicAccessBlockConfiguration:
BlockPublicAcls: true
BlockPublicPolicy: true
IgnorePublicAcls: true
RestrictPublicBuckets: true
ServerSideEncryptionConfiguration:
- ServerSideEncryptionByDefault:
SSEAlgorithm: AES256
# StackSet で全アカウントに展開
GlobalStackSet:
Type: AWS::CloudFormation::StackSet
Properties:
StackSetName: control-tower-baseline
Capabilities:
- CAPABILITY_NAMED_IAM
PermissionModel: SERVICE_MANAGED
AutoDeployment:
Enabled: true
Retain: true
OperationPreferences:
MaxConcurrentPercentage: 100
StackInstancesGroup:
- DeploymentTargets:
OrganizationalUnitIds:
- ou-prod-xxxxx
- ou-dev-xxxxx
Regions:
- ap-northeast-1
TemplateBody: |
{
"AWSTemplateFormatVersion": "2010-09-09",
"Resources": {
"Example": {
"Type": "AWS::CloudFormation::WaitConditionHandle"
}
}
}
IaC 例(Terraform + AFT)
# variables.tf
variable "account_name" {
description = "Account name"
type = string
}
variable "account_email" {
description = "Account email"
type = string
}
variable "ou_name" {
description = "Organizational Unit name"
type = string
}
# main.tf
terraform {
required_providers {
aws = {
source = "hashicorp/aws"
version = "~> 5.0"
}
}
}
provider "aws" {
region = "ap-northeast-1"
}
# Account Factory リクエスト
module "account_factory_request" {
source = "github.com/aws-ia/terraform-aws-control_tower_account_factory"
control_tower_parameters = {
AccountName = var.account_name
AccountEmail = var.account_email
ManagedOrganizationalUnit = var.ou_name
SSOUserEmail = "admin@company.com"
SSOUserFirstName = "Admin"
SSOUserLastName = "User"
}
account_tags = {
Terraform = "true"
Environment = "production"
CreatedBy = "terraform"
}
account_customizations_name = "standard-customizations"
}
output "account_id" {
value = module.account_factory_request.account_id
description = "Created AWS Account ID"
}
類似サービス比較表
| 観点 | AWS Control Tower | Azure Landing Zone | GCP Cloud Foundation Toolkit | AWS Organizations(手動) |
|---|---|---|---|---|
| 自動化レベル | 高(ランディングゾーン自動構築) | 中(一部手動) | 低(Terraform テンプレート) | 低(手動設定) |
| セットアップ時間 | 数時間 | 1-2 日 | 1-2 週間 | 2-4 週間 |
| ガバナンス機能 | SCP / RCP / ガードレール 200+ | Azure Policy / Management Groups | GCP Organization Policy | SCP 手動管理 |
| アカウント自動化 | Account Factory + AFT | Subscription vending | Project Factory | 手動作成 |
| コンプライアンス対応 | Proactive Controls(デプロイ前チェック) | Policy definitions | Policy enforcement | 別途実装 |
| マルチアカウント管理 | Organizations 統合 | Management Group 階層 | Resource Hierarchy | Organizations 統合 |
| SSO / Identity | IAM Identity Center 統合 | Azure AD / Entra | Cloud Identity | IAM 手動管理 |
| 監査・ログ | CloudTrail + Config + Security Hub 統合 | Azure Monitor + Audit Log | Cloud Logging + Cloud Audit Logs | 個別設定 |
| Cost(ランディングゾーン) | 無料(各サービス利用料別) | 無料(各サービス利用料別) | 無料(テンプレート) | 無料 |
| 推奨用途 | 新規 AWS 導入・エンタープライズ | Azure 専用環境 | GCP 専用環境 | 既存複雑な環境 |
ベストプラクティス
チェックリスト(優先順)
✅ 推奨事項
- [ ] Control Tower を最初に導入:新規 AWS 環境なら最初のステップに
- [ ] OU 構造を慎重に設計:最初の 3-4 層が推奨(Security / Production / Development / Sandbox)
- [ ] Mandatory ガードレール は全有効:AWS が強制するものは無効化しない
- [ ] Strongly Recommended ガードレール も有効化推奨:セキュリティ要件に応じて判断
- [ ] Account Factory テンプレートを最小化:初期テンプレートで本当に必要な項目のみ
- [ ] AFC / AFT で Customization 管理:CloudFormation / Terraform で IaC 化
- [ ] Proactive Controls を有効化:CloudFormation デプロイ前のコンプライアンスチェック
- [ ] CloudTrail / Config ログを長期保存:Log Archive S3 に 7 年〜 最低 1 年保持
- [ ] IAM Identity Center で SSO 統一:各アカウントの個別ユーザー管理廃止
- [ ] Delegated Administrator 活用:各 OU で Audit Role を持つ専任アカウント設定
- [ ] 定期 Compliance Dashboard 確認:月 1 回以上ガードレール違反確認
❌ アンチパターン
| アンチパターン | 問題 | 代替 |
|---|---|---|
| 全ガードレール有効化 | 正当な操作もブロック、開発効率低下 | 要件に応じて Elective は慎重に |
| Bring Your Own OU での既存環境移行 | SCP 競合・権限ズレ・移行リスク | 新規環境なら最初から Control Tower |
| Account Factory を使わずアカウント手動作成 | 標準化なし、ガバナンス適用漏れ | Account Factory 経由の統一 |
| Proactive Controls 無視 | コンプライアンス違反リソース作成 | CloudFormation Hook で事前チェック |
| Log Archive アカウント削除 | 監査ログ喪失、コンプライアンス不対応 | Log Archive は必ず保持 |
| OU 構造頻繁な変更 | SCP 再適用漏れ、権限ズレ | 初期設計を慎重に、変更は最小化 |
| Organizations 管理アカウント移行 | Root アカウント権限管理困難 | Management Account は変更しない |
トラブルシューティング
| 症状 | 原因 | 解決策 |
|---|---|---|
| ランディング゙゙ディングゾーン作成失敗 | Organizations セットアップ未完了 / メールアドレス既使用 | Organizations 有効化確認、新メールアドレス使用 |
| Account Factory で「Permission Denied」 | IAM Role / Service Catalog 権限不足 | 管理アカウント で AWSServiceCatalogAdmin ポリシー確認 |
| Proactive Control がコンプライアンス違反検出しない | Control 有効化されていない / CloudFormation StackSet 未使用 | Control Dashboard で有効状態確認、StackSet で展開 |
| 既存 SCP と Control Tower ガードレール競合 | SCP 重複定義 | 既存 SCP 削除、Control Tower ガードレール に統一 |
| Account Factory テンプレート変更反映されない | Service Catalog Product 更新未反映 | Service Catalog コンソール → Product 更新確認 |
| Log Archive S3 容量超過 | CloudTrail / Config ログ削減なし | ライフサイクルポリシー で Glacier 移行・Intelligent-Tiering |
| IAM Identity Center ユーザーが Account アクセスできない | Permission Set 割り当て不足 | 管理アカウント → IAM Identity Center → 権限セット確認 |
| AFT パイプライン実行されない | CodeCommit リポジトリパス不正 / IAM Role 権限不足 | CodePipeline 実行履歴確認、IAM Role ポリシー確認 |
| Audit Account で GuardDuty / Security Hub 有効化されない | Control Tower Delegated Administrator 設定不足 | Management Account → Delegated Administrator で Audit Account 指定 |
2025-2026 最新動向
Proactive Controls 拡張
CloudFormation Hooks による デプロイ前コンプライアンスチェック
- 2024-2025年新コントロール追加:200+ 組み込みコントロール
- カスタム Hooks 対応:組織固有のコンプライアンス ルール実装可能
- 複数 Hook 組み合わせ:複雑なコンプライアンス条件も定義可能
RCP(Resource Control Policy)拡大
- 2025年新対応:ECR・OpenSearch Serverless・Glue
- リソース単位制御:特定 S3 バケット・KMS キー への組織レベル制御
AI Services Opt-out Policy
2025年新機能:生成 AI 使用を組織レベルで制御
{
"Statement": [
{
"Sid": "DisableGenAIServices",
"Effect": "Deny",
"Action": [
"bedrock:*",
"sagemaker:CreateAutoMLJob"
],
"Resource": "*"
}
]
}
Backup Policy 強化
2025年新機能:自動バックアップスケジュール一括管理
- サービス別周期:RDS 毎日・EBS 週 1 回など
- 保持期間統制:データ保護要件に基づく自動ポリシー
- リソースタグベース:タグで差別化設定
Chatbot Policy(Chat Applications Policy)
2025年新機能:Slack・Teams からの AWS 操作制御
- 許可アクション制限:Chatbot から実行可能な API 制限
- チャネル単位制御:Team チャネル別の権限差別化
Terraform / CDK 完全統合
AWS CDK for Control Tower(開発中)
# AWS CDK で ランディングゾーン定義
from aws_cdk import aws_controltower as ct
landing_zone = ct.LandingZone(
stack, "MyLandingZone",
organizational_unit="ou-prod",
management_account="123456789012",
guardrails=[
"ct-aws-pr-compute-ec2-volume-encryption-enabled",
"ct-aws-pr-storage-s3-public-access-block"
]
)
学習リソース・参考文献
公式ドキュメント
-
AWS Control Tower User Guide
-
AWS Control Tower Controls Reference
-
Account Factory for Terraform(AFT)
AWS ブログ・ホワイトペーパー
-
AWS Cloud Operations Blog - Control Tower
- 運用事例・ベストプラクティス
-
Well-Architected Framework - Multi-Account Strategy
- Control Tower を活用した推奨アーキテクチャ
学習リソース
-
A Cloud Guru - AWS Control Tower Deep Dive
- ハンズオンコース
-
Linux Academy / Pluralsight - Multi-Account AWS
- Organizations・Control Tower 統合コース
OSS / コミュニティ
-
AWS Landing Zone Accelerator(ALZ)
- Control Tower を拡張した高度なランディングゾーン テンプレート
-
Terraform AWS Control Tower Module
- Community 開発の Terraform モジュール
実装例
例 1:3 層 OU 構造(Production / Development / Sandbox)
Root
├── Security(自動)
│ ├── Log Archive Account(自動)
│ └── Audit Account(自動)
├── Production OU
│ ├── prod-account-1
│ ├── prod-account-2
│ └── SCP:リージョン制限・S3 パブリックアクセス禁止
├── Development OU
│ ├── dev-account-1
│ ├── dev-account-2
│ └── SCP:本番環境削除操作禁止のみ
└── Sandbox OU
├── sandbox-account-1
└── SCP:デフォルト設定(ユーザー自由)
実装手順
- Control Tower ランディングゾーン初期化
- AWS Organizations コンソール → 上記 OU 階層構築
- OU ごとに SCP / ガードレール カスタマイズ
- Account Factory テンプレート → OU ごとにカスタマイズ
例 2:Account Factory for Terraform(IaC 統合)
# GitHub リポジトリ:account-requests/
# account-requests/team-a-prod/main.tf
module "account_request" {
source = "github.com/aws-ia/terraform-aws-control_tower_account_factory"
control_tower_parameters = {
AccountName = "Team A Production"
AccountEmail = "teamA+prod@company.com"
ManagedOrganizationalUnit = "Production"
}
account_tags = {
Team = "TeamA"
Environment = "production"
Terraform = "true"
}
account_customizations_name = "team-a-customizations"
}
output "account_id" {
value = module.account_factory_request.account_id
}
# GitHub Actions トリガー → CodePipeline → AFT パイプライン
例 3:Proactive Controls カスタマイズ
# Control Tower Customizations for Control Tower(CfCT)
region: ap-northeast-1
version: 2021-03-15
resources:
- name: org-baseline
resource_file: templates/org-baseline.yaml
deploy_method: stack_set
deployment_targets:
organizational_units:
- Production
- Development
- name: security-controls
resource_file: templates/security-controls.yaml
deploy_method: stack_set
deployment_targets:
organizational_units:
- Production
parameters:
- key: EnableMFADelete
value: "true"
チェックリスト
ランディングゾーン初期化前
- [ ] Organizations 有効化確認
- [ ] ランディングゾーン作成用メールアドレス準備(Log Archive / Audit 用)
- [ ] 既存 SCP・IAM ポリシー確認(Control Tower と競合しないか)
- [ ] OU 階層設計確定(Security / Production / Development / Sandbox など)
ランディングゾーン初期化後
- [ ] Management Account で SSO ユーザー作成確認
- [ ] Log Archive Account の CloudTrail S3 バケット確認
- [ ] Audit Account での GuardDuty / Security Hub 有効化確認
- [ ] デフォルトガードレール(Mandatory)有効確認
- [ ] Account Factory テンプレート確認・カスタマイズ
運用開始後
- [ ] 月 1 回:Compliance Dashboard 確認
- [ ] 月 1 回:CloudTrail / Config ログ監査
- [ ] 四半期ごと:ガードレール見直し(新しいコントロール追加検討)
- [ ] 半年ごと:OU 構造見直し(新しいビジネス要件対応)
- [ ] 年 1 回:Account Factory テンプレート更新
まとめ
AWS Control Tower は 「マルチアカウント AWS 環境のランディングゾーンを自動構築・継続管理し、組織全体にセキュリティ・コンプライアンスポリシーを一元強制するサービス」 です。Organizations 手動管理なら数週間かかるセットアップを数時間で実現し、Account Factory でアカウント作成を標準化・自動化。Proactive Controls でデプロイ前のコンプライアンスチェック、Detective Controls で違反検出・通知を自動化します。
Control Tower が向いている場合
- 新規 AWS 導入:初期セットアップが最短
- エンタープライズ化:数十〜数百アカウント運用
- コンプライアンス重視:金融・医療・公共セクター
- クラウドネイティブ転換:セキュア基盤を最初に構築
既存複雑な環境の場合
- Bring Your Own OU で段階的移行
- Organizations 既存ポリシーと共存
- Control Tower Customizations で拡張
2025-2026年の RCP 拡大・AI Services Opt-out Policy・Backup Policy 強化により、Control Tower はさらに多様なコンプライアンス要件に対応可能になります。
最終更新:2026-04-26 バージョン:v2.0