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)
Enter fullscreen mode Exit fullscreen mode
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
Enter fullscreen mode Exit fullscreen mode
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 │
└───────────────┘
Enter fullscreen mode Exit fullscreen mode
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"}
}
}
Enter fullscreen mode Exit fullscreen mode
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.
0 Comments
Log in to join the conversation.No comments yet. Be the first to share your thoughts.