SaveMyCert
Log in
5 of 5 free questions left today·for unlimited practice
Manage Azure identities and governance

Manage Access to Azure Resources: Azure RBAC (AZ-104)

13 min readAZ-104 · Manage Azure identities and governanceUpdated

Azure role-based access control (Azure RBAC) is the authorization system that decides who can do what to which Azure resources. You grant access by creating a role assignment, and every role assignment has exactly three parts: a security principal (the who — a user, group, service principal, or managed identity), a role definition (the what — a collection of allowed actions such as Reader or Contributor), and a scope (the where — a management group, subscription, resource group, or single resource). Assignments made at a higher scope are inherited by everything beneath them, and permissions from multiple assignments are additive, so effective access is the sum of every role a principal holds. This lesson explains the key built-in roles, how to build custom roles when they fall short, how scope and inheritance work, how to interpret effective permissions including deny assignments, the classic distinction between Azure RBAC and Microsoft Entra roles, and how to check a principal's access in the portal.

What you’ll learn
  • Describe what Azure RBAC does and name the three parts of a role assignment
  • Compare the built-in Owner, Contributor, Reader, and User Access Administrator roles
  • Create a custom role when the built-in roles do not fit a requirement
  • Assign roles at management group, subscription, resource group, and resource scope and predict inheritance
  • Interpret effective permissions, including additive assignments and deny assignments
  • Distinguish Azure RBAC from Microsoft Entra roles and check access in the portal

What is Azure RBAC?

Azure role-based access control (Azure RBAC) is the authorization system built on Azure Resource Manager that controls access to Azure resources — virtual machines, storage accounts, virtual networks, resource groups, subscriptions, and everything else you manage. Authentication (proving who you are) is handled by Microsoft Entra ID; authorization (deciding what you are allowed to do) is handled by Azure RBAC. The two work together every time someone opens the portal or calls the Azure API.

RBAC follows the principle of least privilege: you grant each person, group, or application only the permissions they need, at only the scope they need, rather than making everyone an administrator. You do this by creating role assignments, and you manage them from the Access control (IAM) blade that appears on every management group, subscription, resource group, and resource.

The mechanism is deliberately simple to reason about: a role is a named bundle of allowed actions, and assigning that role to someone at a scope grants them those actions across everything in that scope. Because assignments are additive and inherited, most access questions on the exam are really questions about which roles apply at which scope — the subject of the rest of this lesson.

The three parts of a role assignment

Every Azure role assignment is built from three elements, and the exam expects you to name all three. Together they answer who can do what and where.

  • Security principal (the who) — the identity being granted access. It can be a user, a group, a service principal (an application identity), or a managed identity (an Azure-managed identity for resources like a VM or function app). Assigning to a group is best practice, so access follows group membership.
  • Role definition (the what) — a named collection of permissions listing the Actions and NotActions for management operations and DataActions and NotDataActions for operations on data, such as reading a blob. Reader, Contributor, and Owner are role definitions.
  • Scope (the where) — the set of resources the access applies to, expressed as one of four levels: management group, subscription, resource group, or a single resource.

You bind these three together on the Access control (IAM) blade with Add role assignment: pick the role, pick the members (principals), and the scope is set by wherever you started — assigning on a resource group scopes it to that resource group. Change any one of the three and you have a different assignment. On the exam, if a question asks what a role assignment consists of, the answer is always security principal + role definition + scope.

Built-in roles: Owner, Contributor, Reader, User Access Administrator

Azure ships with many built-in roles, but four are fundamental and appear constantly on the exam. Learn exactly what each grants — especially the line between managing resources and managing access to them.

RoleWhat it grantsCan assign roles to others?
OwnerFull access to all resourcesYes
ContributorCreate and manage all resourcesNo
ReaderView resources onlyNo
User Access AdministratorManage user access to resources onlyYes

The single most tested distinction is Owner versus Contributor. Both can fully create, change, and delete resources, but only Owner can also manage access — that is, grant roles to other principals. A Contributor can build a virtual machine but cannot give a colleague permission to it; an Owner can do both. If a scenario says someone must be able to manage access as well as resources, the answer is Owner.

User Access Administrator is the mirror image: it can manage role assignments but cannot manage the resources themselves — useful when you want a person to delegate access without touching workloads. Reader grants view-only access with no changes at all. These four are general-purpose; Azure also provides many service-specific roles (for example, Virtual Machine Contributor or Storage Blob Data Reader) that grant narrower permissions when full Contributor is too broad.

