Why?
Most governance docs die in SharePoint. Teams spin up resources faster than the policy team can review them, and before long you have 47 storage accounts with public blobs and no idea who owns them. The fix isn’t more PowerPoint. It’s guardrails that deploy automatically, fail closed, and give engineers a clear path to ship.
What?
We’re talking Azure Policy initiatives assigned at management group scope, backed by Bicep or Terraform so the rules themselves live in source control. Add a lightweight exception process via GitHub issues or ServiceNow, and you get guardrails that actually ship.
How?
Step 1: Pick the smallest set of policies that matter
Start with three initiatives: tagging, public network blocks, and approved SKUs. Anything else goes in a later wave. Define them in a single Bicep file so one PR updates everything.
[screenshot: Bicep file open in VS Code showing three policy initiative modules with clear parameter blocks for managementGroupId and enforcementMode]
Step 2: Assign at the top and let inheritance do the work
Create or pick a root management group, then assign the initiative there with enforcementMode set to DeployIfNotExists. This keeps the blast radius small while still covering new subscriptions automatically.
[screenshot: Azure portal Policy assignments blade showing the initiative assigned to the root management group with scope and enforcement mode visible]
Step 3: Wire in a simple exception workflow
Add a deny policy that blocks resource creation unless a tag exceptionId exists. When engineers need a waiver they open a short GitHub issue that triggers a pipeline to add the tag for 30 days.
[screenshot: GitHub issue template with fields for resourceId, justification, and expiry date, next to a small workflow YAML snippet]
Step 4: Monitor drift with a weekly check
Run a single Azure CLI command in a scheduled pipeline that exports non-compliant resources and posts them to a Teams channel. No dashboards, just a list people actually read.
[screenshot: Teams channel message showing a short table of non-compliant resources with links back to the policy compliance blade]
Ship the first iteration this week, then tighten it based on what actually breaks. Your future self (and the compliance team) will thank you.
What guardrails have you got shipping? Drop a comment.