Azure Architecture Guide

CH02-03: Azure RBAC and Access Boundaries

Goal

The previous sections explained governance and landing zones. This section focuses on one of the first governance questions every Azure environment must answer:

Who can do what, and where?

Azure role-based access control, usually called Azure RBAC, is Azure's system for granting permissions to manage Azure resources. It helps teams decide who can read, create, change, delete, deploy, or administer resources at Azure scopes such as management groups, subscriptions, resource groups, and resources.

This section is not a role catalog. The goal is to understand the access model well enough to make better architecture decisions.

The Short Version

Azure RBAC connects three things:

Role assignment
  |
  +-- Who?    User, group, service principal, or managed identity
  +-- What?   Role definition, such as Reader, Contributor, or Owner
  +-- Where?  Scope, such as management group, subscription, resource group, or resource

The durable mental model is:

In Azure RBAC, the role says what, and the scope says where.

For example, giving a group the Reader role at a production management group means the group can read resources across the production subscriptions under that management group. Giving the same group Reader on one resource group limits the access to that resource group.

Scope changes the blast radius of the permission.

Why Access Boundaries Matter

Access control is not only a security detail. It affects how teams build and operate systems.

Access decisions influence:

  • Who can deploy changes.

  • Who can troubleshoot production incidents.

  • Who can view sensitive configuration.

  • Who can delete resources.

  • Who can assign access to others.

  • Which automation identities can create or update infrastructure.

  • How easily auditors can understand who had permission.

A weak access model often starts innocently. A team is blocked, so someone grants broad Owner access at a subscription. A deployment pipeline fails, so the pipeline identity gets more permissions than it needs. A contractor needs temporary access, but the assignment is never removed.

Those shortcuts create long-term risk. Azure RBAC helps prevent that risk when roles and scopes are chosen intentionally.

Security Principals

The "who" in Azure RBAC is called a security principal.

Common security principals include:

Principal TypePlain-Language MeaningExample Use
UserA person with an identity in Microsoft Entra ID.A support engineer receives temporary read access.
GroupA Microsoft Entra group containing users or sometimes other principals.A product team group receives contributor access to its non-production resource group.
Service principalAn application or automation identity.A CI/CD pipeline deploys infrastructure.
Managed identityAn Azure-managed identity attached to a resource or workload.An app reads secrets from Azure Key Vault without storing credentials.

Microsoft Entra ID is Microsoft's cloud identity service. It provides the users, groups, applications, and workload identities that Azure RBAC can use.

In most human-access scenarios, assign roles to groups rather than individual users. Group-based access is easier to review, automate, remove, and explain. Direct user assignments are sometimes necessary, but they become hard to audit when used casually.

Role Definitions

The "what" in Azure RBAC is the role definition.

A role definition describes the allowed actions. Azure includes many built-in roles, and organizations can also create custom roles when built-in roles are too broad or too narrow.

For a starting mental model, know these common built-in roles:

RoleWhat It MeansCommon Use
ReaderCan view resources but cannot change them.Auditors, security readers, stakeholders, support visibility.
ContributorCan create and manage resources but cannot grant access to others.Application teams or deployment identities that need to manage resources.
OwnerCan manage resources and assign access to others.Highly trusted administrators at carefully chosen scopes.
User Access AdministratorCan manage user access to Azure resources.Access administrators who should manage permissions without owning all resource configuration.

Do not memorize every Azure role now. The key is to choose the least powerful role that supports the responsibility.

Owner is especially sensitive because it includes the ability to grant access. A person with Owner at a broad scope can change resources and give other people access. That may be appropriate for a small number of platform administrators, but it should not be the default for application delivery.

Scopes

The "where" in Azure RBAC is the scope.

Azure RBAC can be assigned at several scopes:

Management Group
  |
  +-- Subscription
      |
      +-- Resource Group
          |
          +-- Resource

Permissions assigned at a broader scope are inherited by lower scopes. If a group receives Reader at a management group, it can read resources in child subscriptions. If a deployment identity receives Contributor at a resource group, it can manage resources inside that resource group.

Use broad scopes for broad responsibilities. Use narrow scopes for narrow responsibilities.

ScopeExample RBAC Use
Management groupCentral security readers can view all production subscriptions.
SubscriptionPlatform operators can manage shared connectivity resources.
Resource groupAn application team can deploy and manage one workload component.
ResourceA specific automation identity can read secrets from one key vault.

Resource-level assignments are sometimes useful, but they should not become the normal pattern for everything. Too many one-off assignments are hard to audit and easy to forget.

Production and Non-Production Access

Production and non-production usually need different access patterns.

In non-production, teams often need more freedom. Developers may need to create, change, test, and delete resources quickly. The environment still needs guardrails, but the operational risk is lower.

In production, access is usually tighter. Fewer people should have direct write access. Changes may go through deployment pipelines. Break-glass or emergency access may exist, but it should be controlled, visible, and reviewed.

A simple pattern might look like this:

