MICROSOFT POWER BI • SECURITY AND GOVERNANCE

Permissions — Configure workspace/app permissions conceptually (Service)

Master the layered permission model that governs who can view, edit, and share Power BI content in the cloud service.

Historical Context & Motivation

Before self-service business intelligence became mainstream, access to enterprise reports was typically controlled by database administrators who managed permissions at the SQL server level through role-based access control (RBAC) policies. When Microsoft launched Power BI as a cloud-native analytics platform, it inherited the challenge of balancing self-service agility with enterprise-grade security — a tension that has driven the evolution of its permission architecture ever since. The platform needed a model that allowed data analysts to collaborate freely within teams while preventing unauthorized users from accessing sensitive financial, HR, or strategic datasets. This dual requirement — openness for collaboration and strict guardrails for governance — motivates every layer of the Power BI permissions framework that exists today.

2015
Power BI Service Launches
Microsoft releases Power BI as a SaaS offering with a simple personal workspace model. Permissions are rudimentary: content is either private to the creator or shared via direct links with minimal granularity.
2017
App Workspaces (v1) Introduced
Built on top of Microsoft 365 Groups, v1 workspaces introduce collaborative spaces but tie permissions tightly to the underlying group membership, limiting fine-grained control over who can edit versus merely view content.
2019
New Workspace Experience (v2)
Microsoft decouples workspaces from M365 Groups and introduces four distinct workspace roles — Admin, Member, Contributor, and Viewer — giving organizations granular control over content lifecycle operations.
2020
Power BI Apps & Audiences
The Apps distribution model matures with audience-based targeting, enabling publishers to expose different subsets of reports and dashboards to different groups of consumers from a single workspace.
2023
Microsoft Fabric & Unified Governance
Power BI workspaces evolve into Fabric workspaces. Permissions now span lakehouse tables, notebooks, and data pipelines alongside traditional reports, reinforcing the need for a coherent, layered permission model.

The central question this lesson addresses is: How do workspace roles, app permissions, dataset permissions, and row-level security interact to form a coherent, defense-in-depth permission model in the Power BI Service? Understanding these layers conceptually is essential before you ever click a single setting in the admin portal.

Core Principles & Definitions

Power BI's permission architecture rests on several foundational principles borrowed from operating-system security models that any CS student will recognize — least privilege, separation of duties, and defense in depth. These principles are instantiated through four distinct permission layers that operate in concert: tenant settings at the organizational level, workspace roles for collaborative authoring, app permissions for read-only distribution, and per-item permissions including dataset-level sharing and row-level security. Each layer can restrict access further but cannot grant access that a higher layer denies — a pattern analogous to capability-based security in distributed systems.

1

Workspace Roles

Four hierarchical roles — Admin, Member, Contributor, Viewer — assigned at the workspace level. Each role inherits the capabilities of every role below it. These govern who can create, modify, publish, and delete artifacts within a shared collaborative space.
2

App Permissions

When a workspace is published as an App, consumers interact with a read-only snapshot. App audiences define which users or security groups see which reports and dashboards, decoupling content consumption from workspace membership.
3

Dataset (Semantic Model) Permissions

Build permission on a dataset allows external report creators to connect to the dataset from other workspaces. This enables a hub-and-spoke architecture where one team owns the data model and others build reports atop it.
4

Row-Level Security (RLS)

DAX-defined roles filter data at query time so users see only the rows they are authorized to access. RLS provides the final, most granular layer of defense, operating within datasets regardless of how the report was shared.
5

Tenant-Level Governance

Power BI admin settings act as an organizational policy ceiling. They control whether features like 'Publish to web,' 'Export data,' or 'Share outside the organization' are available. No workspace or app setting can override a disabled tenant setting.
KEY TAKEAWAY
Think of Power BI permissions like a building's physical security system. Tenant settings are the perimeter fence — they determine which doors exist at all. Workspace roles are keycards to specific floors. App permissions are visitor badges that let guests see certain rooms but not touch anything. And RLS is a locked filing cabinet inside each room — even if you can enter, you only see the drawers labeled with your name.

Visual Explanation — The Permission Layers

The concentric layout shows how Power BI permissions form a defense-in-depth model. Tenant settings (outermost) set the policy ceiling. Workspace roles control authoring. App permissions and per-item sharing control distribution. RLS filters data at the row level.

The diagram above illustrates the nesting semantics of Power BI's permission model. Notice that Layer 3 branches into two parallel paths: App permissions (the preferred enterprise distribution mechanism) and per-item sharing (ad-hoc share links). Both are constrained by workspace roles above them and feed into RLS below. A critical invariant to internalize is that no inner layer can grant access that an outer layer denies — this monotonically decreasing permission scope is the system's fundamental security guarantee. If a tenant admin disables "Export to Excel," no workspace role, app setting, or share link can re-enable it.

How It Works — Workspace Roles in Depth

The workspace role hierarchy in Power BI follows a strictly ordered capability lattice. If we denote the set of capabilities available to a role R as C(R), then the system enforces: C(Viewer) ⊂ C(Contributor) ⊂ C(Member) ⊂ C(Admin). This total ordering simplifies reasoning about effective permissions — a user's effective capability set is the union of all roles they hold across the workspace, which due to the subset chain, reduces to the maximum role assigned. Power BI does not support capability negation within a workspace; you cannot grant Member status but selectively revoke a single Member capability.

Capability Lattice Formalization

EFFECTIVE PERMISSIONS
EffectiveCaps(user, workspace) = C(max(Roles(user, workspace))) ∩ TenantPolicy
Where Roles(user, workspace) returns the set of roles assigned to the user in the given workspace, max() selects the highest role by the total order, C() maps a role to its capability set, and TenantPolicy is the set of capabilities enabled at the organizational level.
APP CONSUMER EFFECTIVE ACCESS
VisibleContent(user, app) = AppAudience(user) ∩ { artifacts in workspace } ∩ RLS(user, dataset)
For app consumers, the visible content is the intersection of the artifacts included in their assigned AppAudience, the artifacts that exist in the source workspace, and the row-level filters defined by RLS roles mapped to the user's identity.
Workspace role capability matrix — note the strict hierarchical inclusion
CapabilityAdminMemberContributorViewer
Update/delete workspace
Add/remove users (incl. other Admins)
Add members with lower permissions
Publish / update app
Create / edit / delete content
Share items / allow resharing
View and interact with content
💡 Security Groups vs. Individual Assignments
Best practice in production environments is to assign workspace roles to Azure AD (Entra ID) security groups rather than individual users. This mirrors the principle of indirection in software engineering: if you need to change who has Member access, you modify group membership in one place rather than updating every workspace. It also enables automated provisioning via SCIM or PowerShell.

Detailed Breakdown — App Permissions & Audiences

While workspace roles govern who can author content, Power BI Apps govern who can consume it at scale. An App is a curated, read-only package of dashboards and reports published from a workspace. Crucially, app consumers do not need any workspace role — the app itself is a separate permission boundary. This separation of concerns is architecturally significant: the team of ten analysts who build and iterate on reports in a workspace can serve a thousand consumers through the app without ever granting those consumers workspace access.

This diagram shows a single workspace containing three reports and one dataset. When published as an app, Audience 1 (Executives) sees only the Revenue Report and Forecast Dashboard, while Audience 2 (Sales Managers) sees all three reports. Neither group has any workspace role — they interact only through the app's read-only interface.

App Permission Options

  • Access to the app: Determined by specifying users, security groups, distribution lists, or the entire organization. This is the coarsest app-level gate.
  • Audience assignment: Within the app, different audiences can be configured to expose different navigation items (report pages, dashboards). A user can belong to multiple audiences, in which case they see the union of content.
  • Underlying dataset permissions: App consumers implicitly receive read permission on the dataset powering the reports they can see. Optionally, Build permission can be granted to allow them to create their own reports from the dataset.
  • Resharing control: Publishers can allow or disallow app consumers from sharing the app link with others, controlling viral distribution of sensitive content.

Worked Example — Designing a Permission Scheme

Consider a mid-sized retail company, Contoso Retail, with the following requirements: a data engineering team of three people builds and maintains all datasets, a BI analyst team of five creates reports, executives and regional managers need to view specific reports, and regional managers should see only their own region's sales data. Let us walk through the permission configuration step by step.

