Logo
skrypnyk.kostiantyn@gmail.com
Cloud ArchitectureLatest

7 Structural Mistakes in Production AWS Landing Zones

KS
Kostiantyn Skrypnyk
|
March 9, 2026
#Landing Zone#Cloud Architecture#AWS Organizations#Platform Engineering#DevOps
7 Structural Mistakes in Production AWS Landing Zones
AWS Landing Zones Architecture Governance Multi-Account

7 Structural Mistakes in Production AWS Landing Zones

Over the past years working with multi-account architectures, I've spotted many cases that initially looked "correct," but eventually led to painful refactoring. I've seen these situations across companies of all sizes that aimed to implement Landing Zones properly.

Most of them focused only on their initial requirements:

  • Multiple accounts
  • Infrastructure as Code for implementation
  • Centralized activity tracking
  • A structured identity system across the organization

All of these points are valid, and tooling is rarely the issue. The real problem is the structural assumption that a Landing Zone is just a deployment template. It's not.

A Landing Zone is a governance architecture that must be carefully designed and properly maintained over time.

Based on this experience, below I've outlined seven structural issues I most frequently see in production AWS environments and how to evaluate them during audits.

These cases are applied independently from selected cloud platform, but for this post I'll use the AWS cloud to highlight them on examples.
1

Designing the Structure for Today, Not for Growth

Most companies build their OUs and accounts structure following current needs:

⚠ Common Pattern
Organization
  └── OU root
       ├── Account Security
       ├── Account Shared Services
       ├── OU production
       │    ├── account1
       │    ├── account2
       │    └── ...
       ├── OU stage
       │    └── account1
       └── OU dev
            └── account1

And it looks reasonable — like it covers all environments and isolates them. But problems come later, when:

Add new business unit No room to add a dedicated OU without restructuring the entire org
Achieve full app isolation Impossible to isolate per application without crossing environment boundaries
Organize team permissions Advanced per-team access control becomes painful without app-level OU nesting

Even if it looks similar, it's not just a cosmetic change. It determines future operational complexity and provides flexibility on management sub-OUs and accounts.

✓ Scalable Pattern
Organization
  └── OU root
       ├── OU security
       │     └── Account Security
       ├── OU share
       │     └── Account Shared Services
       └── OU Workloads
             ├── OU APP1
             │    ├── OU Prod
             │    │    ├── account1
             │    │    └── account2
             │    ├── OU Stage
             │    └── OU Dev
             └── OU APP2
                  └── ...
If you want to dive more on that topic, the article below provides additional practical recommendations on designing scalable structures and governance models: AWS Whitepapers
2

IAM Governance Without Identity Lifecycle Control

What is the most common pattern for IAM identity management in many organizations?

⚠ Typical Anti-Patterns
  • Create batches of roles per project
  • Grant permissions incrementally over time
  • No defined ownership or expiration
  • No tracking or periodic review
Role_A
  ├── Policy_1
  ├── Policy_2
  ├── Policy_3
  └── +10 inline policies

Identity management is often one of the most common sources of security issues in cloud environments. And following these practices, they often evolve into something like the above.

At this point, simple questions like "Who owns this role?" or "Why were these permissions granted?" becomes difficult to answer. Without lifecycle enforcement, IAM identities management becomes chaotic.

Landing Zones help address this problem by enabling centralized identity governance from a dedicated account. Identity management can be controlled, shared, and maintained from a single place. This makes it possible to enforce a governance lifecycle such as:

Request
Approval
Provision
Periodic Review
Decommission

With clear ownership and regular reviews, identity sprawl becomes manageable and auditable.

3

SCP Guardrails That Don't Enforce Risk Boundaries

In many organizations, Service Control Policies (SCPs) exist, but they are symbolic and designed only around immediate operational needs. Typical examples look like:

⚠ Symbolic SCPs
Deny: * in region X
Deny: EC2:* if instance type X

