Azure Governance Design for AZ-305: Management Groups, Subscriptions, Tagging, Azure Policy and Identity Governance
Azure governance design is the set of structures and controls that keep an Azure estate organised, compliant and safely accessed: a management group, subscription and resource group hierarchy with a tagging strategy, Azure Policy and Defender for Cloud for compliance, and Microsoft Entra ID Governance for privileged and everyday access. AZ-305 asks you to recommend the option that meets every stated requirement at the right scope with the least administrative effort, often by telling apart near-twin features such as policy exclusions and exemptions.
On this page10 sections
- How do governance scopes and inheritance work in Azure?
- How should you design a management group hierarchy?
- When do you need a separate subscription instead of a resource group?
- How should you design and enforce a tagging strategy?
- Which Azure Policy effect should you choose?
- How do policy definitions, assignments, exemptions and remediation fit together?
- How do you manage regulatory compliance, data residency and in-guest settings?
- How do you protect governed resources and share approved templates?
- How does Privileged Identity Management govern privileged roles?
- How do access reviews, entitlement management and lifecycle workflows work together?
- Recommend a management group hierarchy based on Cloud Adoption Framework archetypes, and explain how roles and policies are inherited and change when a subscription moves
- Decide when a workload needs its own subscription rather than a resource group, and design resource groups by lifecycle and region
- Design a tagging strategy that enforces tags with Azure Policy and reports costs with Cost Management tag inheritance
- Choose the right Azure Policy effect, definition location, exemption type and remediation approach for a compliance requirement
- Recommend compliance and data residency solutions with Defender for Cloud, the Service Trust Portal, location policies and machine configuration
- Protect governed resources with locks, deployment stacks and template specs instead of the retiring Azure Blueprints
- Recommend identity governance with Privileged Identity Management, access reviews, entitlement management and lifecycle workflows
How do governance scopes and inheritance work in Azure?
Azure governance is applied at four nested scopes — management group, subscription, resource group and resource — and Azure RBAC role assignments and Azure Policy assignments made at a scope are inherited by everything below it. Designing governance for AZ-305 is mostly choosing the highest scope where a rule is true for everything beneath it, so it is assigned once and automatically covers resources and subscriptions added later.
| Scope | What it is for | What it holds |
|---|---|---|
| Management group | Applying policy and access to many subscriptions at once | Subscriptions and other management groups |
| Subscription | Billing, quota, scale and administrative boundary | Resource groups |
| Resource group | Resources that share one lifecycle | Resources (each resource belongs to exactly one group) |
| Resource | The individual service instance | Settings, tags, locks |
Inheritance has three consequences the exam relies on:
- Assign once, high enough. A policy or role assigned at a management group reaches every current and future subscription under it. Scripting the same assignment into each subscription works today but misses the next subscription.
- Policy is not RBAC. A deny policy blocks a request no matter who sends it, subscription Owners included. Roles grant permissions; policies constrain what any permission can create or change.
- Tags are the exception. Tags are not inherited by the resources below a subscription or resource group (see the tagging section).
Authentication and authorization design (Conditional Access, RBAC role choice, managed identities, Key Vault) belongs to the sibling lesson on identity, and monitoring design to the logging and monitoring lesson. This lesson covers the governance skill: structure and tagging, compliance, and identity governance.
How should you design a management group hierarchy?
Design management groups around the policies and access that differ between groups of workloads (their archetypes), not around environments, departments or individual applications. The Cloud Adoption Framework's Azure landing zone hierarchy is the reference design Microsoft expects you to recognise:
- Intermediate root (for example "Contoso") directly under the tenant root group, holding policies that apply to the whole estate. Keeping your own root below the tenant root avoids assigning to the tenant root itself.
- Platform, with child groups for shared services such as identity, management (logging) and connectivity (hub networking).
- Landing zones, with archetype children such as Corp (internal, privately connected workloads) and Online (internet-facing workloads, for example with web application firewall requirements).
- Sandbox for experimentation: relaxed policies, no connection to corporate networks, isolated from production governance.
- Decommissioned for subscriptions being retired.
Environments are subscriptions, not management groups. An application's development, test and production subscriptions all sit in the same archetype group (for example Corp), so the policy set is assigned once per archetype and a workload never has to be re-parented when it is promoted. Splitting the hierarchy by environment as well as by archetype duplicates policy assignments, and adding groups that carry no distinct policy only adds administration.
Management group facts
- Each management group and each subscription has exactly one parent.
- A hierarchy supports up to six levels of depth, not counting the root level or the subscription level.
- Every tenant has one tenant root group; it cannot be moved or deleted.
- By default, new subscriptions land directly under the tenant root group. In the hierarchy settings you can change the default management group so new subscriptions arrive in a governed group (such as Sandbox) and inherit its policies from creation. You can also require authorization before anyone creates new management groups.
Moving a subscription between management groups
Moving a subscription needs write rights in three places: management group write and role assignment write on the subscription itself (Owner is the built-in example — Contributor cannot write role assignments), plus management group write on both the current parent and the new parent (Owner, Contributor or Management Group Contributor). After the move, the subscription stops inheriting everything assigned at the old parent and starts inheriting the new parent's roles and policies; assignments made directly on the subscription are kept.
When do you need a separate subscription instead of a resource group?
Create a separate subscription when a workload needs its own billing destination, its own quotas and limits, or its own administrative and scale boundary; use resource groups for everything a single subscription can already separate.
| Requirement | Resource group is enough | Needs its own subscription |
|---|---|---|
| Limit operators to their own resources | Yes — assign the role at the group | |
| Deploy and delete resources together | Yes — that is what a group is for | |
| Report spend separately | Yes — cost analysis can filter by group or tag | |
| Invoice costs to a different billing profile or invoice section | Yes — billing attaches whole subscriptions | |
| Keep a separate vCPU or other quota | Yes — quotas are per subscription (per region) | |
| An administrator boundary covering the whole workload estate, still under the parent's policies | Yes — place the subscription under the parent's management group |
Billing structures hold subscriptions: in a Microsoft Customer Agreement (MCA) a subscription is billed to one invoice section within a billing profile; in an Enterprise Agreement subscriptions belong to enrollment accounts. The general rule: when a unit needs separate billing or separate administration, give it its own subscription and attach that subscription to the right billing scope; when it must also keep central governance, place the subscription below the management group where those policies are assigned. Inheritance flows only downward, so a sibling group receives nothing, and a separate Microsoft Entra tenant sits outside the hierarchy altogether.
Designing resource groups
- Group by shared lifecycle. Resources deployed, updated and deleted together (an app, its database and its storage for one environment) share a group. Shared infrastructure used by many teams, such as a hub virtual network, lives in its own group so deleting an application never touches it.
- A resource belongs to one resource group, and resources in a group can be in different regions.
- The resource group's location stores its resources' metadata. If that region is unavailable, the resources keep running but you cannot update them through Azure Resource Manager — no scaling or reconfiguration. Place each resource group in the same region as its resources.
- Grouping by resource type or by region ignores lifecycle and is not a recommended pattern.
How should you design and enforce a tagging strategy?
A tagging strategy defines a small set of required tags (such as CostCenter, Owner, Environment, Application) and enforces them with Azure Policy, because tags on a subscription or resource group are not inherited by the resources inside it. A tag on a resource group does not appear on its resources' usage records unless something copies it down.
Tag rules worth knowing
- A resource, resource group or subscription holds up to 50 tag name/value pairs; not every resource type supports tags.
- Tag names are case-insensitive for operations; tag values are case-sensitive. Some characters (such as
<,>,%,&,\,?,/) are not allowed in names. - Tags are metadata in plain text — never put secrets or personal data in them.
Built-in tag policies
| Built-in policy | Effect | Use when |
|---|---|---|
| Require a tag (or a tag and its value) on resources / on resource groups | Deny | An untagged deployment must be rejected |
| Inherit a tag from the resource group (or subscription) if missing | Modify | Resources must carry their parent's tag but deployments must never fail because of tags |
| Add or replace a tag on resources / resource groups | Modify | A fixed tag value must be set or corrected |
The modify policies act on new and updated resources; existing resources are fixed with a remediation task. A common combined design is to deny resource groups that lack the required tags, then let an inherit-from-resource-group modify policy copy those tags onto every resource, with remediation for what is already deployed. That rejects only badly formed resource groups while application deployments never fail.
Cost Management tag inheritance is a different feature
Cost Management tag inheritance applies billing, subscription and resource group tags to usage records only — it never changes the resources. It is available for Enterprise Agreement, Microsoft Customer Agreement and Microsoft Partner Agreement accounts, is enabled in Cost Management (on the EA enrollment or MCA billing profile), and applies to the current month's usage (records update within about a day).
| Inherit-tag Azure Policy | Cost Management tag inheritance | |
|---|---|---|
| Changes the resource | Yes (writes the tag) | No |
| Visible to scripts, automation and Resource Graph | Yes | No — only in cost data |
| Fixes existing resources | With a remediation task | Applies to the current month's usage records |
| Best for | Operational tags automation reads | Cost reporting where resources must not change |
When a resource already has the same tag with its own value, the resource's tag wins by default; a setting in tag inheritance lets the inherited subscription or resource group tag override it instead. Cost allocation rules are another separate feature: they redistribute the cost of shared subscriptions, groups or tags to other targets rather than tagging usage.
Which Azure Policy effect should you choose?
Choose the policy effect by what must happen to a non-compliant request: reject it (deny), only report it (audit), report a missing related resource (auditIfNotExists), create that related resource (deployIfNotExists), change the resource's properties or tags (modify, append), or block a delete (denyAction).
| Effect | What it does | Typical design use |
|---|---|---|
| deny | Fails the create or update request | No public IPs in Corp landing zones; allowed locations; required tags |
| audit | Allows the request, marks it non-compliant | Visibility before enforcement |
| auditIfNotExists | Reports when a related resource (such as a diagnostic setting or extension) is missing | Report-only checks on related configuration |
| deployIfNotExists | Deploys a template to create the missing related resource | Diagnostic settings, agents, backup configuration added automatically |
| modify | Adds, replaces or removes tags and supported properties during create/update; remediable | Inherit tags; set a property instead of rejecting |
| append | Adds fields to a request during create/update; cannot remediate existing resources | Older pattern largely replaced by modify |
| denyAction | Blocks a specific action — today the DELETE action — on matching resources | Protect tagged critical resources from deletion |
- deny vs denyAction: deny blocks creating or changing a non-compliant resource; denyAction blocks deleting resources that already exist. Neither cares about the caller's role.
- denyAction and resource group deletion: by default, deleting the parent resource group still deletes the protected resource. Setting
cascadeBehaviorswithresourceGrouptodenyin the policy rule makes the resource group deletion fail too. - deployIfNotExists vs auditIfNotExists: both look for the same related resource; only deployIfNotExists fixes it. Choose modify when the change is a property or tag on the resource itself, deployIfNotExists when it is a separate child or extension resource.
How do policy definitions, assignments, exemptions and remediation fit together?
A policy definition is saved at a management group or subscription and can only be assigned at that scope or below it; an assignment applies it, an initiative bundles definitions, and exclusions and exemptions carve out exceptions in two different ways.
- Definition location matters. A custom definition saved in one subscription cannot be assigned in its sibling subscriptions. Save shared definitions at the management group that contains every target, then assign there once so subscriptions added later are covered.
- Initiatives (policy set definitions) group related policies — for example a regulatory baseline — so they are assigned, parameterised and reported together.
| Exclusion (notScopes) | Exemption | |
|---|---|---|
| Where set | On the assignment | A separate object on the exempted scope or resource |
| Compliance reporting | Excluded scopes are not evaluated or reported | Still reported, with status Exempt |
| Reason recorded | No | Yes — category Waiver (non-compliance accepted for now) or Mitigated (the intent is met another way), plus a description |
| Ends automatically | No | Yes — optional expiration date |
| Granularity | Whole assignment | Whole assignment or selected policies in an initiative |
When a scope must be allowed out of compliance for a limited time and the break must stay visible, an exemption with the Waiver category and an expiration date fits: it records why, can target only some of an initiative's policies, and ends by itself. Mitigated is for a control met by a different means, which is not the same as "not yet compliant".
Remediating existing resources
Assignments with modify or deployIfNotExists fix new and updated resources automatically, but resources that existed before the assignment stay non-compliant until a remediation task runs against them. Both effects act through the assignment's managed identity, which needs the roles listed in the definition (its roleDefinitionIds). The Azure portal grants those roles when it creates the assignment; Azure CLI, PowerShell and templates do not, so you must create the role assignments yourself — without them the automatic deployments fail as well as remediation.
Compliance is evaluated when an assignment is created or changed, when resources are created or updated, on a regular cycle (about every 24 hours), and on demand. An on-demand evaluation scan only refreshes compliance results — it never changes a resource.
How do you manage regulatory compliance, data residency and in-guest settings?
Use the regulatory compliance dashboard in Microsoft Defender for Cloud to measure your own Azure resources against a standard, the Microsoft Service Trust Portal for Microsoft's own audit reports, Azure Policy location policies for data residency, and Azure Policy machine configuration for settings inside the operating system.
Defender for Cloud vs Service Trust Portal
| Defender for Cloud regulatory compliance | Microsoft Service Trust Portal | |
|---|---|---|
| Answers | How do our resources meet the standard's controls? | Is Microsoft's platform audited? |
| Content | Continuous assessment per control, linked to failing resources and recommendations | Independent audit reports and certificates (SOC, ISO/IEC, PCI DSS attestation and others) |
| Scope | Your subscriptions (and connected clouds) | Microsoft's cloud services |
The dashboard starts with the Microsoft cloud security benchmark; you add further standards (for example PCI DSS or ISO 27001) and can add your own Azure Policy initiative as a custom standard so internal controls are tracked in the same dashboard. An auditor usually needs both views: Microsoft's audit evidence and your own resources' posture. Azure Advisor recommendations are not mapped to regulatory controls.
Data residency
- The built-in Allowed locations policy restricts the regions resources can be deployed to. It does not evaluate resource groups, and it excludes resources deployed to the
globallocation (such as Azure Front Door, Traffic Manager and DNS zones). - Assign Allowed locations for resource groups as well, because a resource group's location is where its resources' metadata is stored.
- Global services are not stopped by any location list; govern them with Not allowed resource types (or an allowed-types list) if they need approval.
- Assign both location policies at the management group so every current and future subscription inherits them. A management group itself has no region.
Settings inside the operating system: machine configuration
Ordinary policy rules evaluate Azure Resource Manager properties, so they cannot see password complexity, TLS settings or installed software inside a server. Azure Policy machine configuration (formerly guest configuration) audits — and, with apply modes, can configure — settings inside Windows and Linux on Azure VMs and Azure Arc-enabled servers, reporting into Azure Policy compliance. Its modes are audit, apply and monitor, and apply and auto-correct.
- Azure VMs need the machine configuration extension and a system-assigned managed identity; the built-in prerequisites initiative deploys both.
- Arc-enabled servers already have machine configuration built into the Azure Connected Machine agent.
- Azure Automation State Configuration is retiring (30 September 2027) and is not a choice for new designs; Change Tracking and Inventory records changes rather than evaluating a baseline.
How does Privileged Identity Management govern privileged roles?
Microsoft Entra Privileged Identity Management (PIM) replaces standing administrator access with eligible assignments that a user activates just in time, under rules you set per role: maximum duration, MFA or an authentication context, justification and approval, all recorded for audit. PIM covers Microsoft Entra roles, Azure resource roles (at management group, subscription, resource group or resource scope) and group membership or ownership (PIM for Groups). It needs Microsoft Entra ID P2 or Microsoft Entra ID Governance licences.
| Eligible assignment | Active assignment | |
|---|---|---|
| Permissions held | None until the user activates | Immediately, for as long as it lasts |
| Activation rules apply | Yes | No — it is standing access |
| Use for | Just-in-time admin access | Service accounts or rare cases needing constant access |
Role settings
- Activation: maximum activation duration (1 to 24 hours), require Azure MFA or a Microsoft Entra Conditional Access authentication context, justification, ticket information, approval by named approvers.
- Authentication context lets one role's activation demand a specific authentication strength (such as phishing-resistant MFA) through a Conditional Access policy that targets that context, without changing any other sign-in or role.
- Assignment: allow permanent eligible or active assignments, or make them expire after a set period (for example six months), plus MFA and justification on active assignment. Eligible-assignment expiry ends the eligibility itself; maximum activation duration only limits each activation.
PIM for Groups
When several roles must be activated together — Azure roles across many subscriptions plus a Microsoft Entra role — assign all of them to one group and make users eligible members of the group through PIM for Groups. One activation and one approval then grant every role, and eligibility is managed in one place. Microsoft Entra roles can only be assigned to a role-assignable group, and role-assignable groups cannot be dynamic. Assigning Azure roles at a management group already covers its subscriptions, but it does not bundle activation with an Entra role.
How do access reviews, entitlement management and lifecycle workflows work together?
Microsoft Entra ID Governance covers the rest of the identity lifecycle: access reviews periodically recertify who still needs access, entitlement management grants bundled access through requestable or automatic access packages, and lifecycle workflows automate joiner, mover and leaver tasks from HR dates.
| Need | Feature |
|---|---|
| Periodically confirm existing access and remove what is denied | Access reviews |
| Let users (including partners) request a bundle of access with approval and expiry | Entitlement management access packages |
| Grant and remove a bundle automatically as user attributes change | Access package automatic assignment policy |
| Run tasks on hire, move or leave dates | Lifecycle workflows |
| Just-in-time admin roles | Privileged Identity Management |
Access reviews
- What can be reviewed: group and Teams membership, application access, access package assignments, and — created through PIM — Azure resource roles and Microsoft Entra roles, covering both eligible and active assignments.
- Reviewers: group owners, selected users, the users' managers, or users reviewing themselves. With managers as reviewers, add fallback reviewers for users who have no manager.
- Settings: recurrence (weekly to annual), auto apply results, and If reviewers don't respond (no change, remove access, approve access, or take recommendations).
- Denied guests: only when the review's scope is limited to guest users can you choose an action for denied guests: remove the membership from the resource, or block sign-in for 30 days, then remove the user from the tenant — the grace period lets mistakes be reversed.
Entitlement management
- An access package bundles groups and teams, applications and SharePoint sites from a catalog, granted through policies.
- Policies for users in your directory, or for users not in your directory: specific connected organizations, all configured connected organizations, or All users (all connected organizations plus any new external users) — with All users, organizations of approved new requesters are added as proposed connected organizations, so domains need not be known in advance.
- Policies set approvers (including multi-stage approval, such as a partner's own sponsor followed by an internal one), expiry and reviews. When an external user brought in by entitlement management loses their last assignment, their account can be blocked from sign-in and removed from the directory after a set period (30 days by default).
- Incompatible access packages (or groups) enforce separation of duties at request time: a user holding one cannot request the other.
- Automatic assignment policies assign an access package to internal users who match an attribute rule (for example department equals Sales) and remove it when they stop matching — no requests or approvals.
Lifecycle workflows
Lifecycle workflows (part of Microsoft Entra ID Governance) run built-in tasks on a schedule relative to employeeHireDate (joiner, including pre-hire) or employeeLeaveDateTime (leaver), or on attribute changes (mover). Joiner tasks include generating a Temporary Access Pass and sending it to the manager, so a new hire can register passwordless sign-in on day one, and sending a welcome email; leaver tasks include disabling the account, removing it from all groups and Teams, removing licences, and emailing the manager. HR provisioning populates the date attributes, so no custom scripts are needed.
Tip. Questions are design scenarios: an organisation describes its subscriptions, billing, teams or partners and two or three requirements — apply to future subscriptions, minimize administrative effort, never fail deployments, do not change resources, stay in compliance reporting, end automatically, block even subscription Owners, approval and expiry — and you recommend the structure, policy effect, scope or governance feature that meets all of them. The wrong options are usually real Azure features that would work in a similar scenario but miss one stated requirement, such as the scope, whether it changes resources, whether it ends on its own, or who it applies to. Expect multi-response items that ask for two settings or actions that together complete a solution.
- Assign policies and roles once at the highest management group where they are true; subscriptions added later inherit them.
- Management groups follow policy archetypes (Platform, Corp, Online, Sandbox); environments are subscriptions, not management groups.
- Change the hierarchy's default management group so new subscriptions start under governance instead of the tenant root.
- Use a separate subscription for a separate invoice, quota or admin boundary; resource groups handle access, lifecycle and reporting.
- Tags are not inherited: use a modify inherit-tag policy plus remediation to tag resources, or Cost Management tag inheritance to change only cost data.
- Deny rejects for everyone, deployIfNotExists creates missing related resources, modify changes tags or properties, denyAction blocks deletes (set cascadeBehaviors to cover resource group deletion).
- Exemptions keep reporting and can expire (Waiver or Mitigated); exclusions silently remove a scope. Existing resources need a remediation task and an identity with the right roles.
- Allowed locations skips resource groups and global resources: add Allowed locations for resource groups and a resource-type policy for global services.
- CanNotDelete locks stop accidents; deployment stacks at a parent scope stop subscription Owners; Blueprints retires 31 January 2027.
- PIM eligible assignments give just-in-time access; access reviews recertify; access packages grant bundles with expiry; lifecycle workflows act on HR dates.
Frequently asked questions
Should Azure management groups be organised by environment?
No. Microsoft's Cloud Adoption Framework organises management groups by the policies and access that differ between workloads — archetypes such as Corp (internal) and Online (internet-facing) under a Landing zones group, plus Platform, Sandbox and Decommissioned groups. Development, test and production are separate subscriptions placed in the same archetype group, so each policy set is assigned once and a workload never has to move between management groups when it is promoted.
Are Azure tags inherited from resource groups and subscriptions?
No. A tag set on a subscription or resource group is not applied to the resources inside it. To copy the tag onto resources, assign the built-in Azure Policy that inherits a tag from the resource group or subscription (modify effect) and run a remediation task for existing resources. If you only need cost reports grouped by the parent's tag without changing resources, enable tag inheritance in Cost Management instead, which applies the tags to usage records.
What is the difference between an Azure Policy exclusion and an exemption?
An exclusion (notScopes) is set on the policy assignment and removes a scope from evaluation entirely, so it disappears from compliance reporting with no reason recorded. An exemption is a separate object on the exempted scope: the resources still appear in compliance as Exempt, it records a category — Waiver for accepted temporary non-compliance or Mitigated when the intent is met another way — and it can have an expiration date so the relief ends automatically.
Why does a deployIfNotExists policy not fix resources that already existed?
deployIfNotExists and modify policies act automatically only on resources created or updated after the assignment. Resources that existed before stay non-compliant until you create a remediation task for the assignment. Both the automatic deployments and remediation run as the assignment's managed identity, which needs the roles named in the policy definition; the Azure portal grants them, but assignments created with Azure CLI, PowerShell or templates need the role assignments added separately.
Does the Allowed locations policy cover resource groups and global services?
No. The built-in Allowed locations policy evaluates resources only: it skips resource groups and resources deployed to the global location, such as Azure Front Door and Traffic Manager. For data residency, also assign the built-in Allowed locations for resource groups policy, because a resource group's location stores its resources' metadata, and use the Not allowed resource types policy if global services must be blocked until approved.
What replaces Azure Blueprints?
Azure Blueprints is deprecated and retires on 31 January 2027. Microsoft recommends template specs to store and share versioned ARM or Bicep templates under Azure RBAC, and deployment stacks to deploy and manage a group of resources with deny settings (denyDelete or denyWriteAndDelete, with excluded principals such as a pipeline identity), alongside Azure Policy for rules. New designs should not use Blueprints.
What is the difference between eligible and active assignments in PIM?
In Microsoft Entra Privileged Identity Management, an eligible assignment gives a user no permissions until they activate the role, and each activation follows the role's settings — maximum duration of up to 24 hours, MFA or a Conditional Access authentication context, justification and optional approval. An active assignment grants the permissions immediately as standing access. Both kinds can be set to expire after a period, such as six months.
When should you use an access review instead of an access package?
Use an access review to recertify access people already have — group membership, app access, access package assignments or Azure and Entra roles through PIM — on a schedule, with results applied automatically. Use an entitlement management access package to grant access in the first place: users request a bundle of groups, apps and sites under a policy with approval and expiry, or receive it automatically through an attribute-based automatic assignment policy. The two are often combined.
Source
This lesson covers the "Design identity, governance, and monitoring solutions" domain of the official AZ-305 exam guide. Vendors revise their guides — check the source for the current version.
- Microsoft AZ-305 study guide — Microsoft Learn
Sign up free to mark lessons complete, bookmark topics and track your exam readiness.