SaveMyCert
Log in
5 of 5 free questions left today·for unlimited practice
Implement and manage an analytics solution

Fabric Security and Governance: Workspace Roles, RLS, and OneLake Access

13 min readDP-700 · Implement and manage an analytics solutionUpdated

Microsoft Fabric secures an analytics solution in three stacked layers: workspace roles decide what someone can do inside a workspace, item permissions decide which individual items they can open or query, and data-level controls — row-level security (RLS), column-level security (CLS), object-level security (OLS), dynamic data masking, and OneLake folder-level access — decide which slices of the data they actually see. DP-700 tests whether you can pick the right layer for a requirement and, just as importantly, whether you know where each control is enforced: T-SQL security policies protect the Warehouse and SQL analytics endpoint but not Spark reads against the same Delta files, while OneLake security governs the file paths themselves. This lesson walks through all three layers, the workspace-role capability matrix, sensitivity labels and endorsement from Microsoft Purview, and the audit logs that prove who did what.

What you’ll learn
  • Assign the correct workspace role (Admin, Member, Contributor, Viewer) for a given set of duties
  • Grant item-level access with sharing and item permissions without over-provisioning a workspace role
  • Implement RLS, CLS, and OLS in a Warehouse or SQL analytics endpoint and state where each is enforced
  • Apply dynamic data masking and explain why it is obfuscation, not encryption
  • Configure OneLake folder- and file-level access for Spark and OneLake consumers
  • Govern items with sensitivity labels, endorsement, and Microsoft Fabric audit logs

The three layers of Fabric security

Fabric evaluates access in three layers, and a user needs a path through all of them to reach data: the workspace layer (roles granted on the whole workspace), the item layer (permissions granted on a single Lakehouse, Warehouse, notebook, or report through sharing), and the data layer (RLS, CLS, OLS, dynamic data masking, and OneLake folder security that filter what a permitted user sees inside an item). A workspace role is the broadest grant — it applies to every item in the workspace, including items created later. Item permissions are the surgical alternative: you share one item with a user who has no workspace role at all, and they see only that item.

The layers combine additively for access but each answers a different question. Workspace roles answer "what can you do in this workspace?" Item permissions answer "which items can you touch?" Data-level security answers "which rows, columns, and files can you see once you are inside?" On the exam, requirements phrased as "a user must query only one warehouse" point at item sharing, "analysts must see only their own region's rows" points at RLS, and "the finance team manages all content in the workspace" points at a workspace role.

One principle governs the whole model: grant the least privilege at the narrowest layer that satisfies the requirement. Giving someone the Viewer workspace role when they need one report exposes every item in the workspace; sharing the single report does not.

Workspace roles: Admin, Member, Contributor, Viewer

Fabric has exactly four workspace roles, and their capabilities nest: each role can do everything the roles below it can. Admin owns the workspace itself — only Admins can update or delete the workspace and add or remove other Admins. Member can manage membership below Admin level and share items broadly. Contributor is the working engineer's role: create, edit, and delete items, run notebooks and pipelines, and write data — but no rights to manage who else has access. Viewer is read-only: view items and query data through the SQL analytics endpoint (subject to any SQL-level security), but no OneLake or Spark access to the underlying files.

CapabilityAdminMemberContributorViewer
Update or delete the workspaceYesNoNoNo
Add or remove AdminsYesNoNoNo
Add or remove Members and lower rolesYesYesNoNo
Share items and manage item permissionsYesYesNoNo
Create, edit, and delete itemsYesYesYesNo
Run notebooks, pipelines, and dataflowsYesYesYesNo
Read data via Spark and OneLake file pathsYesYesYesNo
Read data via the SQL analytics endpointYesYesYesYes
View items and reportsYesYesYesYes

Two rows in that table decide most exam questions. First, Contributor cannot share — a scenario where a developer must build content but must not grant access to others is Contributor, not Member. Second, Viewer reads through SQL, not through OneLake — a Viewer querying a Lakehouse uses its SQL analytics endpoint and is subject to any T-SQL security defined there, but cannot open the Delta files with Spark. That distinction is the hinge for the RLS-bypass discussion later in this lesson.

