very enterprise AWS deployment eventually hits the same inflection point: a single account becomes ungovernable. Workloads from different teams share blast radius, IAM policies become unwieldy, cost attribution is impossible, and security boundaries blur.
The answer is a multi-account strategy with a well-architected landing zone. This post covers the architecture patterns, OU structures, network topology, and security guardrails needed to build a production-grade AWS landing zone that scales from 10 accounts to 1,000+.
What Is a Landing Zone?
A landing zone is your foundational multi-account AWS environment — the organizational structure, governance controls, networking, and security baseline that exists before any workload arrives. Think of it as the "operating system" for your AWS estate.
Core components:
- AWS Organizations — Account hierarchy and policy management
- AWS Control Tower — Automated landing zone setup and governance
- Landing Zone Accelerator (LZA) — Opinionated, customizable IaC for enterprise landing zones
- Service Control Policies (SCPs) — Preventive guardrails at the organization level
- Centralized networking — Transit Gateway, shared VPCs, DNS
- Security baseline — GuardDuty, Security Hub, Config, CloudTrail across all accounts
Account Structure: The OU Design
The organizational unit (OU) structure is the most critical design decision. It determines how you group accounts, apply policies, and manage access.
Recommended OU Hierarchy
Root
├── Security OU
│ ├── Log Archive Account (centralized logging)
│ ├── Audit Account (security tooling, read-only cross-account)
│ └── Security Tooling Account (GuardDuty, Security Hub delegated admin)
│
├── Infrastructure OU
│ ├── Network Account (Transit Gateway, DNS, shared connectivity)
│ ├── Shared Services Account (AD, CI/CD, artifact repos)
│ └── Backup Account (centralized backup vault)
│
├── Sandbox OU
│ └── Developer sandbox accounts (experimentation, auto-nuke)
│
├── Workloads OU
│ ├── Production OU
│ │ ├── App-A Prod Account
│ │ └── App-B Prod Account
│ ├── Staging OU
│ │ ├── App-A Staging Account
│ │ └── App-B Staging Account
│ └── Development OU
│ ├── App-A Dev Account
│ └── App-B Dev Account
│
├── Policy Staging OU (test SCPs before applying to workloads)
│
└── Suspended OU (quarantined/decommissioned accounts)
Design Principles
- One workload, one account — Blast radius isolation. A misconfigured security group affects only one workload.
- Environment separation via OUs — Prod/Staging/Dev get different SCPs and guardrails.
- Centralize what's shared — Networking, logging, security tooling live in dedicated accounts.
- Never put workloads in the management account — It's for Organizations management only.
AWS Control Tower: Automated Governance
Control Tower automates landing zone setup and provides:
- Account Factory — Self-service account provisioning with pre-configured baselines
- Guardrails (Controls) — Preventive (SCPs) and detective (Config rules) controls
- Dashboard — Compliance visibility across all accounts
- Region deny — Restrict which AWS regions can be used
Essential Guardrails to Enable
| Guardrail | Type | Purpose |
|---|---|---|
| Disallow public S3 buckets | Preventive | Prevent data exposure |
| Require MFA for root user | Detective | Account security |
| Disallow internet gateways in specific OUs | Preventive | Network isolation |
| Require encryption on EBS volumes | Detective | Data protection |
| Deny access to unused regions | Preventive | Reduce attack surface |
| Require tags on resources | Detective | Cost attribution |
| Disallow deletion of CloudTrail | Preventive | Audit integrity |
| Deny root user access | Preventive | Force IAM usage |
Landing Zone Accelerator (LZA): Enterprise-Grade IaC
For organizations needing more customization than Control Tower alone provides, the Landing Zone Accelerator (LZA) is an AWS-maintained open-source solution that deploys a comprehensive landing zone via CloudFormation/CDK.
LZA covers:
- Multi-account structure with Control Tower integration
- Centralized networking (Transit Gateway, route tables, DNS)
- Security services deployment across all accounts
- Logging and monitoring pipelines
- Budget alerts and cost management
- Custom CloudFormation stack deployment per account/OU
LZA Configuration Structure
├── accounts-config.yaml # Account definitions and OU placement
├── global-config.yaml # Organization-wide settings, regions, tags
├── iam-config.yaml # IAM roles, policies, identity center
├── network-config.yaml # VPCs, TGW, route tables, DNS
├── security-config.yaml # GuardDuty, Security Hub, Config, CloudTrail
├── customizations-config.yaml # Custom stacks deployed per account/OU
This declarative approach means your entire landing zone is version-controlled, auditable, and reproducible.
Network Architecture: Hub-and-Spoke with Transit Gateway
The Pattern
┌──────────────────────┐
│ Network Account │
│ (Transit Gateway) │
└──────────┬───────────┘
│
┌──────────────────────┼──────────────────────┐
│ │ │
▼ ▼ ▼
┌───────────────┐ ┌──────────────────┐ ┌──────────────────┐
│ Shared VPC │ │ Workload VPC A │ │ Workload VPC B │
│ (Inspection) │ │ (Prod App A) │ │ (Prod App B) │
└───────────────┘ └──────────────────┘ └──────────────────┘
│
▼
┌───────────────┐
│ Network │
│ Firewall / │
│ Inspection │
└───────────────┘
Key Networking Decisions
| Decision | Recommendation |
|---|---|
| VPC per account or shared VPC? | VPC per workload account for isolation. Shared VPC only for tightly coupled services. |
| Transit Gateway vs VPC Peering? | TGW for 5+ accounts. Peering for simple 2-3 account setups. |
| Centralized egress? | Yes — route internet traffic through a shared inspection VPC with Network Firewall. |
| DNS resolution | Route53 Resolver in network account with forwarding rules shared via RAM. |
| On-premises connectivity | Direct Connect to network account TGW, propagate routes to workload VPCs. |
| IP address management | Use IPAM (VPC IPAM) to prevent CIDR conflicts across accounts. |
Network Firewall for Centralized Inspection
All egress traffic from workload accounts routes through a centralized inspection VPC:
- Workload VPC → Transit Gateway (default route)
- Transit Gateway → Inspection VPC
- Network Firewall inspects traffic (domain filtering, IPS/IDS)
- Allowed traffic → NAT Gateway → Internet
This gives you a single point of visibility and policy enforcement for all outbound traffic.
Security Baseline: Defense in Depth
Services to Enable Across All Accounts
| Service | Purpose | Deployment |
|---|---|---|
| CloudTrail | API audit logging | Organization trail → Log Archive account |
| AWS Config | Resource compliance and change tracking | Aggregator in Audit account |
| GuardDuty | Threat detection | Delegated admin in Security account |
| Security Hub | Unified security findings | Aggregator with CIS/AWS Foundational benchmarks |
| IAM Access Analyzer | Find unintended resource sharing | Per account + organization-level |
| Macie | S3 sensitive data discovery | Delegated admin |
| VPC Flow Logs | Network traffic visibility | All VPCs → centralized S3 |
| AWS Backup | Centralized backup policies | Backup account with cross-account vaults |
Service Control Policies (SCPs): The Guardrail Layer
SCPs are the most powerful governance tool — they set maximum permissions boundaries that even account administrators cannot exceed.
Essential SCPs:
// Deny leaving the organization
{
"Effect": "Deny",
"Action": ["organizations:LeaveOrganization"],
"Resource": "*"
}
// Deny disabling security services
{
"Effect": "Deny",
"Action": [
"guardduty:DeleteDetector",
"guardduty:DisableOrganizationAdminAccount",
"securityhub:DisableSecurityHub",
"config:StopConfigurationRecorder"
],
"Resource": "*"
}
// Deny root user actions
{
"Effect": "Deny",
"Action": "*",
"Resource": "*",
"Condition": {
"StringLike": {"aws:PrincipalArn": "arn:aws:iam::*:root"}
}
}
Identity and Access: IAM Identity Center
Centralized identity management via IAM Identity Center (formerly SSO):
- Single sign-on across all accounts from one portal
- Permission sets — predefined access patterns (Admin, ReadOnly, Developer, Auditor)
- Integration with corporate IdP (Okta, Azure AD, Active Directory)
- Temporary credentials — no long-lived access keys
- Attribute-based access control (ABAC) — permissions based on user tags
Permission Set Design
| Permission Set | Accounts | Access Level |
|---|---|---|
| PlatformAdmin | Infrastructure OU | Full admin |
| SecurityAuditor | All accounts | Read-only security services |
| DeveloperAccess | Dev/Staging OUs | Power user (no IAM changes) |
| ProductionReadOnly | Production OU | Read-only (break-glass escalation for changes) |
| BillingViewer | Management account | Cost and billing only |
Cost Management
- AWS Organizations consolidated billing — single payer, volume discounts
- Cost allocation tags — mandatory tags enforced via SCP + Config rules
- AWS Budgets — per-account and per-OU budgets with alerts
- Account-level cost visibility — each team owns their account's spend
- Savings Plans and Reserved Instances — purchased at organization level, shared
Common Mistakes to Avoid
| Mistake | Impact | Fix |
|---|---|---|
| Workloads in management account | Can't apply SCPs to management account | Dedicated workload accounts only |
| Flat OU structure | Can't differentiate policies per environment | Nest OUs (Workloads → Prod/Staging/Dev) |
| No network inspection | Blind to outbound data exfiltration | Centralized egress with Network Firewall |
| Shared VPCs everywhere | Noisy neighbor, no blast radius isolation | VPC per workload account |
| No SCP testing | Breaking production with bad policies | Policy Staging OU to test SCPs first |
| Skipping IPAM | CIDR conflicts between accounts | VPC IPAM from day one |
| Long-lived access keys | Credential exposure risk | IAM Identity Center with temp credentials |
Summary
A well-designed AWS landing zone is the foundation everything else builds on:
- OU structure — Separate security, infrastructure, and workloads. Nest environments (prod/staging/dev) under workloads.
- Control Tower + LZA — Automated governance with guardrails. Version-controlled configuration.
- Hub-and-spoke networking — Transit Gateway in a dedicated network account. Centralized inspection for egress.
- Security baseline everywhere — CloudTrail, GuardDuty, Security Hub, Config in every account. SCPs as preventive guardrails.
- Identity Center — Centralized SSO with permission sets. No long-lived credentials.
- Cost governance — Mandatory tags, per-account budgets, organization-level purchasing.
Get the landing zone right, and everything you build on top — workloads, automation, compliance — inherits the security and governance posture from day one.
Alpesh Kumbhare is an AWS Architect at Atos, specializing in AWS infrastructure automation and enterprise cloud architecture. Connect on LinkedIn.
Top comments (0)