EnvironmentExample Access PatternReason
DevelopmentProduct team has Contributor at a development resource group or subscription.Supports fast iteration.
TestProduct team has Contributor with policy controls and cost limits.Supports validation while keeping governance visible.
ProductionDeployment identity has scoped Contributor; operators have limited write access; team has Reader.Reduces manual change risk and improves auditability.
Production security viewCentral security has Reader or security-specific roles at a production management group.Enables oversight without making security the owner of every workload.

This is only a pattern, not a universal rule. Some teams need different production access for operational reasons. The important point is that access should be intentional and explainable.

RBAC for Automation

Modern Azure environments are often deployed by pipelines, infrastructure as code, scripts, or platform automation.

Those automation tools also need identities. A pipeline identity should have enough permission to deploy the resources it owns, but not broad permission to change unrelated environments.

For example, a deployment identity for the customer portal should not automatically have Contributor across every production subscription. It may only need Contributor on one resource group, or a custom role that allows specific actions.

Managed identities are important here. A managed identity is an Azure-managed identity that an Azure resource or workload can use to authenticate without storing passwords or secrets in code. For example, an application can use a managed identity to read secrets from Azure Key Vault, which is Azure's service for securely storing secrets, keys, and certificates. You do not need Key Vault details yet; the governance point is that workload identities should receive scoped access just like human users.

RBAC Is Not Application Authorization

Azure RBAC controls management access to Azure resources. It is not the same as authorization inside your application.

For example, Azure RBAC can decide whether a developer can modify an Azure App Service resource. Azure App Service is a managed Azure service for hosting web applications and APIs. RBAC does not decide whether an end user of the hosted application can view an invoice or approve a payment inside the application. That application-level authorization belongs to the application design.

This distinction matters. Do not assume that because Azure RBAC is configured, the application itself has the right user permissions. Cloud management access and application business access are related security topics, but they are not the same control.

RBAC and Azure Policy Work Together

Azure RBAC controls who can act. Azure Policy controls what resource state is allowed or required.

For example:

  • RBAC may allow a team to create storage accounts in a subscription.

  • Azure Policy may deny storage accounts in unapproved regions.

  • RBAC may allow a deployment identity to create a virtual machine.

  • Azure Policy may require specific tags or audit missing diagnostic settings.

This combination is powerful. RBAC grants responsibility. Policy keeps that responsibility inside organizational rules.

The next section focuses on Azure Policy in more detail.

Example: Payments Team Access

Imagine a payments team that owns a regulated workload.

The team needs speed in development, control in production, and central security visibility.

A simple RBAC model might be:

Group or IdentityScopeRoleWhy
Payments developersNon-production resource groupsContributorDevelopers can build and test quickly.
Payments production operatorsProduction resource groupsReader plus limited operational roles where neededOperators can inspect production and perform approved actions.
Payments deployment pipelineProduction application resource groupContributorProduction changes go through the pipeline.
Central security readersProduction management groupReader or security-specific roleSecurity can inspect production posture across subscriptions.
Platform network operatorsConnectivity subscriptionContributor or network-specific rolePlatform team manages shared network resources.

This model is not perfect for every organization, but it demonstrates the design thinking. Access follows responsibility. Production is tighter than non-production. Shared platform resources have different owners from workload resources. Automation identities are scoped to what they deploy.

Common Mistakes

  • Assigning Owner when Contributor or Reader would be enough. Owner includes permission to grant access, so it should be used carefully.

  • Assigning access directly to individual users by default. Group-based assignments are usually easier to manage and review.

  • Using broad scopes for narrow responsibilities. A resource group assignment may be safer than a subscription assignment when a team owns only one workload component.

  • Forgetting inherited permissions. A role assigned high in the hierarchy can grant access across many child scopes.

  • Creating too many one-off resource-level assignments. They may solve immediate problems, but they become hard to audit.

  • Confusing Azure RBAC with application authorization. RBAC controls Azure resource management, not every permission inside an application.

  • Treating RBAC as a replacement for policy, networking, backup, or monitoring. Access control is one part of governance, not the whole design.

If Someone Asks You

If someone asks, "How does Azure RBAC work?" a clear answer is:

Azure RBAC grants permissions by connecting a security principal, a role, and a scope. The security principal is who receives access, such as a user, group, service principal, or managed identity. The role defines what actions are allowed, such as Reader, Contributor, or Owner. The scope defines where the permission applies, such as a management group, subscription, resource group, or resource. In Azure RBAC, the role says what, and the scope says where.

This answer shows the model instead of only naming roles.

What You Should Remember

Azure RBAC is the governance control for access to Azure resources.

The most important idea is this:

Access should match responsibility, and scope controls blast radius.

Use groups where possible, choose the least powerful role that fits the job, separate production and non-production access, and be careful with broad assignments. RBAC gives teams the ability to act; it should not quietly give them more responsibility than they actually own.

Questions to Check Your Understanding

  1. What are the three parts of a role assignment?

  2. Why does scope matter in Azure RBAC?

  3. Why are group-based assignments usually better than direct user assignments?

  4. How should production and non-production access usually differ?

  5. How is Azure RBAC different from Azure Policy?