Skip to content

Tagging Policy

The JV-Enforce Resource Group Tags v3 policy (Deny effect, Management Group scope) blocks resource group creation unless all 9 required tags are present.

#Tag KeyPurposeExample Value
1environmentDeployment stagedev, staging, prod
2ownerResponsible team or individualmalta-catering-team
3costcenterFinance charge codeCC-4821
4applicationApplication identifiermalta-ordering
5workloadWorkload classificationordering-portal
6slaService level agreement tierbronze-demo
7backup-policyBackup strategynone-demo
8maint-windowMaintenance window schedulesun-0200-0400
9technical-contactTechnical point of contactplatform-team@contoso.com

The standard APEX 4-tag model (Environment, ManagedBy, Project, Owner) does not satisfy this subscription’s governance requirements. The deployment contract must be expanded to include all 9 lowercase tag keys.

The JV - Inherit Multiple Tags from Resource Group policy (Modify effect) automatically copies 9 tag keys from the resource group to child resources:

#Inherited Tag Key
1environment
2owner
3costcenter
4application
5workload
6sla
7backup-policy
8maint-window
9tech-contact

To bridge both the deny policy and the modify policy, include both technical-contact and tech-contact:

tags.bicep
tags: {
environment: environment
owner: owner
costcenter: costCenter
application: projectName
workload: 'ordering-portal'
sla: 'bronze-demo'
'backup-policy': 'none-demo'
'maint-window': 'sun-0200-0400'
'technical-contact': technicalContact
'tech-contact': technicalContact
}
%%{init: {'theme':'neutral'}}%%
flowchart TD
    MG["Management Group Tags"] -->|inherited| SUB["Subscription Tags"]
    SUB -->|inherited| RG["Resource Group Tags"]
    RG -->|inherited| RES["Resource Tags"]
    POL["Azure Policy\n(Modify effect)"] -->|auto-applies| RES
    style POL fill:#FFB900,stroke:#333
    style RES fill:#0078D4,color:#fff,stroke:#333