LevelUpWith

Explore / Microsoft Fabric Analytics Engineer (DP-600) Exam Prep / Lesson 2

Lesson 2: Workspace-Level Access Controls

[Maintain a data analytics solution – Implement security and governance] Learn how the Fabric workspace roles Admin, Member, Contributor and Viewer control what users and groups can create, edit, share and read across every item in a workspace.

Free to read, no account needed. Part of Microsoft Fabric Analytics Engineer (DP-600) Exam Prep.

By the end of this level you'll be able to

  • Assign workspace roles to users, security groups and service principals in the Fabric portal
  • Pick the least-privileged workspace role for a given scenario, such as a report author versus a business reader
  • Explain why Viewer access alone does not give read access to OneLake files or the data behind a SQL analytics endpoint

Why workspace roles come first

A reminder before we start: this course follows Microsoft's free Study guide for Exam DP-600 on Microsoft Learn. We don't reproduce the guide here, the course is independent of Microsoft and not endorsed by it, and no course can promise you a pass.

The first bullet under Implement security and governance is Implement workspace-level access controls. In Fabric, the workspace is the outer security boundary. It is a container that sits on top of OneLake, and a role you assign there applies to every item inside it: lakehouses, warehouses, notebooks, semantic models, reports. If you build Power BI models, you already know the four roles. Fabric keeps the same four and adds data engineering and data access rights to each one.

An analogy: think of the workspace as an office building. Admin owns the building. Member can hand out keys, but never a master key. Contributor can work in every room and rearrange it, but can't give out keys. Viewer can walk through and look at things, but doesn't get into the stockroom where the raw data files are kept.

What each role can do

Capability Admin Member Contributor Viewer
Update and delete the workspace, connect it to Git, create a workspace identity ✅
Add or remove people, including other admins ✅
Add members or people with lower permissions ✅ ✅
Publish, unpublish and change permissions for an app ✅ ✅
Allow others to reshare items ✅ ✅
Create, edit and delete items (lakehouses, warehouses, notebooks, reports) ✅ ✅ ✅
Run or cancel pipelines and notebooks ✅ ✅ ✅
Read lakehouse/warehouse data through Spark, OneLake APIs, Lakehouse explorer (ReadAll) ✅ ✅ ✅
Connect to a SQL analytics endpoint or Warehouse and read with T-SQL (ReadData) ✅ ✅ ✅ ✅
View and interact with items ✅ ✅ ✅ ✅

Two details people often miss:

  • Members can't change an existing user's role and can't remove anyone. A Member can only add people as Member, Contributor or Viewer. To upgrade a Viewer to Contributor, an Admin has to do it.
  • On a Warehouse or SQL analytics endpoint, Admin, Member and Contributor all get CONTROL. Viewer gets only CONNECT and ReadData, which works like a read-only database role.

Walkthrough 1: assign roles in the portal

You need Admin or Member on the workspace to do this.

