cswork / libraryOpen practice workspace

Articles

Power BI Row-Level Security Interview Questions: Roles, Relationships, and Testing

Prepare for Power BI RLS interviews with roles, dynamic user mapping, relationships, additive access, and realistic security testing.

Power BI row-level security interview questions: start with the access rule

An executive should see every region, a manager two, and a salesperson only assigned accounts. The report looks right for its author, but that proves nothing about each viewer. Power BI row-level security (RLS) interviews test whether you can turn an access rule into a model filter, carry it through relationships, and prove the result for actual identities.

This guide covers Power BI RLS interview questions about roles, relationships, dynamic user mapping, and testing. It focuses on semantic-model security, not hiding a visual with DAX.

Quick answer: what does Power BI RLS secure?

RLS filters rows through semantic-model roles. It does not hide selected columns from rows a user can access. Workspace permission matters too: Microsoft documents that RLS applies to Viewers, not Admins, Members, or Contributors. Validate the user’s workspace context before treating a role test as a complete security review.

QuestionPractical answer
Does RLS hide columns?No. It filters rows; consider object-level security for model objects.
Are multiple roles intersected?No. Permissions are additive, so access is the union of allowed rows.
Is a visual filter an access boundary?No. Visual filters are not a replacement for model security.

Static vs. dynamic RLS: when should you use each?

Static RLS uses a fixed role predicate, such as [Region] = "West". It can be easy to audit for a small, stable audience, but maintaining many region-specific roles becomes cumbersome.

Dynamic RLS maps the signed-in identity to one or more entitlements in a user-access table. A typical model has a user-to-region table, a region dimension, and a relationship path to sales facts. The role predicate checks the identity against the mapping; relationships carry the allowed region filter to facts.

USERPRINCIPALNAME() supplies an identity value; it does not define authorization. The mapping table and relationship model decide what that identity can see. Verify the exact identity value in the Power BI service, especially for aliases and external guests.

How do relationships affect RLS propagation?

Test the entire path, not just whether the mapping table contains a row. Check the identity value, mapping key, relationship cardinality and active state, filter direction, and fact table used by the visual. Try unmatched mappings, duplicate entitlements, and users assigned multiple regions.

  1. Confirm the identity the model receives.
  2. Verify the intended mapping row and business key.
  3. Trace the filter through dimensions to the fact table.
  4. Check ambiguous paths before enabling bidirectional filtering.

Build a realistic RLS test matrix

Create a small fixture with known expected rows: one user mapped to West, one to East, and a manager to both. Compare the actual row-level output, not only totals.

Test identityExpected resultFailure caught
One regionOnly assigned regionBasic propagation error
Two entitlementsUnion of assigned regionsIncorrect intersection assumption
No mappingExplicit safe outcomePermissive fallback
Workspace contributorValidate actual workspace contextRole bypass assumption
B2B guestTest using that accountUPN or group resolution issue

“Test as role” helps inspect role filters, but it does not prove what a particular guest sees: dynamic expressions use your identity. Validate identity-specific cases with the real user context.

Common Power BI RLS interview questions

A user sees no rows. What do you check? Compare the runtime identity to the mapping key, then inspect role assignment, DAX predicate, and relationship propagation.

A user sees too many rows. What might be wrong? Check additive role membership, workspace permissions, broad fallback logic, mapping uniqueness, and filter direction.

How do you validate a model change? Test representative identities and edge cases, inspect exact rows and totals, verify service role membership, and use real accounts for guest behavior.

Implementation review checklist

  • Define the access rule in business terms before writing DAX.
  • Choose entitlement grain and document how multiple assignments combine.
  • Verify the identity key returned by the service.
  • Test no-match behavior and the full relationship path.
  • Include multiple roles, workspace roles, guests, and report-level cases.

Bottom line: Explain who the model identifies, which rows the role permits, and how relationships carry that filter to report data. Then prove it with known users and expected rows.

Source: Microsoft Learn: Row-level security with Power BI. Validate current behavior against the model, service, and tenant configuration.

Three quick-reference diagrams

Identity-to-row flow:

Relationship path:

Validation sequence: