Skip to main content
Data Governance

Securing a Microsoft Fabric Estate: Workspace Roles, OneLake Security, RLS and OLS

Making everyone a workspace Admin because it is quicker is how most Fabric estates fail their first security review. Security is not one setting — it is four layers, designed in from the start, on the principle of least privilege.

Amit Kumar Singh - Technology Consulting Partner at MyData Insights

Technology Consulting Partner · MyData Insights

14+ years in industrial data · Former Accenture & EY · India, GCC, SEA

30 September 2026 · 11 min read

The bottom line

Security in Microsoft Fabric is four layers, not one setting, and they must be designed in from the start. A user passes through Microsoft Entra ID groups → workspace roles (Admin, Member, Contributor, Viewer) → OneLake security → row-level and object-level security before reaching data, with sensitivity labels over the top. RBAC grants access by role; ABAC grants by attribute (user region matches data region), and mature estates use both. The single biggest mistake is making everyone a workspace Admin or Contributor because it is quicker — that collapses the layers and makes least privilege impossible to enforce later. Design least privilege in: give each user and service principal only the access their job needs, use groups not individuals, and never hand production admin to a deployment identity that only needs to deploy.

Security Is Not One Setting

The fastest way to fail a Fabric security review is the thing that felt efficient at the time: handing out workspace Admin or Contributor to everyone because it was quicker than thinking about who needs what. That collapses a layered security model into a single flat one, and it is almost impossible to unwind on a live estate.

Security in Microsoft Fabric is not a switch. It is four layers a user passes through before they reach data — Entra groups, workspace roles, OneLake security, and row/object-level security — with sensitivity labels applied over the top. Each layer answers a different question, and each has to be designed, not defaulted.

And it has to be designed in from the start. Retrofitting least privilege after access has been granted broadly, and after sensitive data has already spread, is far harder than building it in — and it is usually forced on you by an audit rather than chosen. So the architect’s job is to design the layers before the pipelines are trusted, not after.

Making everyone a workspace Admin because it is quicker is the most common reason a Fabric estate fails its first security review. Design the layers in; do not flatten them for speed.

RBAC and ABAC

Two access models sit underneath the layers. RBAC — role-based access control — grants access by role: a finance user gets access to the finance workspace because of who they are. It is the backbone of Fabric access, and for most needs it is enough.

ABAC — attribute-based access control — grants access by attribute: a user whose region attribute is UAE sees data whose region attribute is UAE. It handles the cases RBAC cannot express cleanly — access that depends on a match between user and data rather than a fixed role — and it is how you avoid creating a separate role for every region or business unit.

A mature estate uses both: RBAC for the coarse-grained "who can reach this workspace and these items", ABAC and data-level rules for the fine-grained "which rows within it". Knowing when each applies is part of designing security rather than bolting it on.

The Four Layers

Start at identity. Microsoft Entra ID groups are the unit of access — you assign access to groups, not individuals, so joining or leaving a team changes access automatically. This is the foundation everything else builds on, and skipping it (assigning access to named people) is what makes access impossible to audit later.

Then workspace roles decide what a user can do in a workspace: Admin manages everything, Member and Contributor build and edit, Viewer consumes. Most people should be Viewers or Contributors; Admin is for the few who genuinely administer. Below that, OneLake security governs access to the underlying data in OneLake, so workspace access does not automatically mean data access.

Finally, data-level security: row-level security decides which rows a user sees (a sales manager sees only their region), and object-level security decides which tables and columns they can see at all (salary is invisible to those without the right). A user passes through all four — Entra group, workspace role, OneLake security, RLS/OLS — before reaching data, with Purview sensitivity labels marking what needs protecting throughout.

Entra groups → workspace roles → OneLake security → RLS/OLS → data. Four layers, each answering a different question. Assign access to groups, keep most users as Viewers, and never let workspace access imply data access.

Least Privilege in Practice

Least privilege means giving each user and each service only the access their responsibility requires — no more. In practice that reads as: developers get Contributor, analysts get Viewer, administrators get Admin, and pipelines run under a service principal scoped to exactly what they touch. Nobody gets Admin "just in case".

The test is simple and worth applying to every grant: what breaks if this person or service could not do this? If the honest answer is "nothing they are actually responsible for", the access is too broad. Broad access is not a convenience — it is a standing liability that widens the blast radius of any mistake or compromise.

This is also what makes wider AI access safe. A Fabric Data Agent or Copilot inherits the security of the data it reasons over, so if RLS and OLS are properly designed, natural-language access does not become wider data exposure — a user asking a question in plain English still only gets answers from data they are entitled to see. Least privilege is the reason AI over your data can be opened up without opening up the data.

Service Principals and Deployment