Contoso Retail: End-to-End Permission Configuration
1
Step 1 — Verify Tenant SettingsBefore configuring any workspace, verify in the Power BI Admin Portal that the relevant tenant settings are enabled for your organization. Ensure that "Create workspaces" is enabled for the BI team's security group, "Publish to web" is disabled (since this is internal data), and "Export data" is enabled only for the executive security group. These form the policy ceiling that no subsequent step can override.
Tenant-level guardrails established
2
Step 2 — Create Workspace & Assign RolesCreate a workspace called "Retail Sales Analytics." Assign the data engineering team's security group (SG-DataEng) as Admins since they need to manage workspace settings and control membership. Assign the BI analyst security group (SG-BIAnalysts) as Contributors — they need to create and edit reports but should not share items or publish the app (that is controlled by the data engineering admins). Do not assign executives or regional managers any workspace role.
Workspace roles: SG-DataEng → Admin, SG-BIAnalysts → Contributor
3
Step 3 — Define RLS Roles in the DatasetIn Power BI Desktop, open the Sales dataset and define RLS roles. Create a role called "RegionalFilter" with the DAX expression: [Region] = USERPRINCIPALNAME(). In practice, you would likely use a mapping table that links user emails to regions. For executives who need to see all regions, either create a separate role with no filter or do not assign them to any RLS role (admins and members bypass RLS in the workspace — but app consumers do not). Publish the dataset to the workspace.
RLS role "RegionalFilter" defined with DAX filter expression
4
Step 4 — Publish the App with AudiencesAn Admin or Member publishes the workspace as an app. Configure two audiences. Audience 1 — "Executive View": Assign the SG-Executives security group, include the Revenue Overview and Forecast dashboards. Audience 2 — "Regional Operations": Assign the SG-RegionalMgrs security group, include all operational reports. Disable resharing for both audiences.
Two app audiences configured with distinct content subsets and resharing disabled
5
Step 5 — Map RLS Roles to App ConsumersBack in the Power BI Service, navigate to the dataset security settings. Add the SG-RegionalMgrs security group to the "RegionalFilter" RLS role. Do not add SG-Executives to any RLS role, so executives see all data. Validate by using the "View as" feature to test that a specific regional manager sees only their region's data. This completes the layered configuration: tenant settings → workspace roles → app audiences → RLS.
All four permission layers configured — defense-in-depth achieved

Strengths, Limitations & Common Pitfalls

Trade-off analysis across Power BI permission layers
AspectStrengthsLimitations / Pitfalls
Workspace RolesClear hierarchy; easy to audit; supports security group assignment; familiar RBAC patternNo custom roles — you cannot create a "Publisher" role that can share but not delete. The four fixed roles may not match every organizational structure.
App AudiencesDecouples consumption from authoring; scales to thousands of consumers; audience-based content targetingApp updates require manual republish (not instant); consumers must install the app; limited to 10 audiences per app as of 2024.
Per-Item SharingQuick, ad-hoc sharing; useful for one-off scenarios; supports deep-link to specific report pageDifficult to audit at scale; creates permission sprawl; share links can accumulate over time without review; governance teams often restrict this feature.
Row-Level SecurityGranular data-level filtering; enforced at query time; transparent to report design; supports dynamic rules via DAXPerformance overhead on large datasets; complex DAX roles can be hard to debug; does not apply to workspace Admins or Members (they bypass RLS in the workspace).
Tenant SettingsCentralized policy enforcement; can scope settings to security groups; provides organizational guardrailsBinary enable/disable per feature; limited conditional logic; requires Power BI admin role to modify; changes affect entire organization or scoped groups.
⚠️ COMMON PITFALL
One of the most common security misconfigurations is granting workspace Member or Admin roles to users who should only be consumers. Because Admins and Members bypass Row-Level Security when viewing reports directly in the workspace, this can inadvertently expose data that RLS was designed to hide. The safe pattern is to keep consumers out of the workspace entirely and distribute content exclusively through Apps, where RLS is always enforced.

Connection to Advanced Governance Concepts

