Skip to content

Part 3: Naming, Tagging & Inheritance

Source: John Savill's Azure Master Class v3 - Part 3: Governance
Video Timestamps: 32:15 - 45:00
AZ-104 Relevance: ⭐⭐⭐⭐ Tags and inheritance are tested; naming is best practice knowledge


Naming Standards

Why It Matters

Looking at a resource, you should immediately know:

  • What type it is
  • Which workload/app it belongs to
  • Which environment (dev/prod)
  • Which region
  • Instance number (if multiple)

Cloud Adoption Framework Recommendation

{resource-type}-{workload}-{environment}-{region}-{instance}

Examples:

ResourceName
Storage Accountstaboraboraprodeus001
VMvm-webapp-prod-westeu-001
Resource Grouprg-payments-dev-eastus
VNetvnet-hub-prod-westeu

Key Points

  • Be consistent across cloud AND on-premises
  • Define abbreviations upfront (st, vm, rg, vnet, nsg, etc.)
  • Document your convention - make it discoverable
  • Some resources have naming restrictions (storage = lowercase, no hyphens)

📎 Azure naming conventions


Tags

What They Are

Key-value pairs attached to resources for metadata, filtering, and billing.

Where Tags Apply

ScopeTags Supported?
Management Groups❌ No
Subscriptions✅ Yes
Resource Groups✅ Yes
Resources✅ Yes

Tag Limits

LimitValue
Tags per resource50 (some resources: 15)
Tag name length512 characters
Tag value length256 characters
TagPurpose
Environmentprod, dev, test, staging
OwnerEmail of responsible person
CostCenterFor billing/chargeback
ApplicationWhich app/workload
BusinessUnitFinance, Marketing, etc.
CriticalityHigh, Medium, Low

⚠️ Critical: Tags Are NOT Inherited

If you tag a subscription, resources inside do NOT get that tag automatically.

Making Tags Inherit (via Policy)

Azure Policy can force inheritance:

PolicyBehavior
Inherit tag from resource group if missingCopies tag only if resource doesn't have it
Inherit tag from subscription if missingSame, from subscription
Inherit tag from resource groupAlways copies (overwrites)

Portal path: Policy → Definitions → Category: Tags → Search "inherit"

Tag Values Can Be JSON

Need more than 50 tags? Store a JSON document as the value:

json
{
  "malwareVersion": "2.1.5",
  "firewallConfig": "standard",
  "lastPatchDate": "2026-01-15"
}

Then parse it with automation.

Tag Uses

Use CaseHow
Filter portal viewsResource list → Add filter → Tag
Cost analysisCost Management → Group by tag
Policy enforcementRequire certain tags on creation
AutomationScripts query by tag

Inheritance (The Core Concept)

What Inherits Down?

Governance TypeInherits Down?
RBAC (permissions)✅ Yes
Policy✅ Yes
Locks✅ Yes
TagsNo (use policy)
BudgetRolls UP (not down)

Cannot Block Inheritance

Important: There is NO way to block inherited permissions.

If someone has Owner at subscription level, you as an RG owner CANNOT remove their access to your RG. This is by design - otherwise you'd undermine the entire hierarchy.

Inheritance Diagram

The Three Pillars at Each Scope

PillarControlsInheritance
RBACWHO can do thingsDown ✅
PolicyWHAT can be doneDown ✅
BudgetHOW MUCH spendRolls up ↑

Locks (Quick Overview)

Locks prevent accidental changes/deletions at control plane level.

Lock TypeCan Modify?Can Delete?
ReadOnly❌ No❌ No
CannotDelete✅ Yes❌ No

Key Points

  • Applied at: Subscription, Resource Group, or Resource
  • Inherited down (lock on RG applies to all resources in it)
  • Control plane only - doesn't stop data operations (can still delete blobs in a locked storage account)
  • Only Owner at the scope can remove the lock

Mental Model

Tags = Post-it Notes 📝

  • Stick them on resources for info
  • They don't automatically appear on things inside
  • Useful for searching and billing

Inheritance = Water Flowing Downhill 💧

  • RBAC and Policy flow DOWN from MG → Sub → RG → Resource
  • You can't build a dam to stop it (no blocking)
  • Budget flows UP like evaporation (aggregates)

AZ-104 Exam Tips

TopicKey Point
Tags inheritanceNO - must use policy to inherit
Max tags50 per resource
Tags on MGNot supported
RBAC inheritanceCannot be blocked
Lock typesReadOnly vs CannotDelete
Locks scopeControl plane only, not data plane

Practical Exercises

Exercise 1: Add Tags to a Resource Group (5 min)

  1. Open any Resource Group → Tags
  2. Add: Environment = test, Owner = your email
  3. Create a resource in that RG
  4. Check: Does the new resource have those tags? (Hint: No!)

Exercise 2: Check Tag Inheritance Policy (5 min)

  1. Portal → PolicyDefinitions
  2. Filter Category: Tags
  3. Search "inherit"
  4. Read the description of "Inherit a tag from the resource group if missing"

Exercise 3: Apply a Lock (5 min)

  1. Create a test Resource Group
  2. Go to LocksAdd
  3. Choose CannotDelete
  4. Try to delete the RG - what happens?
  5. Remove the lock when done

Exercise 4: View Inherited Permissions (3 min)

  1. Open a Resource Group → Access Control (IAM)Role assignments
  2. Notice the "Inherited" column
  3. Trace back: where did each inherited permission come from?

What's Next?

Part 4: Locks & ARM Resource Structure - Deep dive into how Azure resources are structured (resource providers, types, properties) and why it matters for Policy and RBAC.


End of Part 3

Released under the MIT License.