Business Challenge
This series began with management groups and subscriptions, and has spent twenty-nine posts on the mechanisms underneath an Azure estate: policy, RBAC, locks, deny assignments, moves, deployment scopes, templates, state. Every one of those posts ended with a design decision left to the reader.
The Cloud Adoption Framework's landing zone is Microsoft's version of those decisions already made. It is a proven and flexible architecture for governing, securing, and scaling a multi-subscription Azure environment, and it comes in two halves:
- A platform landing zone — the centralized foundation that establishes governance, security, and shared resources for all your Azure workloads. Most organisations should have only one per Microsoft Entra tenant.
- Application landing zones — the environments where workload teams deploy and operate workload resources within the guardrails of the platform landing zone. One per workload, containing every environment that workload needs.
You can get either by accelerator — Microsoft-provided infrastructure as code — or by custom build. The guidance does not hedge: for most organizations, accelerators provide the fastest path to a deployment that aligns with Microsoft's recommended practices.
That could be read as "run the accelerator and stop thinking", and it is worth saying plainly why that reading fails. An accelerator makes the reversible decisions for you. It does not make the irreversible ones, and it cannot stop you undoing its work with a well-intentioned change in week three. The most useful thing in the landing zone documentation is therefore not the hierarchy diagram. It is the list of things it tells you not to do — because every item on that list is something a competent architect does by instinct.
Do not mirror the org chart. Do not give application teams RBAC at management group scope. Do not make management groups for dev, test and prod. Do not model regions. Do not load the root group with policy. Every one of those is an instinct — and every one is documented as a mistake, with a reason attached. A team that deploys the accelerator and then does all five has an architecture that looks like the reference and behaves like the thing it replaced.
Architecture
What the platform landing zone actually contains
Three things, and the third is the one most estates underestimate.
A management group hierarchy, which organizes all of your Azure subscriptions and applies governance standards to those subscriptions. The baseline names are worth knowing because they encode decisions:
| Management group | What it is for |
|---|---|
| Intermediate root | Sits directly under the tenant root with your own prefix, so that they don't have to use the root group. Everything else in the reference architecture hangs off it. |
| Platform | Parent to the platform children — Security (Sentinel and SIEM tooling), Management (the Azure Monitor Logs workspace), Connectivity (Virtual WAN, Firewall, private DNS zones) and Identity (domain services). One dedicated subscription each. |
| Landing zones | Parent to the workload groups, carrying workload-agnostic Azure policies. |
| Corp | Workloads needing connectivity or hybrid connectivity with the corporate network via the hub in the connectivity subscription. |
| Online | Workloads that might require direct internet inbound or outbound connectivity, or that need no virtual network at all. |
| Local | Azure Local clusters and the workloads on them, which have different policy requirements. |
| Sandboxes | Isolated from Corp and Online, with a less restrictive set of policies assigned to enable testing, exploration, and configuration. |
| Decommissioned | Cancelled landing zones move here, and then Azure deletes them after 30-60 days. |
Notice what the top-level split is doing. Corp, Online and Local are not business units or environments — they are connectivity and compliance postures. That is the choice that makes the hierarchy useful for its stated purpose, which is applying policy to groups of subscriptions that need the same rules.
Centralized resources, with a sentence worth pinning up: only centralize capabilities that provide clear governance, operational, or economic benefits across multiple workloads. Centralising is not free — it creates a platform team dependency for every workload that touches it — and the test offered is a benefit across multiple workloads, not a preference for tidiness.
A distribution process. The platform needs a repeatable process for requesting, creating, and distributing application landing zones to workload teams, and as the number of application landing zone requests grows, automation becomes increasingly important. This is subscription vending, and it is the part teams build last and wish they had built first, because until it exists every new workload is a bespoke conversation.
The application landing zone is a workload, not a subscription
The definition is more specific than the casual usage suggests. Each workload has a single application landing zone, and that landing zone contains all the environments required to support that workload, such as development, test, and production. Each environment is then one or more Azure subscriptions.
So the unit is the workload; environments live inside it; subscriptions are the implementation detail underneath. The platform team's only decision at handover is which of Online, Corp or Local the subscriptions belong in — and that decision is about connectivity posture, which determines which policies the subscription inherits.
The five prohibitions, and why each one is tempting
| Do not | The instinct behind it | The documented reason |
|---|---|---|
| Duplicate the org chart into a deeply nested hierarchy | The hierarchy looks like an org chart, so it feels like one. | Use management groups for policy assignment versus billing and RBAC purposes. Reporting lines change; policy boundaries should not. |
| Assign application teams RBAC at management group scope | It is one assignment instead of many, and post #18 showed assignments are a scarce budget. | Over-permissioning and security risks, and added risk from inheritance. Grant at the subscription or resource group they actually need. |
| Create management groups for dev, test and production | Environments obviously need different policy. | Separate these groups into different subscriptions in the same management group. Environment is a subscription-level concern. |
| Model Azure regions in the hierarchy | Multi-region estates feel like they need multi-region structure. | Don't alter or expand your management group structure based on region or multiregion usage — unless data residency, security or sovereignty requires it, which is the one stated exception. |
| Put policy at the root management group | It is the one place that catches everything. | Limit the number of Azure Policy assignments at the root management group scope, because it minimizes debugging inherited policies in lower-level management groups. |
The second one deserves emphasis, because it collides with an argument this series has made. Post #18 established that role assignments are a per-scope budget, and post #19 that assigning to groups rather than users is how you stay inside it. The natural next step — assign the group at a management group and cover everything at once — is exactly what the guidance forbids for application teams, on the grounds that inheritance turns a convenience into a blast radius. Platform teams may hold management group scope, and even then this should be controlled via privileged identity management to ensure that the permissions are only granted when needed.
Depth, and the headroom you are asked not to spend
A management group tree can support up to six levels of depth, excluding the tenant root and the subscription level. The recommendation is no more than three to four levels — 6 − 4 = 2 levels deliberately left unspent, because this restriction reduces management overhead and complexity.
The suggested alternative for the cases that tempt you into more depth is neat: use resource tags to query and horizontally navigate across the management group hierarchy, enforced or appended by Azure Policy, so you can group resources for search needs without having to use a complex management group hierarchy. Tags for finding things, hierarchy for governing them — which is exactly the split post #13 argued for from the tagging side.
Anyone can create management groups. By default, any principal, like a user principal or service principal, within a Microsoft Entra tenant can create new management groups. The fix is to enable Azure RBAC authorization for management group operations to override the default authorization. And new subscriptions land at the root. All new subscriptions are placed under the tenant root management group by default, outside every policy you have assigned below it. The fix is to configure a default, dedicated management group for new subscriptions — with sandbox named as a good candidate, so an unplanned subscription lands somewhere isolated rather than somewhere governed by nothing.
Why This Architecture Holds Up
The accelerator makes the cheap decisions, not the expensive ones
Running an accelerator produces a hierarchy, policy assignments, platform subscriptions and a network topology — all of which are reversible with effort. What it cannot do is make the decisions this series spent twenty-nine posts showing are hard to undo:
- Where custom role definitions live, because
AssignableScopescaps their reach permanently (#20). - Which resource group a resource is created in, because moving it is a four-hour lock, a changed resource ID and an orphaned role assignment (#23).
- Which management group a subscription sits under, because that determines everything it inherits (#14–#17).
- Whether stacks or Terraform hold the record of what exists, and where that record lives (#27, #28).
The accelerator is best understood as removing the decisions that have a known right answer, so attention is left for the ones that do not. That is a real service, and it is a different thing from removing the need to understand the platform.
Start with the default three
For all the tailoring documentation, the guidance is unambiguous about where to begin: for many organizations, the default Corp, Online, and Local management groups provide an ideal starting point.
That is worth taking literally, because the failure mode is predictable. A design workshop generates fifteen management groups reflecting every distinction anyone can name, and the estate spends two years discovering that twelve of them never received a different policy from their sibling. Groups are cheap to add when a genuine policy difference appears, and expensive to remove once subscriptions live in them.
The architecture is designed to absorb what comes next
One claim in the documentation is easy to skip and worth testing against the last two years: an Azure landing zone supports new and emerging technologies without requiring changes to the overall architecture. The mechanism is that new workload types go into application landing zones like any other, and new requirements become policy updates in the platform, applied consistently downward.
That is the real argument for the hierarchy being about policy rather than organisation. An org chart has to be restructured when the company reorganises. A hierarchy whose top-level split is connectivity posture does not care, because what changed was reporting lines and what it governs is network exposure.
Key Architecture Decisions
The shape that works
| Decision | What to do | Why |
|---|---|---|
| Build or accelerate | Use an accelerator unless you can name the requirement it fails | It is the documented fastest path to recommended practice, and a custom build re-earns every decision it already made. |
| Number of platform landing zones | One per Entra tenant | The stated guidance for most organisations, and two foundations mean two sets of everything. |
| Top-level workload split | Start with Corp, Online and Local; add only for a real policy difference | Named as the ideal starting point. Groups are cheap to add and expensive to remove once populated. |
| Hierarchy depth | Three to four levels, against a limit of six | Explicitly recommended to reduce management overhead, and the spare depth is not a target. |
| Finding things across the estate | Tags, enforced by policy — not more management groups | The documented alternative to a complex hierarchy, and the split post #13 argued for independently. |
| Application team access | Subscription or resource group scope only | Management group scope is over-permissioning plus inherited risk, per the guidance. |
| Platform team access | Management group scope through PIM, not standing | The permissions should only be granted when needed. |
| New subscriptions | Set a default management group, with sandbox a good candidate | Otherwise they land at tenant root, below none of your policy. |
| Who can create management groups | Enable RBAC authorization in the hierarchy settings | By default any principal in the tenant can create one. |
| Landing zone distribution | Build subscription vending before you need it | Automation becomes increasingly important as requests grow, and until it exists each workload is bespoke. |
Closing Thought
This post closes the foundations phase of the series, and the landing zone is a fitting place to end it — because it is the moment all the individual mechanisms stop being separate topics and become one environment.
What stands out, having taken the platform apart first and read the reference architecture second, is how much of the guidance is defensive. Do not nest deeply. Do not grant broadly. Do not model things the hierarchy was not built to model. Do not put policy where it will be inherited by everything. These are not the notes of a team describing an elegant design; they are the notes of a team that has watched a great many estates go wrong in the same handful of ways, and has written down the turnings.
Which suggests the right way to use it. Deploy the accelerator, by all means — it is the fastest path to a defensible starting point. But read the prohibitions first and treat them as the actual deliverable, because the hierarchy it creates can be rebuilt in an afternoon, and the habits that erode it take a year to form and several to undo.
Phase 2 begins at #31, on identity and access — starting from Microsoft Entra ID itself rather than the Azure resource model, and the distinction between the two that posts #18 to #21 kept having to work around.
Comments