Landing zone design is cheap now and genuinely disruptive to retrofit. This guide covers the structure that keeps spending traceable, satisfies the questions elected members ask, and lets your own staff operate the estate afterwards.
If you have to build it
Management group hierarchy, subscription topology, Azure Policy assignment, tagging enforcement, network design and the identity model underneath it.
Why it matters
The problem this solves
Public sector cloud programmes fail at governance and procurement far more often than at technical migration. An estate that grew subscription by subscription becomes unmanageable at a few hundred resources, and the retrofit is a project in its own right.
The questions members ask — where is the data, who can access it, how do we know we are not overpaying, what is the exit route — are all answerable, but only if the architecture was designed with them in mind.
Before you start
Prerequisites
Check these before beginning. Most stalled implementations stall on one of them.
Licensing
An Azure agreement appropriate to your procurement route. Confirm whether you need a government cloud region before designing.
Roles
Owner at the tenant root management group for the initial setup; Contributor is insufficient for policy assignment at that scope.
Decisions
Data residency requirements, and whether workloads must remain in a specific jurisdiction. Raise this at design time, not at contract stage.
Governance
Agreement on who approves subscription creation. Without this, the structure erodes within a year.
How it works
The concepts worth understanding first
Configuration is straightforward once these are clear. Skipping them is why most first attempts produce something that works and cannot be maintained.
Management groups carry policy; subscriptions carry billing
Policy assigned at a management group applies to every subscription beneath it. Design the hierarchy around governance requirements rather than around organizational structure, because departments reorganise and governance requirements do not.
Policy is preventive, not just reportive
Azure Policy can audit, deny or remediate. Deny effects prevent non-compliant resources being created at all, which is considerably cheaper than finding them afterwards. Tagging enforcement in particular should be a deny.
Tagging is the foundation of cost accountability
Cost attribution is an accountability problem before it is a technical one. Spend that nobody owns is spend that nobody reduces, and the only way to attach a name to a resource reliably is to make untagged creation impossible.
Configuration
Step by step
Settings shown are the ones that matter, not every field on the form. Values are starting points to validate against your own environment.
01
Build the management group hierarchy
Keep it shallow. Three or four levels covers almost every agency, and deeper hierarchies become difficult to reason about.
A workable structure is: tenant root, then a platform group for shared services, then landing zone groups split by governance requirement — typically corporate, and a separate group for anything with elevated data requirements.
Depth
3–4 levels maximum
Platform group
Identity, management and connectivity subscriptions
Landing zones
Split by governance requirement, not by department
Sandbox
A separate group with permissive policy and a hard spending cap
02
Assign policy at the highest sensible scope
Assign broad policy at the root or platform level and narrow exceptions lower down. Assigning everything at subscription level produces drift the first time somebody creates a subscription without the assignments.
Start with a small set that carries most of the value.
Allowed locations
Deny — restrict to your approved regions, this is your residency control
Require tags
Deny on missing owner, workload and environment tags
Allowed SKUs
Deny on expensive VM families nobody has approved
Diagnostic settings
DeployIfNotExists, so logging is on by default
Public IP restrictions
Deny or audit, depending on your network model
03
Enforce a tagging standard that supports cost reporting
Three tags carry most of the value: owner, workload and environment. Add a cost centre tag if your finance system needs it.
Enforce by deny policy rather than by guidance. A tagging standard that relies on people remembering produces a partially tagged estate, which is only slightly better than none.
owner
A person or team, not a department name — specificity is the point
workload
The application or service, matched to how you want to report
environment
Production, non-production, sandbox
Enforcement
Deny policy at management group level, with inherit-from-resource-group where sensible
04
Design the network and identity model together
Hub-and-spoke remains the default for good reason. Put shared services — firewall, gateway, DNS — in the hub, and give each landing zone a spoke.
Design privileged access at the same time. Just-in-time elevation through privileged identity management is the control auditors ask about, and it is far easier to establish before people have standing permissions.
05
Document it for handover from day one
Write the documentation for your own staff rather than for the supplier. Infrastructure as code so the structure is reproducible and reviewable.
If a partner cannot describe how they would hand over, that is a lock-in arrangement being described as a partnership.
Verify it worked
Attempt to create a resource in a disallowed region and confirm the deny policy blocks it.
Attempt to create an untagged resource and confirm it fails.
Confirm cost reporting groups correctly by owner and workload tag in Cost Management.
Confirm diagnostic settings are applied automatically to a newly created resource.
Have a member of your own staff deploy a test workload following only the documentation.
Best practice
What we do on every engagement of this type
Keep the management group hierarchy shallow and organised by governance, not department
Use deny effects for the policies that matter, not audit-only
Enforce tagging at creation — retrofitting tags across a live estate is a project
Design privileged access before people acquire standing permissions
Write documentation for your own staff and test it with them
Establish a named approver for subscription creation
Pitfalls
What catches most first attempts
Every one of these is avoidable, and every one of them is common enough that we check for it by default.
!Audit-only policy
It produces a compliance report and a non-compliant estate. If a control matters, deny it at creation.
!Organising management groups by department
Departments reorganise. Governance requirements do not. A hierarchy built on the org chart needs rebuilding after every restructure.
!Deferring the tagging standard
Every untagged resource created before the standard exists has to be tagged retrospectively by somebody who has to work out who owns it. This is genuinely unpleasant work.
!Skipping the residency conversation
Raise it at design time. Discovering a residency requirement after workloads have landed can invalidate the architecture and occasionally the procurement.
Completion checklist
Management group hierarchy designed around governance and no more than four levels deep
Core policy set assigned with deny effects where they matter
Tagging standard enforced by policy, covering owner, workload and environment
Hub-and-spoke network and privileged access model designed together
Infrastructure as code committed to a repository your staff can access
Documentation validated by one of your own engineers deploying a test workload
Want a second pair of eyes?
We will design the landing zone with your governance and residency requirements written into it, and validate the documentation by having your own engineer deploy from it.