Scope and inheritance

Scope is where a role assignment applies, and Azure scopes form a hierarchy with four levels, from broadest to narrowest: management group > subscription > resource group > resource. The critical rule is inheritance: a role assigned at a higher scope is automatically inherited by every child scope beneath it. Assign a role on a subscription and it applies to all resource groups and all resources in that subscription; assign it on a management group and it applies to every subscription under that group.

Admin scenario. Your auditors need read-only visibility across an entire subscription that contains twelve resource groups. Rather than create twelve separate assignments, you open the subscription, go to Access control (IAM), and assign the Reader role to the auditors' group once at the subscription scope. Every one of the twelve resource groups — and every resource inside them, including ones created next month — inherits Reader automatically. This is exactly the exam phrase assign once and it applies to all child resource groups.

Inheritance flows in one direction only: downward. An assignment on a single resource group grants nothing at the subscription level or in sibling resource groups. Because assignments are additive, a principal can hold Reader inherited from the subscription and Contributor assigned directly on one resource group, ending up as Contributor there and Reader everywhere else. Choosing the right scope — broad enough to be efficient, narrow enough for least privilege — is a core administrator skill.

Custom roles: when built-in roles do not fit

When no built-in role fits your requirement, you create a custom role. Built-in roles cover most needs, but you might need something in between — for example, a role that can restart virtual machines but not create or delete them, which no single built-in role provides. A custom role lets you specify exactly the permissions you want.

A custom role is defined in JSON (or built in the portal) with the same structure as a built-in role: Actions and NotActions for management operations, DataActions and NotDataActions for data operations, and AssignableScopes — the list of management groups, subscriptions, or resource groups where the role can be assigned. The effective permissions are the Actions minus the NotActions. A tenant can hold up to 5,000 custom roles.

A practical way to build one is to start from an existing built-in role, clone it, and trim or add individual operations. You create custom roles from Access control (IAM) > Add > Add custom role, or with PowerShell, the Azure CLI, or an ARM template. On the exam, the trigger is simple: if the required permissions do not match any built-in role, the answer is a custom role — do not try to force-fit Owner or Contributor onto a requirement that needs a narrower set of actions.

Interpreting effective permissions: additive access and deny assignments

To interpret someone's effective permissions, remember two rules. First, Azure RBAC is additive: a principal's effective access is the union of every role assignment that applies to them, whether assigned directly or inherited from a higher scope, and whether granted to them personally or to a group they belong to. There is no concept of one assignment reducing another — if you hold Reader from the subscription and Contributor on a resource group, you are a Contributor on that resource group.

Second, deny assignments override role assignments. A deny assignment blocks a principal from performing specific actions even if a role assignment would otherwise allow them, and deny always wins. Deny assignments are not something administrators create by hand in the IAM blade; they are created by Azure itself — for example by Azure Blueprints or by managed applications — to protect the resources those services manage. You can view them, but the exam point is the precedence: an explicit deny beats any allow.

So the evaluation order is: gather all applicable role assignments (additive allow), then apply any deny assignments (which subtract). If a user seems to have too much or too little access, the cause is almost always an inherited assignment from a parent scope or a group membership they forgot about. Check both direct and inherited assignments before concluding a permission is missing.

Azure RBAC versus Microsoft Entra roles

A classic exam trap is confusing Azure RBAC with Microsoft Entra roles. They are two separate permission systems that both grant access, but to different things. Azure RBAC controls access to Azure resources — VMs, storage, networks — and is scoped through the management group, subscription, resource group, and resource hierarchy. Microsoft Entra roles control access to Microsoft Entra ID itself — managing users, groups, applications, domains, and directory settings — and are scoped to the directory (tenant), with some support for administrative units.

AspectAzure RBACMicrosoft Entra roles
Controls access toAzure resourcesMicrosoft Entra ID (identity)
Example rolesOwner, Contributor, ReaderGlobal Administrator, User Administrator
ScopeManagement group, subscription, resource group, resourceTenant (directory), administrative unit
Managed inAccess control (IAM)Microsoft Entra ID > Roles and administrators

They are independent: being a Global Administrator in Entra ID does not automatically grant access to Azure resource subscriptions, and being an Owner of a subscription does not let you manage users in the directory. A Global Administrator can, however, choose to elevate access to manage all Azure subscriptions in the tenant — a deliberate toggle, not automatic. On the exam, manage Entra (users, groups, domains) means an Entra role, while manage Azure resources means Azure RBAC.