These policies enforce technical preferences, but they rarely address the actual security risks within the environment.

Critical controls are often missing, such as preventing IAM privilege escalation, disabling logging, or exposing storage resources publicly. A simple misconfiguration — like creating a public S3 bucket — can lead to significant security incidents if proper guardrails are not enforced.

Instead, SCPs should be designed around the organization's risk boundaries. For example:

✓ Risk-Boundary SCPs
Deny:
  - Disable CloudTrail
  - Modify Security Hub configuration
  - Create public S3 buckets without encryption
  - Create IAM users

When SCPs are structured around risk controls rather than operational preferences, they become an effective governance layer that reflects the company's security posture.

4

Logging Without Detection Architecture

Most environments enable logging in each account:

CloudTrail
VPC Flow Logs
AWS Config

This is a good starting point, but logging alone is not observability yet. If detection mechanisms are missing, logs simply become additional storage cost and create a false sense of security.

Security teams often assume that because logs exist, incidents can be detected. In reality, without detection rules, correlation, and monitoring pipelines, these logs are rarely analyzed in practice.

Landing Zones help address this by introducing a centralized logging architecture. Instead of storing logs independently in each account, they can be aggregated into a dedicated logging account where security monitoring and detection systems operate. This enables to implement much easier:

Centralized log storage
Detection rules and alerting
Security analytics
Incident investigation across accounts

With a proper detection layer, logs become part of a security architecture rather than passive data storage.

5

Network Architecture Without Clear Ownership

In many environments, networking is implemented independently inside each workload account:

⚠ Fragmented
Account A - VPC
Account B - VPC
...
Account N - VPC

Works initially, but over time leads to duplicated components, inconsistent configs, and complicated cross-account connectivity.

✓ Centralized
Network Account
  ├── Transit Gateway
  └── Shared VPCs to Account A/B/.../N

Workload accounts connect to central architecture. Resources shared via AWS RAM.

Landing Zones usually introduce a dedicated networking domain. Clear network ownership simplifies connectivity management and enforces consistent security boundaries across the organization.

6

Infrastructure as Code Only for "Compute"

A common pattern is using Terraform for workload resources (VPCs, EC2/EKS, IAM roles, RDS), while the governance layer remains managed manually.

✓ Covered by IaC
  • VPCs
  • EC2 / EKS
  • IAM roles
  • RDS
⚠ Left outside IaC
  • AWS Accounts
  • OUs
  • SCPs
  • Organizational controls

This creates drift between environments and makes scaling painful.

Landing Zones work best when the governance layer is treated as code as well. This means core elements such as accounts, OUs, SCPs, and baseline configurations should be versioned, reviewed, and deployed through controlled pipelines.

7

No Cost Governance Embedded in Architecture

Cost management is one of the most important concerns for every organization operating in the cloud. However, even a single missing element from the governance model can lead to financial problems:

Account-level cost ownership
Tag enforcement
Budget guardrails
Team-level visibility

All these elements should be integrated into the architecture as part of financial governance. And Landing Zones helps us to organize proper model:

Business account
  ├──
  Workload Account
   ├── Budget Threshold
   ├── Cost Allocation Tags
   └── Alerts to Owner

Embedding these controls into the Landing Zone architecture makes costs visible and predictable. As without this, cloud cost management becomes reactive instead of predictable.

Conclusion

Most Landing Zones fail not because of incorrect Terraform or missing tools.

They fail because the architecture was designed for current needs rather than long-term scale.

We always need to remember, that Landing Zone is not just an infrastructure template, it is a governance system.

And AWS highlights many of these lessons in their own guidance. Reviewing these structural elements early helps ensure that a Landing Zone can support both current workloads and future organizational growth.

Have a question?

Feel free to reach out if you need more details or have any questions about this topic.

Open to Opportunities

  • Freelance & Contract work
  • Startup & Business collaborations
  • Mentoring
  • Speaking engagements