Azure Subscriptions, Policy, Locks and Governance (AZ-104)
Azure governance is how an administrator keeps a growing Azure estate consistent, compliant and affordable. It rests on a four-level hierarchy — management group, subscription, resource group and resource — where settings applied higher up flow downward. You organize subscriptions under management groups, use Azure Policy to define what configuration is allowed (for example permitted regions or a required tag), and apply resource locks to prevent accidental deletion. Policy answers "what is allowed," while role-based access control answers "who can act" — a distinction the AZ-104 exam tests often. Tags label resources for cost tracking and can be enforced with Policy, and Microsoft Cost Management and Azure Advisor give you cost analysis, budgets, alerts and savings recommendations. In this lesson you will learn to configure management groups, manage subscriptions and resource groups, create and assign policies and initiatives, choose the right policy effect, scope assignments with exclusions and exemptions, remediate existing resources, lock critical resources, enforce tags and manage costs.
On this page12 sections
- The Azure management hierarchy and management groups
- Managing and moving subscriptions
- Managing resource groups and moving resources
- Azure Policy: definitions, initiatives, and assignments
- Narrowing an assignment: exclusions versus exemptions
- Policy effects: audit, deny, append, and more
- Azure Policy versus RBAC: what versus who
- Remediating existing non-compliant resources
- Resource locks: CanNotDelete and ReadOnly
- Applying and enforcing tags
- Managing costs: budgets, alerts, and Azure Advisor
- A governance scenario
- Organize subscriptions under management groups, describe the four-level hierarchy, and predict what a subscription move changes
- Manage subscriptions: quotas, billing ownership transfers versus directory changes, and cancellation
- Move resources between resource groups and subscriptions, and explain what changes and what blocks a move
- Create and assign Azure Policy definitions and initiatives with parameters, enforcement mode, exclusions and exemptions
- Choose the correct policy effect, including AuditIfNotExists and DenyAction, and remediate existing resources with a correctly permissioned managed identity
- Distinguish Azure Policy from RBAC and combine them to meet a requirement
- Configure resource locks and explain their scope, who can manage them, and their side effects
- Apply and enforce tags, and control spending with budgets, alerts, action groups, spending limits and Azure Advisor
The Azure management hierarchy and management groups
Azure organizes everything into a four-level hierarchy, and understanding it is the foundation of governance. From the top down the levels are: management group, subscription, resource group, and resource. A resource (such as a virtual machine or storage account) lives in exactly one resource group; a resource group lives in one subscription; and a subscription sits under a management group. Governance settings — Azure Policy assignments, role assignments, and resource locks — flow downward and are inherited by everything beneath the scope where you apply them. (Locks are the exception at the top: they can be set on a subscription, resource group or resource, but not on a management group.)
Management groups sit above subscriptions and let you apply governance to many subscriptions at once. You might create a management group for "Production" and another for "Development," then assign a policy to each so every subscription inside — including subscriptions added later — inherits it. Each Microsoft Entra tenant has a single top-level root management group, and you can build a tree up to six levels deep beneath it (not counting the root or the subscription level). A subscription or management group has exactly one parent, and all management groups and subscriptions belong to one Entra tenant. Assigning at a management group is the most efficient way to govern an entire organization from one place, rather than repeating the same assignment in every subscription.
Moving a subscription between management groups changes what it inherits. Because there is only one parent, the new parent's policy and role assignments start to apply and the old parent's stop applying. A stricter Deny policy inherited this way does not delete or alter resources that already exist — they keep running and are reported as non-compliant — but new and updated requests are evaluated against it. To move a subscription you need:
- Owner on the subscription being moved;
- management group write permission (for example Management Group Contributor) on the target parent management group;
- the same write permission on the current parent management group.
When the target or current parent is the root management group, the permission requirement for that side doesn't apply. The same parent-side permissions apply when you move a child management group.
Managing and moving subscriptions
A subscription is a billing boundary, a quota boundary and a scope for access and policy. Resources you create are billed to their subscription, and administrators commonly use separate subscriptions to isolate environments — for instance one for production and another for development — so costs, quotas and governance stay cleanly divided. You manage subscriptions from the Subscriptions blade, where you can view spending, set role assignments, and see the policies that apply.
Quotas are per subscription, per region. Limits such as total regional vCPUs and vCPUs per VM family are counted for the whole subscription in one region; resource groups and management groups do not carry quotas. When a deployment fails because it would exceed a quota, request an increase for that subscription and region from the Quotas page (or a support request) — the quota is consumed per region, so only an increase in that region helps.
Two subscription operations are easy to confuse:
| Operation | What changes | What happens to access |
|---|---|---|
| Transfer billing ownership | Who receives and pays the invoice | Within the same directory, resources and role assignments are untouched |
| Change the subscription's Microsoft Entra directory | Which tenant the subscription trusts for identity | All Azure role assignments and custom roles are permanently deleted; managed identities stop working |
After a directory change you must re-create role assignments for identities in the new tenant, and re-create managed identities: disable and re-enable a system-assigned identity, or delete, re-create and re-attach a user-assigned one, then grant their roles again. Key Vault tenant IDs and access policies also need updating. Resources, resource groups, tags and data such as Key Vault secrets are not affected. (A billing transfer to an account in a different tenant can bring a directory change with it, with the same effect on access.)
Cancelling a subscription is not blocked by resource locks. Azure deactivates the subscription's resources rather than deleting them at once, and they are deleted only after a waiting period — locks protect against deleting individual resources, not against ending the subscription that holds them.
Managing resource groups and moving resources
A resource group is a logical container for resources that share a lifecycle: you deploy, manage, tag, lock and delete them together. A resource belongs to exactly one resource group, and deleting a resource group deletes every resource in it. The group has a location of its own (where its metadata is stored), but the resources inside it can be in other regions.
You can move resources to another resource group or another subscription. The rules the exam relies on:
- The region does not change. A move changes the container, not where the resource runs; moving to another region is a different process (such as Azure Resource Mover or redeploying).
- The resource ID changes, because it includes the subscription and resource group, so scripts and templates that reference the old ID must be updated.
- Both resource groups are locked during the move — write and delete operations on the source and target groups are blocked until it finishes, but the resources themselves keep running.
- Not every resource type can be moved, and some can move between resource groups but not between subscriptions; check the move-support list first.
- For a move to another subscription, the destination subscription must be registered for the resource provider, and both subscriptions must be in the same Microsoft Entra tenant.
- Dependent resources. For a move to another subscription, a resource and its dependent resources (for example a VM, its disks and its network interface) must sit in the same resource group and be moved together — if they are spread across groups, consolidate them first. For a move between resource groups in the same subscription, the dependents must either already be in the destination group or be included in the same move request.
- A ReadOnly lock on the source or destination resource group or subscription blocks the move.
- Role assignments made directly on the resource are not moved and become orphaned; re-create them after the move. Assignments inherited from the destination scope apply automatically.
Keep the distinction clear: moving a subscription between management groups changes which governance it inherits, whereas moving a resource changes which resource group and subscription contain and bill it.
Azure Policy: definitions, initiatives, and assignments
Azure Policy enforces organizational standards by evaluating your resources against rules and reporting or blocking configurations that break them. Working with Policy involves three parts. A policy definition is a single rule — for example "resources may only be created in approved regions" (the built-in Allowed locations policy) or "every resource must carry a given tag." An initiative (also called a policy set definition) is a group of policy definitions bundled toward a goal, such as a security baseline containing dozens of related policies; you assign and track the group as one unit. An assignment applies a definition or initiative at a scope — a management group, subscription or resource group — and everything beneath that scope is evaluated.
Where a custom definition is saved limits where it can be assigned. You save a custom definition or initiative at a management group or a subscription, and it can be assigned only at that scope or below it. A definition saved in one subscription cannot be assigned to a sibling subscription; to reuse it across many subscriptions, save it at a management group above them. Built-in definitions are available everywhere.
Parameters make one definition reusable. Allowed locations takes a list of regions as a parameter, so you can assign the same definition several times at different scopes — for example West Europe only for one subscription and East US plus West US for another — rather than writing a new definition per region set. Assignments are cumulative: a resource must satisfy every assignment that reaches it.
Each assignment also has an enforcement mode. The default, Default (Enabled), enforces the effect. DoNotEnforce evaluates and reports compliance but does not apply the effect — a Deny assignment does not block anything — which lets you test the impact of a rule on real resources and then switch the same assignment to Default, without creating a new one. After assignment, Policy evaluates existing resources and every new create or update request, producing a compliance view of which resources pass and which fail.
Narrowing an assignment: exclusions versus exemptions
An exclusion removes a scope from an assignment so it is not evaluated at all; an exemption keeps the scope evaluated but records that it is excused from the rule. Both narrow an assignment, but they answer different needs.
| Exclusion (notScopes) | Exemption | |
|---|---|---|
| Where it is set | On the assignment itself | A separate object on a child scope or resource |
| Evaluation | Excluded scope is not evaluated and does not appear in compliance | Resource still appears in compliance with the state Exempt |
| Reason recorded | None | Category Waiver (accepted non-compliance) or Mitigated (requirement met another way), plus a description |
| Expiry | None — stays until you edit the assignment | Optional expiresOn date |
| Granularity in an initiative | Whole assignment | Can name specific definitions with policyDefinitionReferenceId |
Use an exclusion when a scope simply should never be governed by that assignment, such as a sandbox resource group. Exclusions can be added or changed after the assignment is created by editing its notScopes. Use an exemption when the exception must stay visible and accountable: choose Mitigated when a compensating control already meets the intent, and Waiver when the business accepts the non-compliance for now. When an exemption reaches its expiresOn date it is not deleted — the object is kept for the record — but it is no longer honored, so the resource is evaluated normally again. For an initiative assignment, list the policyDefinitionReferenceId values to exempt a resource from only some of the initiative's definitions while the rest still apply.
Policy effects: audit, deny, append, and more
The effect of a policy decides what happens when a resource does not comply. Audit allows the resource but records it as non-compliant — nothing is blocked, so it is ideal for measuring a problem before you tighten the rule. Deny blocks a non-compliant create or update request, so the resource is never created or changed. Deny evaluates create and update requests only: it never acts on delete requests and does not remove resources that already exist. Blocking deletion by policy is the job of DenyAction.
| Effect | What it does | Typical use |
|---|---|---|
| Audit | Allows the resource but flags it as non-compliant | Measure compliance without blocking |
| AuditIfNotExists | Flags a matching resource as non-compliant when a related resource is missing (for example a VM without a required extension or diagnostic setting) | Report missing companions without deploying them |
| Deny | Blocks a non-compliant create or update request | Prevent disallowed regions, SKUs or missing tags |
| DenyAction | Blocks a request by its action; the supported action is delete | Protect matching resources from deletion while still allowing updates |
| Append | Adds specified fields to the request during create or update | Add a value such as a default IP rule |
| Modify | Adds, updates or removes properties or tags; supports remediation | Add or inherit a tag on new and existing resources |
| DeployIfNotExists | Deploys a related resource when it is missing; supports remediation | Auto-deploy a diagnostic setting or agent |
| Disabled | Turns the policy off without deleting the assignment | Temporarily pause evaluation |
DenyAction versus resource locks. Both stop deletion, but they reach different scopes. A DenyAction policy can be assigned at a management group and target resources by their properties (such as a tag), so it protects matching resources in every current and future subscription beneath it. A resource lock can be placed on a subscription, resource group or resource — not on a management group — and protects everything at and below where it sits. Choose DenyAction for "protect resources of this kind across many subscriptions," and a CanNotDelete lock for "protect this resource or group."
Remember: Audit and AuditIfNotExists report, Deny blocks creates and updates, DenyAction blocks deletes, and Modify and DeployIfNotExists fix.
Azure Policy versus RBAC: what versus who
Azure Policy and role-based access control (RBAC) are complementary and easy to confuse. RBAC controls who can act — it grants identities (users, groups, service principals, managed identities) permission to perform actions on resources, such as "Contributor on this resource group." Azure Policy controls what is allowed — it governs the configuration a resource may have, regardless of who is making the change. A user with full Owner rights is still stopped by a Deny policy if their deployment violates the rule, because the two systems evaluate different questions.
| Aspect | Azure Policy | RBAC |
|---|---|---|
| Question it answers | What configuration is allowed? | Who can perform an action? |
| Evaluates | Resource properties and settings | Identity permissions |
| Default stance | Everything allowed until a policy restricts it | No access until a role is granted |
| Example | Deny creation outside approved regions | Grant Contributor to a team |
| Applies to Owners? | Yes — even an Owner is blocked by Deny | Owners already have broad rights |
Requirements often need both. An RBAC role must cover every resource an operation touches, not just the main one. Creating a VM also attaches its network interface to a subnet, which is an action on the virtual network (Microsoft.Network/virtualNetworks/subnets/join/action). The built-in Virtual Machine Contributor role includes that join action but no write access to virtual networks or NSGs, so it lets people place VMs on existing subnets without changing the network itself. A custom role restricted to Microsoft.Compute actions has no join permission, so VM creation fails at the networking step. Limits on what gets deployed — permitted regions, VM sizes, SKUs — are configuration rules and belong to Policy, which applies them to every requester regardless of role. Many built-in definitions have a fixed effect: Allowed locations and Allowed virtual machine size SKUs always Deny. To only report violations instead, you need a custom copy of the definition with Audit (or an effect parameter), because a built-in definition's fixed effect cannot be changed.
RBAC decides who may deploy, and Policy decides what they may deploy. The depth of assigning RBAC roles at different scopes belongs to the access-management topic.
Remediating existing non-compliant resources
Remediation is how Azure Policy fixes resources that already exist and break a rule. A Deny policy stops new non-compliant requests, but existing resources that break the rule simply show as non-compliant. Remediation is available only with the effects that can change or deploy configuration: deployIfNotExists and modify. New and updated resources are fixed as they are deployed; for resources already in scope you create a remediation task that sweeps them and brings them into compliance — for example deploying a missing diagnostic setting, or adding a tag that resources created before the policy never had.
Because remediation writes to your resources, the remediation deployments run as the assignment's managed identity (system-assigned or user-assigned), not as the person who created the task. That identity needs the roles the policy definition lists in its roleDefinitionIds property, at the scope where it must act. When you create the assignment in the portal, Azure Policy can create the identity and grant those roles for you. When you create it another way — Azure CLI, PowerShell or a template, for instance with an existing user-assigned identity — check that the identity holds those roles and add any missing role assignments yourself; otherwise the assignment evaluates compliance but its remediation tasks fail.
The workflow: assign the policy with a deployIfNotExists or modify effect and a managed identity that holds the required roles, let it evaluate, then create a remediation task from the assignment to apply the fix across resources already in scope. Audit, AuditIfNotExists and Deny cannot remediate, because they only report or block.
Resource locks: CanNotDelete and ReadOnly
Resource locks protect critical resources from accidental change or deletion. You can place a lock on a subscription, resource group or individual resource (not on a management group), and child resources inherit it. There are two lock levels.
| Lock level | Read | Modify | Delete |
|---|---|---|---|
| CanNotDelete | Allowed | Allowed | Blocked |
| ReadOnly | Allowed | Blocked | Blocked |
Locks apply regardless of RBAC — even an Owner cannot delete a resource that carries a CanNotDelete lock until the lock is removed. A lock on one resource also stops its resource group from being deleted, because deleting the group would delete the locked resource. Who can manage locks: creating or removing a lock needs Microsoft.Authorization/locks/*, which Owner and User Access Administrator include. Contributor cannot create or remove locks, because that role excludes Microsoft.Authorization/*/write and delete actions.
Locks govern the control plane only. They apply to Azure Resource Manager operations on the resource (management.azure.com), not to data-plane operations. A CanNotDelete lock on a storage account stops the account from being deleted but does not stop anyone with data access from writing or deleting blobs; a lock on a SQL server doesn't stop data being deleted from its databases.
ReadOnly blocks more than it seems to. It blocks every write request, including POST actions that don't look like changes: starting, stopping, restarting or resizing a VM, adding a tag, and listing storage account keys (a POST), which breaks tools that use key-based access. Only reading properties, metrics and logs keeps working. A ReadOnly lock on a source or destination group or subscription also blocks resource moves.
CanNotDelete has side effects too. Azure Backup keeps instant-restore points in a resource group it manages and deletes old ones as they expire; a CanNotDelete lock on that group — including one inherited from the subscription — stops the clean-up, the limit on restore points is reached, and backups fail. Locks also don't block cancelling the whole subscription. To change a locked resource, remove the lock, make the change, and reapply it.
Managing costs: budgets, alerts, and Azure Advisor
Microsoft Cost Management lets you analyze, budget and alert on Azure spending. Cost analysis breaks costs down by service, resource group, location or tag — which is why consistent tagging matters. Before you deploy, the Pricing calculator and Total Cost of Ownership calculator help you estimate.
A budget sets an amount over a period (monthly, quarterly or annually) and raises alerts when cost crosses percentages you choose. Each alert condition is either Actual (cost already incurred) or Forecasted (cost projected to cross the threshold by the end of the period, which warns earlier). By itself a budget only notifies — resources keep running. To automate a response, attach an action group to the alert, which can call a runbook, Logic App or function, for example to deallocate development VMs. Action groups can be attached only to budgets at the subscription or resource group scope; budgets at a management group or billing scope send email alerts only.
The only built-in hard stop is the spending limit, and it exists only on credit-based offers such as the Azure free account and Visual Studio subscriptions. When the credit is used up, the subscription's resources are disabled until the next billing period's credit arrives, unless the owner removes the spending limit and pays for the overage. Pay-as-you-go subscriptions have no spending limit.
Azure Advisor provides personalized cost recommendations:
- Right-size or shut down underused VMs and scale sets, based on utilization — CPU and outbound network for shut-down recommendations, plus memory for resize recommendations;
- buy reservations or an Azure savings plan for steady, long-running usage;
- remove or reconfigure idle or unused resources, such as unassociated public IP addresses or idle virtual network gateways.
You can tune the VM right-sizing recommendations per subscription in Advisor Configuration. The lookback period sets how much usage history Advisor analyzes — 7 days by default, or 14, 21, 30, 60 or 90 days — so a workload with weekly or monthly usage cycles needs a window long enough to capture its busy periods (updated recommendations can take up to 48 hours). The CPU utilization setting is a filter: it controls which recommendations you see, not how Advisor calculates them.
A governance scenario
A typical production setup combines every tool in this lesson, each doing the job it is built for. Assign Allowed locations (Deny) at the production management group, with the approved regions as its parameter, so no subscription beneath it — current or future — can create resources elsewhere. Assign Require a tag on resources for CostCenter (Deny for new resources) and Inherit a tag from the resource group if missing (Modify, with a remediation task for existing resources), giving the assignment a managed identity that holds the definition's roles. Place a CanNotDelete lock on the production resource group — but not on the resource group Azure Backup uses for restore points. Record a sandbox with a time-limited Waiver exemption rather than an exclusion so the exception stays visible. Finally, create a monthly budget on each production subscription with a forecasted alert at 80% and an action group for the operations team, and review Advisor's cost recommendations each month.
Tip. Expect scenarios that test governance decisions and their side effects. "Reject" or "block" a non-compliant deployment points to Deny, "report only" to Audit, "report a missing companion resource" to AuditIfNotExists, "prevent deletion across many subscriptions" to DenyAction at a management group, and "fix existing resources" to remediation with deployIfNotExists or modify — where the assignment's managed identity needs the definition's roles. Know when to use an exclusion versus a Waiver or Mitigated exemption, where a custom definition can be assigned, and what DoNotEnforce does. Lock questions test what ReadOnly breaks (VM restarts, listing keys), that locks override RBAC but not data-plane operations, that Contributor can't manage them, and that management groups can't be locked. Subscription and resource questions test what a management-group move, a directory change, a resource move or a quota limit actually changes. Cost questions hinge on budgets notifying unless an action group is attached, the spending limit existing only on credit-based offers, which built-in tag policy fits, and how to tune Advisor's lookback period.
- The hierarchy is management group → subscription → resource group → resource; policy and role assignments are inherited downward, and a moved subscription takes its new parent's governance and loses its old parent's.
- Subscriptions are billing and quota boundaries (vCPU quotas per subscription per region); changing a subscription's Entra directory deletes its role assignments and breaks managed identities, while a same-directory billing transfer does not.
- Moving a resource changes its resource group, subscription and resource ID but never its region; both groups are locked during the move, dependents move together, and direct role assignments are orphaned.
- A custom policy definition can be assigned only at or below where it is saved; parameters let one definition serve many scopes, and DoNotEnforce evaluates without enforcing.
- Exclusions (notScopes) stop evaluation; exemptions (Waiver or Mitigated, optional expiry) keep the resource visible as Exempt.
- Audit and AuditIfNotExists report, Deny blocks creates and updates, DenyAction blocks deletes, and Modify and DeployIfNotExists remediate through the assignment's managed identity.
- Locks (subscription, resource group or resource — not management group) override RBAC, cover control-plane operations only, and need Owner or User Access Administrator to manage; ReadOnly blocks POST actions such as VM restarts.
- Tags are not inherited; built-in Require-a-tag policies Deny, Inherit-a-tag policies Modify, and Cost Management tag inheritance tags usage records, not resources.
- Budgets only notify unless an action group (subscription or resource group scope) automates a response; the spending limit is a hard stop only on credit-based offers.
Frequently asked questions
What is the difference between an Azure Policy and an initiative?
A policy definition is a single rule, such as "resources may only be created in approved regions" or "every resource must have a given tag." An initiative, also called a policy set definition, is a group of policy definitions bundled together toward a shared goal — for example a security or compliance baseline containing many related policies. You assign and manage the initiative as one unit instead of assigning each policy separately, which makes large standards far easier to apply and track.
What is the difference between Azure Policy and RBAC?
Azure Policy controls what configuration is allowed, while role-based access control (RBAC) controls who can perform actions. Policy evaluates resource properties — for instance denying creation outside approved regions — regardless of who makes the change, so even an Owner is blocked by a Deny policy. RBAC instead grants identities permission to act, such as Contributor on a resource group. They work together: RBAC decides who may deploy, and Policy decides what they may deploy.
What is the difference between a policy exclusion and a policy exemption?
An exclusion (the assignment's notScopes) removes a scope from the assignment, so resources there are not evaluated and don't appear in compliance results; it can be edited after the assignment is created. An exemption is a separate object that keeps the resource visible with the compliance state Exempt and records why: Waiver (non-compliance accepted) or Mitigated (the intent is met another way). An exemption can have an expiry date, after which it is kept but no longer honored, and for an initiative it can cover only selected definitions.
What is the difference between a CanNotDelete and a ReadOnly lock?
Both are resource locks that apply regardless of a user's RBAC permissions. A CanNotDelete lock lets authorized users read and modify a resource but prevents anyone from deleting it. A ReadOnly lock lets users read the resource but blocks every write, including POST actions such as restarting a VM or listing storage account keys. Locks affect only Azure Resource Manager (control-plane) operations, so neither stops data-plane actions such as deleting blobs, and only roles with Microsoft.Authorization/locks permissions, such as Owner, can create or remove them.
How do you fix existing resources that are already non-compliant with a policy?
You use remediation, which is available only with the deployIfNotExists and modify policy effects. After assigning such a policy, you create a remediation task that sweeps resources already in scope and brings them into compliance — for example adding a required tag or deploying a missing diagnostic setting. The deployments run as the assignment's managed identity, which needs the roles listed in the definition's roleDefinitionIds; the portal can grant them, but an assignment created another way may need them granted manually. Audit and Deny cannot remediate.
What happens when you move an Azure resource to another resource group or subscription?
The resource keeps running in the same region, but its resource ID changes because it includes the resource group and subscription. The source and target resource groups are locked against writes and deletes until the move completes. Not every resource type can be moved, for a move to another subscription dependent resources such as a VM's disks and network interface must be in the same resource group and move together (within one subscription they must be in the destination or included in the request), the destination subscription must be registered for the resource provider, a ReadOnly lock blocks the move, and role assignments made directly on the resource are orphaned.
How do you get notified or take action when Azure spending reaches a threshold?
Create a budget in Microsoft Cost Management with alert conditions on actual or forecasted cost, such as forecasted cost at 80% of the amount. A budget only notifies; resources keep running. To act automatically, attach an action group that calls a runbook or Logic App — supported for subscription and resource group budgets only. The only built-in hard stop is the spending limit on credit-based offers such as the free account and Visual Studio subscriptions, which disables resources until the next credit period. Azure Advisor adds cost-saving recommendations such as right-sizing VMs.
Are Azure tags inherited from a resource group or subscription?
No. A resource does not inherit tags from its resource group or subscription. To enforce tags, use built-in Azure Policy definitions: Require a tag on resources and Require a tag and its value on resources use the Deny effect, while Inherit a tag from the resource group (if missing) uses Modify to copy the tag onto resources, with a remediation task for existing ones. Cost Management tag inheritance, for EA, MCA and MPA accounts, applies tags to usage records for cost reporting but does not tag the resources themselves.
Source
This lesson covers the "Manage Azure identities and governance" domain of the official AZ-104 exam guide. Vendors revise their guides — check the source for the current version.
- Microsoft AZ-104 study guide — Microsoft Learn
Sign up free to mark lessons complete, bookmark topics and track your exam readiness.