1. Open the workspace → select "Manage access" on the command bar
   (sometimes it's under More options "...")
2. Select "Add people or groups"
3. Type a name or email: a user, security group, mail-enabled security
   group, distribution list, Microsoft 365 group, or service principal
4. Pick a role (Admin / Member / Contributor / Viewer) → "Add"
5. To change a role later, use Search in the panel and open the role dropdown

Gotcha: a change to workspace access only takes effect the next time the user signs in to Fabric. If a user says "I still can't see it", ask them to sign out and back in before you start debugging.

Walkthrough 2: assign a service principal with the REST API

In CI/CD you'll often grant a Microsoft Entra service principal (an app registration) a role. Service principals get the same permissions as users for API operations.

# Caller needs Member or higher on the workspace
# Delegated scope: Workspace.ReadWrite.All
POST https://api.fabric.microsoft.com/v1/workspaces/{workspaceId}/roleAssignments

{
  "principal": {
    "id": "<object-id-of-the-service-principal>",
    "type": "ServicePrincipal"   // also: User, Group
  },
  "role": "Contributor"           // Admin | Member | Contributor | Viewer
}

# → 201 Created, with the new role assignment in the body

A deployment principal usually needs Contributor so it can create and update items. Admin is rarely justified.

Groups, not people

Assign roles to security groups, not to individuals. Everyone in the group gets the role, nested groups pass the role down to their members, and a person who belongs to several groups gets the highest of their roles. A workspace can hold at most 1,000 users or groups in its roles, but a single group can contain as many people as you like. That limit is another reason to use groups.

Pitfall: if Ana is in Sales-Readers (Viewer) and Sales-Authors (Contributor), she is a Contributor. When someone can do more than you expected, look at their group memberships first.

Picking the least-privileged role

Scenario Role
Business reader who opens reports Viewer
Report author or data engineer building items Contributor
Team lead who publishes the app and onboards colleagues Member
Owner who manages Git connection, settings, deletion Admin

There's one more reason to make readers Viewers. Row-level security on Power BI items is enforced for Viewers. Roles that can edit the model see all its rows. You'll configure RLS in a later level. For now, remember that giving a reader Contributor quietly turns RLS off for them.

Why Viewer doesn't mean "can read the lake"

This is the subtle part. A lakehouse holds its data as Delta files in OneLake and exposes it in two ways:

-- As a Viewer, connected to the lakehouse's SQL analytics endpoint:
SELECT TOP 5 CustomerKey, Region FROM dbo.DimCustomer;
-- ✅ Works: Viewer has CONNECT + ReadData (T-SQL over the TDS endpoint)
# Same Viewer, in a Spark notebook or through OneLake APIs:
df = spark.read.format("delta").load("Tables/DimCustomer")
# ❌ Fails: reading the files needs ReadAll, which Viewer doesn't have.
# The Lakehouse explorer won't show the table data either.

So a Viewer gets read access only through the SQL engine, never to the files behind it. That's deliberate. The SQL endpoint can apply SQL-level permissions, but anyone reading the raw files skips those controls. To let a Viewer read files you have to grant something extra, such as item permissions or OneLake security roles. Those come in later levels.

What the exam asks about this

Expect short scenarios like "a user must create notebooks but must not manage access: which role?" (Contributor), "who can connect the workspace to Git?" (Admin only), and "a Viewer can query the SQL analytics endpoint but a Spark notebook fails: why?" (no ReadAll). The exam rewards least privilege, so pick the lowest role that meets the requirement.

Key takeaways

  • The four roles are Admin, Member, Contributor and Viewer, and they apply to every item in the workspace.
  • Only Admin can delete the workspace, connect it to Git or add Admins. Members can add people at Member level or below, but can't change existing roles.
  • Contributor creates, edits and runs items. Choose it for authors and engineers.
  • Assign roles to security groups. When someone is in several groups, the highest role wins. Access changes apply at the next sign-in.
  • Viewer gets T-SQL ReadData on SQL analytics endpoints and warehouses, but no ReadAll: no Spark, no OneLake APIs, no Lakehouse explorer data.

A 6-question knowledge check follows this lesson in the app, free and without an account.

Keep going: levels 3 and 4 are free

Create a free account to open the next two levels, save your progress and pick up where you left off. No card needed.

Next: Level 3, Item-Level Access Controls.

Create a free account →See the whole course

More like this

  • Microsoft Azure AI Apps and Agents Developer (AI-103) Exam Prep

    Prepare for Microsoft Exam AI-103 (skills measured as of April 16, 2026), working through every bullet of Microsoft's free study guide on Microsoft Learn with…

    Exam prep · AI-103 · AI & Agents · Expert · 50 levels · 4 free · Professionally curated by levelupwith.com

  • Copilot Across Fabric, Power BI and Microsoft 365

    Make your Power BI semantic models and Fabric data AI-ready, then set up Copilot, Fabric data agents and Microsoft 365 Copilot so colleagues get trustworthy, p…

    Course · Microsoft · Data & Analytics · Capable · 19 levels · 4 free · Professionally curated by levelupwith.com

  • Microsoft Azure Fundamentals (AZ-900) Exam Prep

    Learn to pick the cloud model, service type or Azure service that fits a scenario and explain why the alternatives do not, across every skill in the 20 July 20…

    Exam prep · AZ-900 · Cloud & Compute · Capable · 17 levels · 4 free · Professionally curated by levelupwith.com

  • Microsoft Azure Administrator (AZ-104) Exam Prep

    Work through every bullet of the AZ-104 skills measured as of April 17, 2026, learning each task in the Azure portal, Azure CLI, PowerShell, and ARM templates…

    Exam prep · AZ-104 · Cloud & Compute · Expert · 60 levels · 4 free · Professionally curated by levelupwith.com

  • Support Pro: Helping Users Move to Microsoft 365

    Help users get through a move from Google Workspace to Microsoft 365, from the week before cutover to the first tickets afterwards. You will learn what moves a…

    Course · Microsoft · Suite Support Pro: Configure and Fix · Expert · 40 levels · 4 free · Professionally curated by levelupwith.com

  • Microsoft 365 Support Pro: Copilot for End Users

    Learn to work out which Copilot a user actually has, and to fix the everyday Copilot tickets: missing buttons, licence and sign-in problems, files Copilot can'…

    Course · Microsoft · Suite Support Pro: Configure and Fix · Expert · 36 levels · 4 free · Professionally curated by levelupwith.com