Back to Blog
2 min read

Azure Policy: Governance at Scale

Azure Policy enforces standards and assesses compliance across your Azure resources. It’s the foundation of cloud governance.

Built-in Policies

# List built-in policies
az policy definition list --query "[?policyType=='BuiltIn'].{Name:displayName, Category:metadata.category}" -o table

Common policies:

  • Allowed locations
  • Allowed VM SKUs
  • Require tags
  • Enforce encryption

Custom Policy

{
  "mode": "All",
  "policyRule": {
    "if": {
      "allOf": [
        {
          "field": "type",
          "equals": "Microsoft.Storage/storageAccounts"
        },
        {
          "field": "Microsoft.Storage/storageAccounts/supportsHttpsTrafficOnly",
          "notEquals": true
        }
      ]
    },
    "then": {
      "effect": "deny"
    }
  },
  "parameters": {}
}

Effects

EffectDescription
DenyBlock non-compliant creation/update
AuditLog non-compliance
AppendAdd fields (e.g., tags)
DeployIfNotExistsDeploy missing resources
ModifyChange resource properties
DisabledPolicy not enforced

Policy Initiatives

Group related policies:

# Create initiative from multiple policies
az policy set-definition create \
    --name "SecurityBaseline" \
    --definitions '[
        {"policyDefinitionId": "/providers/Microsoft.Authorization/policyDefinitions/..."},
        {"policyDefinitionId": "/providers/Microsoft.Authorization/policyDefinitions/..."}
    ]'

Assignment

# Assign to subscription
az policy assignment create \
    --name "enforce-tags" \
    --policy "/providers/Microsoft.Authorization/policyDefinitions/require-tag" \
    --params '{"tagName": {"value": "CostCenter"}}' \
    --scope "/subscriptions/xxx"

Compliance Dashboard

Azure Portal → Policy → Compliance shows:

  • Overall compliance percentage
  • Non-compliant resources
  • Remediation tasks

Start with Audit effect, move to Deny once you understand impact.

Michael John Peña

Michael John Peña

Senior Data Engineer based in Sydney. Writing about data, cloud, and technology.