Roles are assigned to individual Microsoft Entra ID users, security groups, Microsoft 365 groups, or distribution lists. Prefer groups: assigning roles to groups keeps access reviews manageable and makes onboarding a membership change instead of a Fabric change.

Item-level access: sharing and item permissions

Item-level access lets a user reach a single item without holding any workspace role, and it is how you serve consumers outside the engineering team. When you share a Warehouse or Lakehouse, the share dialog maps to underlying item permissions: Read lets the recipient connect to the item; ReadData lets them read every table through the SQL analytics endpoint or Warehouse SQL surface; ReadAll lets them read the underlying files directly through OneLake and Apache Spark; Build lets them create reports on the associated semantic model; Reshare lets them pass their access on to others; and Write grants edit rights on the item.

The Read/ReadData/ReadAll split is the load-bearing distinction. A recipient with only Read on a warehouse can connect but sees no data until you grant table access with T-SQL (GRANT SELECT) — this is the pattern for fine-grained SQL security. Granting ReadData opens all tables through SQL, where RLS, CLS, OLS, and masking still apply. Granting ReadAll opens the raw Delta files — and SQL-defined security does not travel to file reads, so ReadAll effectively bypasses RLS and CLS unless OneLake security restricts the paths.

Item permissions also come into play within a workspace: sharing is additive on top of roles, and some permissions (like Build on a semantic model) may need to be granted even to users who can already see the item. When a requirement says "external analysts must query the warehouse tables but must never see the files," the answer is share with ReadData and withhold ReadAll.

Row-level, column-level, and object-level security in SQL

RLS, CLS, and OLS are T-SQL controls defined in a Warehouse or in a Lakehouse's SQL analytics endpoint, and they filter what a user sees when querying through SQL. Row-level security restricts which rows a query returns. You implement it with an inline table-valued function that encodes the predicate — typically comparing a column to USER_NAME() — and bind it with CREATE SECURITY POLICY as a filter predicate on the table. From then on, every SELECT from that table is silently filtered per caller; salespeople querying the same table each see only their own territory's rows.

Column-level security restricts which columns a user can select. It is not a separate feature so much as column-scoped grants: GRANT SELECT ON dbo.Customers (CustomerID, Name, Region) TO [analyst@contoso.com] allows those three columns and nothing else — a query touching the omitted Salary column fails outright. Object-level security works one level up with GRANT, DENY, and REVOKE on whole tables, views, schemas, stored procedures, and functions. A common composite pattern: deny direct table access, expose curated views, and grant SELECT only on the views.

Know the enforcement boundary cold: these controls live in the SQL engine, so they protect the Warehouse and the SQL analytics endpoint — and nothing else. A user who reaches the same Delta tables through Spark or a OneLake file path is not filtered by a security policy. Also distinguish engine RLS from semantic model RLS: Power BI semantic models define their own roles with DAX filter expressions, and models in Direct Lake mode can either enforce their own security or fall back to the SQL endpoint's identity — the two RLS systems are configured separately and do not synchronize automatically. Finally, note that a Lakehouse's SQL analytics endpoint is read-only for data but does accept security DDL, so you can define RLS/CLS/OLS over Lakehouse tables for SQL consumers.

Dynamic data masking

Dynamic data masking (DDM) obfuscates sensitive column values in query results for non-privileged users without changing the stored data. You attach a masking function to a column with ALTER TABLE ... ALTER COLUMN ... ADD MASKED WITH (FUNCTION = '...'). Four functions exist: default() fully masks per data type (strings become XXXX, numbers become 0), email() exposes the first letter and the domain suffix pattern, partial(prefix, padding, suffix) reveals custom leading and trailing characters, and random() substitutes a random number within a range for numeric columns.

Masking applies to users who lack the UNMASK permission. Users holding elevated item or workspace access — Admins, Members, and Contributors — see real values, so DDM is meaningful mainly for shared, ReadData-style consumers. Grant UNMASK (database-wide, or scoped to a schema, table, or column) to selectively reveal true values to specific auditors or applications without rewriting the mask.