Checking access in the portal

To see what access a principal has, use the Access control (IAM) blade, which is available on every management group, subscription, resource group, and resource. It has two tools you should know for the exam.

Check access lets you select a user, group, service principal, or managed identity and see the effective role assignments they have at the current scope, including roles inherited from parent scopes. Use it to answer questions like whether a contractor can delete resources in a given resource group, without guessing.

The Role assignments tab lists every assignment at the current scope, showing the principal, the role, and — importantly — whether each was assigned at this scope or inherited from a parent, so you can tell where access originates. There is also a Roles tab listing all available role definitions and a Deny assignments tab.

When troubleshooting, always check at the scope in question and read the inherited column: an unexpected permission usually traces back to an assignment on the subscription or management group above. On the exam, check access and the role assignments list are how you interpret and verify who can do what across your Azure resources.

Tip. AZ-104 probes access control with scenario questions that hinge on precise trigger words. Can manage access as well as resources means Owner (not Contributor); assign once and it applies to all child resource groups means scope inheritance from a higher level; permissions from two roles combine means additive access, while an explicit block means a deny assignment. Expect the Azure RBAC versus Microsoft Entra roles distinction — manage Azure resources versus manage Entra users, groups, and domains — and questions asking you to name the three parts of a role assignment or to choose a custom role when no built-in role fits.

Key takeaways
  • Azure RBAC is the authorization system that controls access to Azure resources; Microsoft Entra ID handles authentication.
  • Every role assignment has three parts: a security principal (who), a role definition (what), and a scope (where).
  • Owner has full access including managing access; Contributor manages resources but cannot grant access; Reader is view-only; User Access Administrator manages access but not resources.
  • Scopes form a hierarchy — management group > subscription > resource group > resource — and a higher-scope assignment is inherited downward.
  • Assign Reader once at the subscription and every child resource group and resource inherits it.
  • Permissions are additive across all direct, inherited, and group assignments; explicit deny assignments override any allow.
  • Create a custom role (JSON with Actions, NotActions, and AssignableScopes) only when no built-in role fits.
  • Azure RBAC manages Azure resources; Microsoft Entra roles (such as Global Administrator) manage identity — they are separate systems.

Frequently asked questions

What is the difference between Owner and Contributor in Azure?

Both Owner and Contributor can fully create, manage, and delete Azure resources, but only Owner can also manage access — that is, assign roles to other users, groups, or service principals. A Contributor can build and configure resources yet cannot grant anyone else permission to them. If a requirement says a person must be able to manage access as well as manage resources, the correct role is Owner.

What are the three parts of an Azure role assignment?

An Azure role assignment always combines three elements: a security principal (the who — a user, group, service principal, or managed identity), a role definition (the what — a named set of permissions such as Reader or Contributor), and a scope (the where — a management group, subscription, resource group, or single resource). Change any one of the three and you have a different assignment. Naming these three is a common exam question.

How does scope inheritance work in Azure RBAC?

Azure scopes form a hierarchy: management group, then subscription, then resource group, then individual resource. A role assigned at a higher scope is automatically inherited by every scope beneath it, and inheritance flows downward only. For example, assigning Reader once at the subscription level grants Reader on all of its resource groups and resources. This lets you assign broadly for efficiency or narrowly for least privilege.

What is the difference between Azure RBAC and Microsoft Entra roles?

Azure RBAC controls access to Azure resources — such as virtual machines, storage accounts, and networks — scoped through management groups, subscriptions, resource groups, and resources. Microsoft Entra roles control access to Microsoft Entra ID itself, such as managing users, groups, applications, and domains, scoped to the directory. They are independent systems: a Global Administrator in Entra does not automatically get access to Azure subscriptions, and a subscription Owner cannot manage directory users.

When should you create a custom role in Azure?

Create a custom role when no built-in role matches the exact permissions a requirement calls for — for example, allowing someone to restart virtual machines without letting them create or delete resources. A custom role is defined in JSON with Actions, NotActions, DataActions, NotDataActions, and AssignableScopes, and is often built by cloning a built-in role and trimming it. If a built-in role fits, use it; custom roles are for the gaps.

Test yourself on this topic
Practice questions with full explanations.
Practice now

Sign up free to mark lessons complete, bookmark topics and track your exam readiness.