Automation needs identity too, and it is where over-granting quietly creeps in. Create a dedicated service principal for deployment — not a personal account, not a shared admin — and scope it to exactly the workspaces and actions it needs. A deployment identity that promotes artefacts to QA needs rights in QA, not tenant admin.

The same discipline applies to environment-specific secrets and connections: DEV, QA, UAT and PROD each have their own, managed securely and never hard-coded, so a promotion moves the artefact without moving production credentials into a developer’s hands. Secrets in code and shared admin identities are two of the most common findings in a real Fabric security review.

Handing tenant admin to a service principal because it makes the pipeline "just work" is the automation version of making everyone a workspace Admin — the same mistake, harder to spot. Scope it down, and the estate stays auditable.

So What — Design It In

Security in Fabric is layered, and the layers only hold if they are designed in from the start: Entra groups at the base, workspace roles above, OneLake security below that, RLS and OLS at the data, sensitivity labels throughout, least privilege as the rule, and scoped service principals for automation. RBAC for the coarse grain, ABAC and data rules for the fine grain.

Do it early and it is straightforward and auditable. Do it late — after everyone is an Admin and sensitive data has spread — and it is a painful, risky retrofit usually triggered by a failed audit. The choice of when is the real decision, and the architect makes it at design time, not after the incident.

We build Microsoft-first by default, and the same layered discipline maps to a Databricks estate through Unity Catalog’s row- and column-level security and access model. The controls differ; the principle does not — least privilege, designed in, in layers.

Layered, least-privilege, designed in from the start — Entra groups, workspace roles, OneLake security, RLS/OLS, sensitivity labels, scoped service principals. Retrofitting security after an audit is the expensive way to learn this.

If your Fabric estate handed out Admin freely and now faces a security review, or you are opening it up to Copilot and want the access model right first, that is worth 30 minutes. We will look at your layers, least privilege and what an audit would find. With Amit. No slides. No pitch deck. No obligation to proceed.

Free Assessment

Where does your operation sit on the data maturity curve?

8 questions. 3 minutes. You get a scored breakdown across data infrastructure, analytics readiness, and automation potential — with a specific next step for your industry.

Data GovernanceMicrosoft FabricOneLakeSecurityData Platform

Your Data · Our Technology · Our Automation

Get practical insights every fortnight

Amit writes about Microsoft Fabric, Power BI, AI in operations, and digital transformation for manufacturing and supply chain leaders. Practitioner perspective - no fluff, no vendor spin.

No spam. Unsubscribe any time. Also on Substack.

FAQ

Common questions

How do you secure a Microsoft Fabric estate?

In four layers, designed in from the start. A user passes through Microsoft Entra ID groups → workspace roles (Admin, Member, Contributor, Viewer) → OneLake security → row-level and object-level security before reaching data, with Purview sensitivity labels applied throughout. Access is assigned to groups, not individuals; most users are Viewers or Contributors; and least privilege is the rule for both people and service principals. The mistake to avoid is flattening these layers by making everyone an Admin because it is quicker.

What is the difference between RBAC and ABAC?

RBAC — role-based access control — grants access by role: a finance user reaches the finance workspace because of their role. ABAC — attribute-based access control — grants access by matching attributes: a user whose region is UAE sees data whose region is UAE. RBAC is the backbone for coarse-grained "who can reach this"; ABAC and data-level rules handle fine-grained access that depends on a user-to-data match. A mature Fabric estate uses both.

What is the difference between row-level and object-level security?

Row-level security (RLS) decides which rows a user sees within a table — a sales manager sees only their region’s rows. Object-level security (OLS) decides which tables and columns a user can see at all — salary might be invisible to users without the entitlement. RLS filters the data horizontally, OLS restricts the schema; both sit at the data layer, below workspace and OneLake security, as the last gate before a user reaches data.

Why should you not make everyone a workspace Admin in Fabric?

Because it collapses a layered security model into a flat one and makes least privilege impossible to enforce afterwards. Broad access widens the blast radius of any mistake or compromise, spreads sensitive data, and is almost impossible to unwind on a live estate. Most users should be Viewers or Contributors, with Admin reserved for the few who genuinely administer — and that design has to be set at the start, not retrofitted after a failed audit.

How does Fabric security keep AI agents safe?

A Fabric Data Agent or Copilot inherits the security of the data it reasons over. If row-level and object-level security are properly designed, a user asking a question in natural language only gets answers from data they are entitled to see — so wider natural-language access never becomes wider data exposure. Least privilege at the data layer is precisely what lets you open AI over company data without opening up the data itself.

Related FAQs

Questions operations leaders ask

Is this the challenge you're facing?

Book a 30-minute call. We'll look at your specific operation and tell you what's achievable - plainly and without slides.