The workspace and app permission model described in this lesson forms the foundation for more advanced governance capabilities in Power BI and the broader Microsoft Fabric ecosystem. Understanding the conceptual model prepares you for topics such as deployment pipelines (dev → test → prod workspace promotion with separate role assignments per stage), sensitivity labels (Microsoft Purview Information Protection classifications that travel with exported data), and object-level security (OLS) which restricts visibility of specific tables or columns within a dataset — a finer grain than RLS's row filtering.

Foundational concepts from this lesson and their advanced extensions
ConceptThis Lesson (Foundational)Advanced Extension
Access control granularityWorkspace roles (4 fixed roles) + RLS (row filtering)Object-Level Security (OLS) hides entire columns/tables; column-level security in Fabric lakehouses
Content lifecycleSingle workspace → publish appDeployment pipelines with separate dev/test/prod workspaces, each with independent role assignments and dataset parameter rules
Data protectionTenant settings control export; RLS filters data in reportsMicrosoft Purview sensitivity labels encrypt exports; DLP policies prevent sharing of labeled content outside the organization
Programmatic managementManual role assignment via UIPower BI REST API and PowerShell cmdlets for automated permission provisioning, auditing, and CI/CD integration

As organizations mature their Power BI governance, they typically move from manual, UI-driven permission management to fully automated, infrastructure-as-code approaches using the Power BI REST APIs. The conceptual model you have learned here — the layered interaction of tenant settings, workspace roles, app audiences, and RLS — remains the theoretical backbone of those automated systems. Whether you configure permissions by clicking through the service portal or by issuing API calls in a CI/CD pipeline, the underlying security semantics are identical.

Practice Problems

PROBLEM 1CONCEPTUAL
Explain why Power BI's permission model is described as "defense in depth." Which specific design property ensures that an inner layer cannot override a restriction imposed by an outer layer?
PROBLEM 2BASIC CALCULATION
A user, Priya, is assigned the Contributor role via her personal account and the Member role via the security group SG-Analytics in the same workspace. What is her effective role, and what capabilities does she have? Can she publish the workspace as an app?
PROBLEM 3INTERMEDIATE
An organization has a workspace 'Finance Hub' with an RLS role called 'DeptFilter' that uses the DAX expression [Department] = USERPRINCIPALNAME(). The workspace Admin, Jordan, navigates directly to a report in the workspace and sees all departments' data. However, when the same report is accessed through the published App by a regional finance officer, that officer sees only their department. Explain why Jordan sees all data and the finance officer does not.
PROBLEM 4APPLIED
You are architecting a Power BI deployment for a healthcare company with three departments: Cardiology, Oncology, and Radiology. Each department has its own analysts who build reports, but all reports draw from a single shared 'Patient Outcomes' dataset managed by a central data team. Department analysts should not be able to see each other's reports, and clinical directors should see only their department's patient data. Design the workspace structure, role assignments, and RLS configuration. Justify your choices.
PROBLEM 5CRITICAL THINKING
A colleague argues that Row-Level Security is unnecessary if you simply create separate datasets — one per department — so that each group only has access to their own data. Construct a rigorous argument for or against this claim, considering scalability, data consistency, maintenance overhead, and security guarantees.

Summary — Permissions in the Power BI Service

Power BI's permission architecture implements a defense-in-depth model with four nested layers. Tenant settings establish the organizational policy ceiling, controlling which features are available at all. Workspace roles — Admin, Member, Contributor, and Viewer — form a strict capability lattice that governs who can create, edit, publish, share, and delete content within a collaborative space. App permissions with audience-based targeting decouple content consumption from workspace membership, enabling scalable read-only distribution. Row-Level Security (RLS) provides the most granular layer, filtering data at query time using DAX expressions so that each user sees only their authorized rows.

The critical invariant across all layers is that effective permissions are computed as the intersection of all layers — no inner layer can grant access that an outer layer denies. Best practices include assigning roles to Azure AD security groups rather than individuals, distributing content through Apps rather than per-item sharing to maintain auditability, and remembering that workspace Admins and Members bypass RLS within the workspace, making it essential to keep report consumers out of workspaces and route them through Apps where RLS is always enforced.

Varsity Tutors • Microsoft Power BI • Permissions — Configure workspace/app permissions conceptually (Service)