Skip to content

Azure RBAC by Management Group — Tier Mapping

Part of Privileged Access, PIM, and What Belongs in CI — see that page for the EAM/NIST/CAF/security-levels model this mapping applies.

Management group inheritance

Azure RBAC inherits downward only. A role granted at a management group scope is granted at every subscription beneath it, now and for any subscription added later.

  • Grant at the highest scope only when the role is genuinely needed at every descendant — not because it's one Terraform resource instead of five.
  • Watch for role assignment sprawl at root — assignments accumulating at the top of the hierarchy over time, because it was the path of least resistance for whoever wrote the code. This is one of the most common findings in real tenant access reviews.
  • Breadth alone does not determine Tier — see below. But breadth does determine blast radius if something goes wrong, which is why sprawl at root is still worth watching even for Tier 1 roles.
graph TD
    ROOT["Tenant Root Group<br/>(highest blast radius)"]
    GRIN["mg-grinntec"]
    PLAT["mg-platform"]
    LZ["mg-landingzones"]
    SUB1["Subscription A"]
    SUB2["Subscription B"]

    ROOT --> GRIN
    GRIN --> PLAT
    GRIN --> LZ
    PLAT --> SUB1
    LZ --> SUB2

    ROOT -.->|"role here reaches\nevery box below"| GRIN

Why tenant root / mg-grinntec are Tier 0 — and mg-platform / mg-landingzones are not

This is the part worth being precise about, because "biggest blast radius" and "Control plane" are easy to conflate and aren't the same thing.

Owner / User Access Administrator at the Tenant Root Group or mg-grinntec is Control plane per EAM, for a specific structural reason: it can modify RBAC and Policy for the entire tenant, including granting itself access to anything built in the future, anywhere in the tree. That's self-referential control over the access-control mechanism itself — exactly EAM's definition of Control plane, independent of what happens to be deployed under it today.

Owner / UAA at mg-platform cannot do that. It's bounded to its own subtree — it can't touch mg-grinntec's policy, can't reach mg-landingzones, can't grant itself access outside mg-platform. Its children (mg-connectivity, mg-management) are Management plane by EAM's own examples (hub networking, monitoring/backup) — administering other resources, not the identity system. So mg-platform is Tier 1, regardless of how many platform subscriptions it happens to cover.

Owner / UAA at mg-landingzones is Data/Workload plane per EAM, even as one aggregate grant covering every current and future workload subscription. Breadth doesn't promote it — EAM's own examples put "application subscriptions" squarely in Data/Workload plane regardless of count.

The one nuance NIST adds, without changing the tier: mg-management hosts central logging/monitoring. Owner there could disable diagnostic settings tenant-wide — a genuine AC-6(1) concern (access to a security-relevant function: audit configuration). That justifies stricter Tier 1 handling — mandatory PIM approval, activation alerting — not promotion to Tier 0. This project already requires PIM approval on every grant it manages regardless of level, so this is already covered, not a gap.

mg-identity would become genuinely Control plane — EAM explicitly lists domain controllers and Entra Connect/AD FS as Control plane — if and when it hosts that infrastructure. Today it's reserved and empty, so nothing is managed there at any level. If it's ever populated, mg-platform's Tier 1 grant needs an explicit carve-out at that point, since RBAC inheritance means mg-platform's Owner/UAA would otherwise silently reach the newly-Control-plane mg-identity underneath it.

Scope Tier EAM plane Why
Tenant Root Group 0 Control Can reconfigure RBAC/Policy tenant-wide, including self-granting access to anything built later
mg-grinntec 0 Control Same property, scoped to the managed-tenant boundary
mg-platform 1 Management Bounded to its own subtree; children are monitoring/networking, not identity infrastructure
mg-landingzones 1 Data/Workload Business applications and data, regardless of breadth
mg-identity (unmanaged — reserved) Would be Control, if populated No AD DS/Entra Connect deployed yet — nothing to protect

Azure RBAC by management group layer

Creating any role assignment — including Reader — at tenant root or mg-grinntec requires Owner/UAA at that scope to execute. Only azure-priv-tier-0's human-applied identity holds that; azure-platform-identity's CI-applied SP has no roleAssignments/write there at all. So Reader at these two scopes is Tier 0 by mechanism — the one exception to "Reader is always Tier 2" — for the same reason Global Reader is an exception among directory roles (see Entra directory roles).

MG layer Role Tier EAM plane Project Apply method
Tenant Root Group Owner / UAA 0 Control azure-priv-tier-0 CLI, human apply
Reader 0 (mechanism) / 2 (capability) Control (mechanism) azure-priv-tier-0 CLI, human apply
mg-grinntec Owner / UAA 0 Control azure-priv-tier-0 CLI, human apply
Reader 0 (mechanism) / 2 (capability) Control (mechanism) azure-priv-tier-0 CLI, human apply
Contributor 1 (no role-assignment rights) Management azure-platform-identity CI, auto-apply
Cost Management Reader 2 Management azure-platform-identity CI, auto-apply
mg-platform / mg-connectivity Owner / UAA / Contributor / Reader 1 Management azure-platform-identity CI, auto-apply
mg-management Owner / UAA / Contributor / Reader 1 (stricter — AC-6(1), audit function access) Management azure-platform-identity CI, auto-apply
mg-identity (reserved, unused) Would be Control if populated
mg-landingzones / mg-online / mg-sandboxes Owner / UAA / Contributor / Reader 1 / 2 Data/Workload azure-platform-identity CI, auto-apply
mg-quarantine / mg-decommissioned Reader only 2 Data/Workload azure-platform-identity CI, auto-apply