The exam expects you to know DDM's limits. It is presentation-layer obfuscation, not encryption: the plaintext is stored and processed normally, and a user with ad-hoc query rights can often infer masked values with predicate probing (WHERE Salary > 100000 still filters on real values). Choose DDM to keep casual eyes off PII in shared query surfaces; choose CLS to block a column entirely; never present DDM as a substitute for access control on the exam or in production.

OneLake security: folder- and file-level access

OneLake security controls access to the data itself — the folders and files under a Lakehouse — for users who come in through OneLake paths, Spark notebooks, or other file-oriented endpoints. This is the layer that closes the gap T-SQL security leaves open. With OneLake data access roles on a Lakehouse, you define named roles that grant Read on specific folders (for example, only Tables/gold or a particular subfolder of Files) and assign users or groups to them. Once data access roles are enabled on a lakehouse, users with ReadAll-style access no longer see everything by default — they see only the folders their roles allow.

This changes the earlier bypass story: without OneLake security, ReadAll means every file; with it, file-path access is itself scoped. The evolution of OneLake security is toward defining security once at the OneLake level — including row and column rules — and having compute engines enforce it consistently, but for exam purposes keep the working model simple: SQL security guards the SQL door, OneLake security guards the file door, and a complete design covers both doors.

Practical guidance: keep raw and sensitive zones in folders that only pipeline identities and engineers can read, expose curated gold folders through data access roles, and route business consumers through the SQL analytics endpoint or semantic model where RLS and CLS apply. Shortcuts deserve a note — a OneLake shortcut's target data is governed by the security of the target location, so shortcutting into a lakehouse does not smuggle anyone past the target's controls.

Sensitivity labels, endorsement, and audit logs

Governance in Fabric answers three questions: how sensitive is this item, can I trust it, and who touched it? Sensitivity labels from Microsoft Purview Information Protection classify items (Public, General, Confidential, Highly Confidential — whatever your organization defines). A label applied to a Fabric item follows the data downstream: it propagates to derived items through inheritance and persists when data is exported to files, where it can drive encryption and usage protection from the Purview side. Labels can be applied manually by item owners, mandated by tenant policy, or inherited from upstream sources. Labeling requires the feature to be enabled in the tenant admin portal and appropriate licensing.

Endorsement is Fabric's trust signal, with three levels. Promoted is self-service: any user with write permission on an item can promote it to signal it is ready for wider use. Certified is controlled: only reviewers explicitly authorized by the tenant admin can certify, marking the item as meeting organizational quality standards. Master data designates an item as the authoritative source of core organizational data — also restricted to admin-authorized users. Endorsed items surface prominently in the OneLake catalog and in search, steering consumers toward trusted content.

Fabric audit logs record user and system operations — item creation, sharing, permission changes, data access — in the unified Microsoft Purview audit log. Compliance teams search them in the Microsoft Purview portal's Audit solution or with the Search-UnifiedAuditLog PowerShell cmdlet; retention depends on your Purview audit plan. For the exam: audit logs are the answer to "determine who shared the warehouse" or "investigate who changed permissions," and they live in Purview, not inside the Fabric workspace UI.

Scenario: locking down a retail sales lakehouse

Requirements: engineers build and load a Lakehouse; a BI team queries curated tables but each analyst may see only their own region's rows; the analysts must never read raw files; salary data must be hidden from everyone but HR; auditors need to know who accessed what. Here is the layered design.

Workspace layer: engineers get Contributor (they build but do not manage access); the data platform lead gets Admin; nobody else gets a workspace role. Item layer: share the Lakehouse with the BI team's Entra ID security group granting SQL analytics endpoint access (ReadData-style) and explicitly not ReadAll — no file-path access. Data layer: on the SQL analytics endpoint, create a security policy with a predicate function mapping USER_NAME() to a region assignment table for RLS; use column-scoped GRANT SELECT so the salary column is selectable only by the HR group; optionally add partial() masking on customer email for the general analyst population. Enable OneLake data access roles so that even engineers' Spark access is scoped to the folders their pipelines own.

Governance: apply a Confidential sensitivity label to the Lakehouse so it propagates to downstream reports and exports; have the authorized reviewer mark the curated gold tables' semantic model as Certified; answer the auditors with Purview audit log searches. Every requirement maps to exactly one layer — which is precisely the mapping skill DP-700 scenario questions test.

