What Is Row-Level Security in Power BI? A Plain-English Guide 

What Is Row-Level Security in Power BI? A Plain-English Guide 

The Same Report, Different Data for Different People

Imagine a sales report that shows revenue by region. You want the national director to see all regions. You want each regional manager to see only their own.

You could build separate reports for each person. But that means maintaining five, ten, or twenty versions of the same report every time the data model changes.

Row-Level Security exists to solve exactly this. One report, one dataset, different data for each person based on who they are.

What Row-Level Security Is

Row-Level Security, usually shortened to RLS, is a feature that filters the data a user sees inside a Power BI report based on their identity.

The filter is applied at the data level, not the visual level. That means the chart, the table, and any card visuals all reflect the filtered data automatically. There is no manual step the user takes and no way for them to see data they are not supposed to see by clicking through visuals.

RLS is set up by a report or dataset administrator. Once it is in place, it runs silently in the background every time someone opens the report.

Static RLS vs Dynamic RLS

There are two main approaches to configuring RLS, and the right one depends on your setup.

Static RLS

With static RLS, you define a fixed rule for each role. For example, a role called ‘South Region’ might have a DAX filter that says Region = "South". Anyone assigned to that role sees only South data.

Static RLS is straightforward to set up and works well when your user groups are stable and small. The downside is that every new role needs to be created manually, and the list of roles is hardcoded in the model.

Dynamic RLS

Dynamic RLS uses the identity of the logged-in user to determine what they see. A common pattern is to have a table in your dataset that maps email addresses to regions, departments, or client IDs. When the user opens the report, the RLS filter looks up their email and applies the corresponding filter automatically.

This is more work to set up initially but scales much better. Adding a new user or changing their access is as simple as updating the mapping table, not modifying the dataset roles.

What RLS Looks Like in Practice

Here are a few common scenarios where RLS is the right tool:

Scenario What RLS Does
Sales report by region Each regional manager sees only their region’s pipeline and revenue
Financial report by cost centre Each department head sees only their cost centre’s budget and spend
Client-facing analytics Each client sees only their own data, not other clients’
HR report by team Each people manager sees only their direct reports’ data
Franchise or partner network Each franchisee sees only their own location’s performance

How to Set Up RLS in Power BI

RLS is configured in Power BI Desktop, in the Modeling tab.

Step 1 — Define roles: Go to Modeling, then Manage roles. Create a role and write a DAX filter expression that determines what data that role can see. For example, = "South" or = USERPRINCIPALNAME() for dynamic RLS.

Step 2 — Test the role: Use the View As Roles feature to preview what the report looks like when viewed through a specific role. This is the most important step — always verify before publishing.

Step 3 — Publish and assign: Publish the report to Power BI Service. In the dataset settings, go to Security and assign users or groups to each role.

From that point on, RLS is active. Anyone who opens the report is filtered to the data their role permits, with no extra configuration needed.

Common RLS Mistakes to Avoid

  • Testing only with your own account in the Power BI Service — workspace Admins, Members and Contributors are not filtered by RLS, so use View As Roles or a Viewer account. (This does not apply to PowerBI Portal or Robots, where the configured identity is always enforced.)
  • Forgetting to assign users to roles in the Service — defining roles in Desktop without assigning them in Service means nobody gets filtered
  • Using email addresses that do not match the login — in the Power BI Service returns the Microsoft account email; if your users log in differently, the match will fail
  • Not refreshing the mapping table — if you use a dynamic RLS table, it only applies new access when the table is refreshed

RLS in PowerBI Portal and PowerBI Robots

Both PowerBI Portal and PowerBI Robots work directly with RLS configured in your dataset.

In PowerBI Portal, RLS uses the roles you defined in your dataset: you map them once on each report (per user or per group, with tokens), and from then on every user, including external users without a Power BI licence, sees only the data their role permits.

In PowerBI Robots, when the playlist is configured with Row-Level Roles and Row-Level User fields per recipient (using the #RECIPIENT_EMAIL# token for the mapping), each person in a distribution list receives a version of the report filtered to their data. Note that RLS-based delivery in Robots requires a service principal and a Premium or Embedded capacity.

In both cases, RLS does the filtering. The tools apply it.

Frequently Asked Questions

Can users bypass RLS?

No. RLS is applied at the dataset level, not the visual level. A user interacting with filters, slicers, or drill-through in a report cannot access data outside their RLS scope. The filter is enforced by the Power BI engine before the data reaches the visual.

Does RLS work with direct embed and portals?

Yes, as long as the embedding application passes an identity for the user. PowerBI Portal does this from the RLS settings of each report, which is what lets external users without a Microsoft account be filtered.

Does RLS affect performance?

It can, depending on how the rules are written. Complex DAX filters on large datasets may add some query time. For most use cases the impact is negligible. If performance is a concern, consider using DirectQuery with RLS-optimised table structures.

PowerBI Portal applies the Row-Level Security set up on your reports to every user, including external users with no Power BI licence. Start a free trial here.

Discover PowerBI Tiles Suite Tools

Discover our powerful tools to enhance your workflow and maximize efficiency with Power BI solutions.

PowerBI Tiles Pro

PowerBI Tiles Pro

Integrate Power BI into Your Office 365 Workflow: Effortlessly embed and automatically update Power BI reports within PowerPoint, Word, and Outlook. Say goodbye to manual updates and hello to dynamic data visualization.

Embed reports instantly
Book a Demo
PowerBI Robots

PowerBI Robots

Schedule Power BI Report Delivery to Any Recipient: PowerBI Robots automates the capture and distribution of Power BI dashboards and reports, reaching unlimited recipients across multiple locations with ease.

Automate report delivery
Book a Demo
PowerBI Portal

PowerBI Portal

Simplify Power BI Report Sharing with a Scalable Portal: Streamline collaboration by hosting unlimited embedded Power BI dashboards and reports, making data accessible to anyone, anytime with no extra Microsoft licensing costs.

No Power BI needed
Book a Demo
PowerBI Scorecards

PowerBI Scorecards

Streamline KPI Monitoring with Automated Power BI Insights: Automate performance evaluation, enabling real-time data tracking and opportunity identification for proactive decision-making.

Track KPIs automatically
Book a Demo
PowerBI SmartPivot

PowerBI SmartPivot

A set of tools for Microsoft Excel that enhances Pivot Table capabilities, allowing users to perform more tasks with less effort.

Boost Excel power
Book a Demo