Azure Landing Zone Checklist
Run before production workloads land in Azure — subscription and management group structure, identity and conditional access, networking, policy guardrails, cost controls and a tested restore.
Markdown. No sign-up, no email.
Complete before the first production resource exists. Retrofitting subscription structure, tagging and identity onto a running estate is among the most expensive work in cloud engineering, and it is entirely avoidable.
Workload / environment: _______________ Owner: _______________ Date: _______
1. Tenant and subscription structure#
- [ ] Management group hierarchy defined, not everything in the root
- [ ] Separate subscription per environment (production isolated)
- [ ] Naming convention agreed and documented
- [ ] Resource groups grouped by lifecycle, not by resource type
- [ ] Subscription owner named for each
🔴 The subscription is the strongest practical boundary Azure offers for blast radius, policy and cost attribution. Sharing one across production and development to save administration trades a permanent boundary for a temporary convenience.
2. Identity#
- [ ] Human access through directory groups, not individual assignments
- [ ] Multi-factor authentication enforced, especially for privileged roles
- [ ] Conditional access policies defined and tested — including a break-glass exclusion
- [ ] Break-glass account exists, excluded from conditional access, credentials sealed and stored where two people can reach them
- [ ] Privileged roles time-bound rather than standing where available
- [ ] Workload identity used for applications — no secrets in code
- [ ] Access review cadence set
Break-glass tested on: _______
A conditional access policy that locks out every administrator is a well-documented way to lose an entire tenant. Test the escape route before you need it.
3. Networking#
- [ ] Virtual network and address space planned against future growth and any on-premises overlap
- [ ] Subnets segmented by tier
- [ ] Network security groups default-deny inbound
- [ ] Anything reachable from the internet listed explicitly and justified
- [ ] Private endpoints used for platform services holding data
- [ ] Outbound path deliberate
- [ ] DNS resolution planned, including hybrid
4. Policy guardrails#
- [ ] Policies assigned at management group level, not per resource
- [ ] Allowed regions restricted
- [ ] Required tags enforced (owner, environment, cost centre)
- [ ] Public network access denied by default for data services
- [ ] Deny rules chosen over audit-only where the risk warrants it
Policy is the mechanism that keeps an estate consistent as it grows. Audit-only policies tell you about drift you then have to chase.
5. Data#
| Store | Classification | Encryption | Public access blocked | Backup | Retention |
|---|---|---|---|---|---|
- [ ] Soft delete and purge protection enabled where available
- [ ] Deletion protection / resource locks on production data stores
- [ ] Key management decided — platform-managed or customer-managed, with a reason
- [ ] Data residency requirements met and recorded
6. Cost#
- [ ] Budget set with alerts to a real inbox
- [ ] Tagging enforced by policy, not by convention
- [ ] Non-production resources scheduled to stop outside working hours
- [ ] Reservations or savings plans considered after a measured baseline
- [ ] Orphaned resources reviewed — disks, addresses, snapshots
7. Monitoring and recovery#
- [ ] Diagnostic settings sending logs to a central workspace
- [ ] Retention set deliberately
- [ ] Alerts that page a person, routed to a named rota
- [ ] Restore tested on ____ — took ____
- [ ] Backups isolated from the workload's own credentials
- [ ] Recovery objectives (RPO/RTO) written down and achievable
🔴 An untested backup is a belief. Fill in the restore row with a real date and a real duration, or record the gap honestly.
8. Before go-live#
- [ ] No standing owner-level access
- [ ] No public endpoints beyond the listed ones
- [ ] Every resource tagged
- [ ] Alerts tested by causing the condition
- [ ] Runbook written for the three most likely failures
Sign-off#
| Name | Date | |
|---|---|---|
| Built by | ||
| Security | ||
| Cost owner | ||
| Approved for production |