Tip. DP-700 tests the security layers as scenario questions: pick the narrowest control that satisfies a requirement — workspace role vs item sharing vs RLS/CLS/OLS vs masking vs OneLake folder security. Expect at least one question hinging on enforcement boundaries: T-SQL security applies only to the Warehouse/SQL analytics endpoint, while ReadAll and Spark reach files directly unless OneLake data access roles intervene. Also memorize the four workspace roles' capability matrix and the endorsement rule that Certified and Master data require tenant-admin-authorized users while Promoted does not.

Key takeaways
  • Fabric security stacks three layers: workspace roles (what you can do), item permissions (which items), and data-level security (which rows, columns, and files).
  • Only Admins manage the workspace and other Admins; Members can share and manage lower roles; Contributors create and edit but cannot share; Viewers read through the SQL analytics endpoint only.
  • Item sharing splits into Read (connect), ReadData (all tables via SQL), and ReadAll (raw files via OneLake/Spark) — withhold ReadAll to keep consumers behind SQL security.
  • RLS (CREATE SECURITY POLICY + predicate function), CLS (column-scoped GRANT), and OLS (GRANT/DENY on objects) are enforced only in the Warehouse and SQL analytics endpoint — Spark and OneLake file reads bypass them.
  • Dynamic data masking obfuscates query output for users without UNMASK; it is not encryption and does not stop inference through predicates.
  • OneLake data access roles add folder- and file-level security inside a Lakehouse, scoping what ReadAll and Spark users can reach.
  • Sensitivity labels (Microsoft Purview) classify and follow data downstream; endorsement is Promoted (any writer), Certified and Master data (admin-authorized users only).
  • Fabric audit logs live in the unified Microsoft Purview audit log — the go-to answer for "who shared/changed/accessed this item."

Frequently asked questions

What is the difference between the Contributor and Member workspace roles in Microsoft Fabric?

Contributor can create, edit, delete, and run items in the workspace but cannot manage access: no sharing items, no adding or removing users. Member can do everything Contributor can plus share items and add users in Member, Contributor, or Viewer roles. If a scenario says a developer must build content but must not grant anyone access, the answer is Contributor.

Does row-level security in a Fabric Warehouse apply to Spark queries?

No. RLS defined with T-SQL security policies is enforced by the SQL engine, so it applies to queries through the Warehouse or the SQL analytics endpoint only. A user who reads the same Delta tables through Spark or a OneLake file path (which requires ReadAll-style access) is not filtered. To protect the file path, restrict ReadAll and use OneLake data access roles on the lakehouse folders.

When should I use dynamic data masking instead of column-level security?

Use column-level security when a user must not access a column at all — their queries against it simply fail. Use dynamic data masking when users should be able to query the column but see obfuscated values (masked emails, zeroed numbers). Remember DDM is presentation-layer only: values are stored in plaintext, privileged users and anyone granted UNMASK see real data, and determined users can infer values through WHERE-clause probing.

Who can endorse an item as Certified in Microsoft Fabric?

Only users explicitly authorized by the Fabric tenant admin can apply the Certified (or Master data) endorsement. Promoted is different: any user with write permission on the item can promote it. This split is deliberate — Promoted is a self-service "ready to use" signal, while Certified represents an organizational quality guarantee applied by designated reviewers.

Where do I find Microsoft Fabric audit logs?

Fabric activity is recorded in the unified Microsoft Purview audit log. You search it from the Audit solution in the Microsoft Purview portal or with the Search-UnifiedAuditLog PowerShell cmdlet, given the right compliance permissions. The logs cover operations like item creation, sharing, permission changes, and access — they are the standard answer for investigating who did what in a tenant.

Do sensitivity labels actually protect the data in Fabric?

Labels are primarily classification metadata that travels with the item and its downstream derivatives, keeping the sensitivity marking visible in reports and exports. Protection comes from what your Microsoft Purview policies attach to the label — for example, encryption and usage restrictions on exported Office files. Inside Fabric, access is still governed by workspace roles, item permissions, and data-level security; labels complement those controls rather than replace them.

Test yourself on this topic
Practice questions with full explanations.
Practice now

Sign up free to mark lessons complete, bookmark topics and track your exam readiness.