AWS Control Towerでランディングゾーンを構築し、Account Factoryでアカウントをプロビジョニングし、ガードレールでガバナンスを確立できるようになりました。しかし、実際のエンタープライズ環境では「どのようにアカウントを分割すべきか」「OU構造はどう設計すべきか」という戦略的な意思決定が求められます。本記事では、AWSが推奨するマルチアカウント戦略とランディングゾーン設計のベストプラクティスを体系的に解説します。
マルチアカウント戦略が必要な理由
単一のAWSアカウントですべてのワークロードを運用することは技術的には可能ですが、組織の規模が拡大するにつれて多くの課題が顕在化します。マルチアカウント戦略は、これらの課題に対するAWSが推奨する解決策です。
単一アカウント運用の限界
規模の小さい組織やスタートアップでは、単一アカウントでの運用から始めることが一般的です。しかし、成長に伴い以下の問題が発生します。
flowchart TB
subgraph "単一アカウントの課題"
direction TB
C1[セキュリティ境界の欠如<br/>開発者が本番環境に誤ってアクセス]
C2[コスト配分の不透明さ<br/>プロジェクト別の費用が把握困難]
C3[サービスクォータの共有<br/>1つのワークロードが上限を占有]
C4[IAM権限の複雑化<br/>最小権限の維持が困難]
C5[障害影響範囲の拡大<br/>1つの設定ミスが全体に波及]
C6[コンプライアンス要件への対応<br/>PCI DSSなどの環境分離が困難]
end| 課題 | 具体例 | ビジネスへの影響 |
|---|---|---|
| セキュリティ境界の欠如 | 開発者が本番RDSに誤接続 | データ漏洩、サービス停止 |
| コスト配分の不透明さ | EC2費用がどのプロジェクトか不明 | 予算管理の失敗、責任の不明確化 |
| サービスクォータ共有 | バッチ処理がLambda同時実行数を占有 | 他サービスの機能停止 |
| IAM権限の複雑化 | 条件キーを多用した複雑なポリシー | 設定ミス、監査の困難 |
| 障害影響範囲 | VPC設定変更で全環境が停止 | 事業継続性の危機 |
| コンプライアンス | PCI DSSスコープの肥大化 | 監査コストの増大、認証取得の遅延 |
マルチアカウント戦略のメリット
複数のAWSアカウントに分割することで、これらの課題を解決できます。
flowchart LR
subgraph "マルチアカウントのメリット"
direction TB
M1[強力なセキュリティ境界<br/>アカウント=最強の分離単位]
M2[明確なコスト配分<br/>アカウント単位で自動集計]
M3[独立したクォータ<br/>アカウントごとに上限設定]
M4[シンプルなIAM設計<br/>アカウント内の権限のみ考慮]
M5[障害の局所化<br/>影響範囲を限定]
M6[コンプライアンス対応<br/>スコープの明確化]
endAWSアカウントは最も強力な分離境界
AWSにおいて、アカウントはリソースを分離する最も強力な境界です。VPC、セキュリティグループ、IAMポリシーによる分離も有効ですが、設定ミスによるリスクが存在します。一方、アカウント分離では、明示的なクロスアカウントアクセス設定がない限り、他のアカウントのリソースにはアクセスできません。
flowchart TB
subgraph "分離の強度比較"
direction LR
subgraph "弱い分離"
SG[セキュリティグループ]
NS[名前空間/タグ]
end
subgraph "中程度の分離"
VPC[VPC分離]
IAM[IAMポリシー]
end
subgraph "最も強い分離"
ACCT[アカウント分離]
end
end
SG --> VPC --> ACCTランディングゾーンの概念
ランディングゾーンとは、組織がAWS上でワークロードを安全かつ効率的に運用するための、事前構成されたマルチアカウント環境です。AWS Control Towerはこのランディングゾーンを自動的に構築・管理するサービスです。
ランディングゾーンの構成要素
Control Towerが構築するランディングゾーンは、以下の要素で構成されます。
flowchart TB
subgraph "ランディングゾーン"
subgraph "管理層"
MGMT[管理アカウント<br/>Organizations/Control Tower管理]
end
subgraph "セキュリティ基盤"
LOG[ログアーカイブアカウント<br/>CloudTrail/Config集約]
AUDIT[監査アカウント<br/>セキュリティツール/監査]
end
subgraph "共有サービス"
NET[ネットワークアカウント<br/>Transit Gateway/Direct Connect]
SHARED[共有サービスアカウント<br/>CI/CD/共通ツール]
end
subgraph "ワークロード"
PROD[本番アカウント群]
DEV[開発アカウント群]
STAGE[ステージングアカウント群]
end
end
MGMT --> LOG
MGMT --> AUDIT
MGMT --> NET
MGMT --> SHARED
MGMT --> PROD
MGMT --> DEV
MGMT --> STAGEControl Towerが自動作成するOU構造
Control Towerをセットアップすると、以下のOU構造が自動的に作成されます。
| OU名 | 目的 | 含まれるアカウント |
|---|---|---|
| Security OU | セキュリティ基盤 | Log Archive、Audit |
| Sandbox OU | 検証・学習環境 | 開発者の実験用アカウント |
これはあくまで最小構成であり、実際の運用では組織の要件に応じてOU構造を拡張する必要があります。
OU設計パターン
組織単位(OU)は、アカウントをグループ化してポリシー(SCP、タグポリシーなど)を一括適用するための論理的な構造です。OU設計は、マルチアカウント戦略の成否を左右する重要な意思決定です。
AWS推奨のOU構造
AWS Security Reference Architecture(SRA)では、以下のOU構造が推奨されています。
flowchart TB
ROOT[Root]
ROOT --> SECURITY[Security OU]
ROOT --> INFRA[Infrastructure OU]
ROOT --> SANDBOX[Sandbox OU]
ROOT --> WORKLOADS[Workloads OU]
ROOT --> POLICY_STAGING[PolicyStaging OU]
ROOT --> SUSPENDED[Suspended OU]
ROOT --> INDIVIDUAL[Individual Business Users OU]
ROOT --> EXCEPTIONS[Exceptions OU]
ROOT --> DEPLOYMENTS[Deployments OU]
ROOT --> TRANSITIONAL[Transitional OU]
subgraph "Security OU"
LOG_ARCHIVE[Log Archive Account]
SECURITY_TOOLING[Security Tooling Account]
end
subgraph "Infrastructure OU"
NETWORK[Network Account]
SHARED_SERVICES[Shared Services Account]
end
subgraph "Workloads OU"
PROD_OU[Prod OU]
SDLC_OU[SDLC OU]
end
SECURITY --> LOG_ARCHIVE
SECURITY --> SECURITY_TOOLING
INFRA --> NETWORK
INFRA --> SHARED_SERVICES
WORKLOADS --> PROD_OU
WORKLOADS --> SDLC_OU各OUの役割と設計意図
Security OU
セキュリティとコンプライアンスに関する最重要アカウントを配置します。
| アカウント | 役割 | 主要サービス |
|---|---|---|
| Log Archive | 全アカウントのログ集約・長期保管 | S3、CloudTrail、Config |
| Security Tooling(Audit) | セキュリティ監視・インシデント対応 | Security Hub、GuardDuty、Detective |
Security OUに適用するSCPの例
|
|
Infrastructure OU
組織全体で共有するインフラストラクチャリソースを管理するアカウントを配置します。
| アカウント | 役割 | 主要サービス |
|---|---|---|
| Network | 集約型ネットワーク管理 | Transit Gateway、Direct Connect、Route 53 |
| Shared Services | 共通ツール・サービス | CI/CD、Active Directory、共通AMI |
flowchart TB
subgraph "Network Account"
TGW[Transit Gateway]
DX[Direct Connect Gateway]
R53[Route 53 Private Hosted Zone]
EGRESS[Egress VPC<br/>NAT/Firewall]
INGRESS[Ingress VPC<br/>ALB/CloudFront]
end
subgraph "Workload Accounts"
WL1[Prod Account A]
WL2[Prod Account B]
WL3[Dev Account]
end
TGW --> WL1
TGW --> WL2
TGW --> WL3
WL1 --> EGRESS
WL2 --> EGRESS
WL3 --> EGRESSWorkloads OU
実際のビジネスワークロードを運用するアカウントを配置します。通常、子OUとして環境別(Prod、SDLC)に分割します。
| 子OU | 目的 | 適用するガードレール |
|---|---|---|
| Prod OU | 本番ワークロード | 厳格なセキュリティ制御 |
| SDLC OU | 開発・テスト | 開発者の柔軟性を確保 |
Sandbox OU
開発者が自由に実験・学習できる環境を提供します。本番環境との接続を禁止し、コスト上限を設定することが重要です。
Sandbox OUに適用するSCPの例
|
|
その他の重要なOU
| OU名 | 目的 | 使用シナリオ |
|---|---|---|
| PolicyStaging OU | SCP変更のテスト | 本番適用前の検証 |
| Suspended OU | 利用停止アカウント | 退職者アカウント、不要アカウントの隔離 |
| Transitional OU | 移行中アカウント | Organizations参加直後の一時配置 |
| Exceptions OU | 例外的なアカウント | 特殊な要件を持つアカウント |
| Deployments OU | CI/CDアカウント | 本番デプロイ用の高権限アカウント |
ワークロード分離パターン
Workloads OU配下のアカウント分割には、複数のパターンがあります。組織の規模、チーム構成、コンプライアンス要件に応じて適切なパターンを選択します。
パターン1: 環境別分離
最もシンプルで一般的なパターンです。開発、ステージング、本番の環境ごとにアカウントを分離します。
flowchart TB
WL[Workloads OU]
WL --> PROD[Prod OU]
WL --> STAGE[Staging OU]
WL --> DEV[Dev OU]
PROD --> PROD_APP[本番アプリケーション]
STAGE --> STAGE_APP[ステージング環境]
DEV --> DEV_APP[開発環境]メリット
- 構造がシンプルで理解しやすい
- 環境ごとに異なるセキュリティポリシーを適用しやすい
- 小〜中規模組織に適している
デメリット
- ワークロード数が増えると1つのアカウントが肥大化
- プロジェクト間のコスト分離が困難
パターン2: ワークロード別分離
各ワークロード(アプリケーション、サービス)ごとにアカウントを作成し、さらに環境別に分割します。
flowchart TB
WL[Workloads OU]
WL --> APP_A[Application A]
WL --> APP_B[Application B]
WL --> APP_C[Application C]
subgraph "Application A"
APP_A --> APP_A_PROD[app-a-prod]
APP_A --> APP_A_STAGE[app-a-stage]
APP_A --> APP_A_DEV[app-a-dev]
end
subgraph "Application B"
APP_B --> APP_B_PROD[app-b-prod]
APP_B --> APP_B_STAGE[app-b-stage]
APP_B --> APP_B_DEV[app-b-dev]
endメリット
- ワークロードごとの完全な分離
- 明確なコスト配分
- チームごとの独立した運用が可能
デメリット
- アカウント数が急増(ワークロード数 × 環境数)
- 管理オーバーヘッドの増加
パターン3: チーム/プロダクト別分離
ビジネスユニット、プロダクトチーム、または事業部門ごとにOUを作成し、その配下に環境別アカウントを配置します。
flowchart TB
WL[Workloads OU]
WL --> BU1[Business Unit 1 OU]
WL --> BU2[Business Unit 2 OU]
subgraph "Business Unit 1"
BU1 --> BU1_PROD[Prod OU]
BU1 --> BU1_SDLC[SDLC OU]
BU1_PROD --> BU1_P1[bu1-prod-app1]
BU1_PROD --> BU1_P2[bu1-prod-app2]
BU1_SDLC --> BU1_D1[bu1-dev-app1]
BU1_SDLC --> BU1_D2[bu1-dev-app2]
end
subgraph "Business Unit 2"
BU2 --> BU2_PROD[Prod OU]
BU2 --> BU2_SDLC[SDLC OU]
endメリット
- 事業部門の自律性を確保
- 部門ごとの予算管理が容易
- 大規模組織に適している
デメリット
- OU構造が深くなりSCP継承が複雑化
- 部門間の標準化が困難になる可能性
パターン選択の判断基準
| 判断基準 | パターン1(環境別) | パターン2(ワークロード別) | パターン3(チーム別) |
|---|---|---|---|
| 組織規模 | 小〜中規模 | 中〜大規模 | 大規模 |
| ワークロード数 | 少ない(5未満) | 中程度(5〜20) | 多い(20以上) |
| コンプライアンス要件 | 低〜中 | 高(アプリ単位の監査) | 中〜高 |
| チームの独立性 | 低い | 中程度 | 高い |
| 管理オーバーヘッド | 低い | 中程度 | 高い |
共有サービスアカウントの設計
複数のワークロードアカウントで共通して利用するリソースやサービスは、共有サービスアカウントに集約することで効率化とコスト最適化を実現できます。
共有サービスの種類と配置
flowchart TB
subgraph "Infrastructure OU"
subgraph "Network Account"
TGW[Transit Gateway]
DX[Direct Connect]
FIREWALL[Network Firewall]
DNS[Route 53 Resolver]
end
subgraph "Shared Services Account"
AD[AWS Managed AD]
CICD[CI/CDパイプライン]
ARTIFACTS[共有アーティファクト]
AMI[共有AMI/ECRイメージ]
end
end
subgraph "利用側アカウント"
WL1[Workload Account 1]
WL2[Workload Account 2]
end
TGW --> WL1
TGW --> WL2
AD --> WL1
AD --> WL2
CICD --> WL1
CICD --> WL2ネットワークの集約パターン
大規模環境では、ネットワークリソースをNetwork Accountに集約するHub-Spokeモデルが推奨されます。
flowchart TB
subgraph "Network Account(Hub)"
TGW[Transit Gateway]
subgraph "Egress VPC"
NAT[NAT Gateway]
NGFW[Network Firewall]
end
subgraph "Ingress VPC"
ALB[Application Load Balancer]
WAF[AWS WAF]
end
subgraph "Shared Services VPC"
ENDPOINT[VPC Endpoints<br/>S3, DynamoDB, etc.]
end
subgraph "On-Premises Connectivity"
DX[Direct Connect Gateway]
VPN[Site-to-Site VPN]
end
end
subgraph "Workload Accounts(Spoke)"
PROD_VPC[Production VPC]
DEV_VPC[Development VPC]
end
TGW --> PROD_VPC
TGW --> DEV_VPC
PROD_VPC --> NAT
DEV_VPC --> NAT
PROD_VPC --> ENDPOINT
DEV_VPC --> ENDPOINT
TGW --> DXHub-Spokeモデルのメリット
| メリット | 説明 |
|---|---|
| コスト最適化 | NAT Gateway、VPC Endpointを共有してコスト削減 |
| セキュリティ集約 | Egress/Ingressトラフィックを一元的に監視・制御 |
| 運用効率化 | ネットワーク設定変更を1箇所で実施 |
| オンプレミス接続 | Direct Connect/VPNをワークロードアカウントと共有 |
CI/CDパイプラインの設計
CI/CDパイプラインは、セキュリティとガバナンスの観点から慎重な設計が必要です。
flowchart LR
subgraph "Deployments Account"
CODECOMMIT[CodeCommit/GitHub]
CODEBUILD[CodeBuild]
CODEPIPELINE[CodePipeline]
ARTIFACTS[S3 Artifacts]
end
subgraph "Dev Account"
DEV_DEPLOY[開発環境デプロイ]
end
subgraph "Staging Account"
STAGE_DEPLOY[ステージングデプロイ]
STAGE_TEST[統合テスト]
end
subgraph "Prod Account"
PROD_DEPLOY[本番デプロイ]
end
CODECOMMIT --> CODEBUILD
CODEBUILD --> ARTIFACTS
CODEPIPELINE --> DEV_DEPLOY
DEV_DEPLOY --> STAGE_DEPLOY
STAGE_TEST --> PROD_DEPLOYクロスアカウントデプロイのIAMロール設計
|
|
既存環境からの移行戦略
既存の単一アカウント環境やレガシーなマルチアカウント環境から、Control Towerベースのランディングゾーンへ移行する際の戦略を解説します。
移行アプローチの比較
| アプローチ | 概要 | メリット | デメリット | 推奨シナリオ |
|---|---|---|---|---|
| グリーンフィールド | 新規ランディングゾーンを構築し、ワークロードを移行 | クリーンな環境、ベストプラクティス適用 | 移行工数大、ダウンタイムリスク | 新規プロジェクト、小規模環境 |
| ブラウンフィールド | 既存Organizations環境にControl Towerを導入 | 既存アカウント活用、段階的移行 | 制約事項あり、互換性確認必要 | 既存Organizations環境 |
| ハイブリッド | 新規ランディングゾーンと既存環境を併用 | 柔軟性、リスク分散 | 複雑性増加、二重管理 | 大規模環境、段階的移行 |
移行フェーズ
flowchart LR
subgraph "Phase 1: 評価・計画"
P1_1[現状分析]
P1_2[アカウント棚卸し]
P1_3[OU構造設計]
P1_4[移行計画策定]
end
subgraph "Phase 2: 基盤構築"
P2_1[ランディングゾーン構築]
P2_2[ネットワーク設計]
P2_3[共有サービス構築]
P2_4[ガードレール設定]
end
subgraph "Phase 3: 移行実行"
P3_1[パイロットアカウント移行]
P3_2[検証・調整]
P3_3[本番アカウント移行]
P3_4[レガシー環境廃止]
end
P1_1 --> P1_2 --> P1_3 --> P1_4
P1_4 --> P2_1
P2_1 --> P2_2 --> P2_3 --> P2_4
P2_4 --> P3_1
P3_1 --> P3_2 --> P3_3 --> P3_4既存アカウントの登録
Control Towerには既存のAWSアカウントを登録(Enroll)する機能があります。
登録の前提条件
| 条件 | 詳細 |
|---|---|
| Organizations所属 | 既存アカウントが同じOrganizationsのメンバーであること |
| 信頼されたアクセス | Control Towerの信頼されたアクセスが有効であること |
| デフォルトVPC | 登録先リージョンでデフォルトVPCが削除可能であること |
| AWS Config | 既存のConfigレコーダー/配信チャネルの削除が必要 |
| CloudTrail | 既存の組織証跡との競合がないこと |
登録プロセス
sequenceDiagram
participant Admin as 管理者
participant CT as Control Tower
participant ORG as Organizations
participant ACCT as 既存アカウント
Admin->>CT: アカウント登録開始
CT->>ORG: アカウントの所属確認
CT->>ACCT: 前提条件チェック
CT->>CT: ガードレール適用
CT->>ACCT: AWS Config有効化
CT->>ACCT: CloudTrail設定
CT->>ACCT: IAM Identity Center設定
CT-->>Admin: 登録完了ワークロード移行パターン
既存アカウントのワークロードを新しいアカウント構造に移行する方法は複数あります。
| パターン | 概要 | 適用シナリオ |
|---|---|---|
| リホスト | EC2インスタンス、AMIをそのまま移行 | 迅速な移行が必要な場合 |
| リファクタ | アーキテクチャを見直して再構築 | モダナイゼーションを同時に行う場合 |
| アカウント分割 | 1アカウント内のワークロードを複数アカウントに分割 | 肥大化したアカウントの整理 |
| アカウント統合 | 分散したリソースを1アカウントに集約 | 過度に分散した環境の整理 |
ガバナンスの継続的改善
ランディングゾーンは一度構築して終わりではなく、継続的な改善が必要です。
ガバナンスの成熟度モデル
flowchart LR
L1[Level 1<br/>初期]
L2[Level 2<br/>定義済み]
L3[Level 3<br/>管理]
L4[Level 4<br/>測定]
L5[Level 5<br/>最適化]
L1 --> L2 --> L3 --> L4 --> L5
L1 -.- L1D[手動管理<br/>ドキュメントなし]
L2 -.- L2D[ポリシー定義<br/>手動適用]
L3 -.- L3D[自動化<br/>Control Tower導入]
L4 -.- L4D[メトリクス収集<br/>コンプライアンス測定]
L5 -.- L5D[継続的改善<br/>自動修復]定期的なレビュー項目
| レビュー項目 | 頻度 | 担当 | チェックポイント |
|---|---|---|---|
| SCPレビュー | 四半期 | セキュリティチーム | 新サービスへの対応、過剰な制限の見直し |
| OUドリフト確認 | 月次 | クラウドCoE | 不適切なOU配置のアカウント |
| 未使用アカウント | 四半期 | 財務/IT | リソースのないアカウントの特定 |
| ガードレール更新 | Control Tower更新時 | クラウドCoE | 新しいガードレールの評価・適用 |
| コンプライアンス監査 | 年次 | 監査チーム | 全体的なガバナンス状態の評価 |
まとめ
本記事では、AWSマルチアカウント戦略とランディングゾーン設計について解説しました。重要なポイントを整理します。
マルチアカウント戦略の必要性
- AWSアカウントは最も強力なリソース分離境界
- セキュリティ、コスト管理、コンプライアンスの課題を解決
OU設計のベストプラクティス
- Security OU、Infrastructure OU、Workloads OUを基本構造とする
- 組織の規模と要件に応じて環境別/ワークロード別/チーム別のパターンを選択
共有サービスの設計
- ネットワークはHub-Spokeモデルで集約
- CI/CDは専用アカウントで管理し、クロスアカウントデプロイを実装
移行と継続的改善
- 既存環境からの移行は段階的に実施
- ガバナンスは継続的に評価・改善
次回の記事では、AWS Security Hubとガードレールを組み合わせた統合セキュリティ監視について解説します。