πŸ‘€ Who is this for?

IT Admin Security Engineer Data Architect β€” A layered reference for designing, implementing, and auditing Microsoft Fabric security.

Security

Defense-in-Depth Security Model

Microsoft Fabric implements a layered security approach β€” every layer adds protection so that no single breach compromises your entire estate. Click any layer to jump to its section.

πŸ’‘ Key Principle

Defense-in-depth means no single layer is sufficient on its own. Even if an attacker bypasses identity controls, workspace isolation, data-level security, and network restrictions each provide additional barriers. Implement all layers for a robust security posture.

Layer 1

Identity & Access Management

Microsoft Entra ID is the single identity provider for all Fabric access β€” every request is authenticated before it reaches any resource.

Human Identity

πŸ”‘ Microsoft Entra ID

All Fabric authentication goes through Entra ID. Users sign in with organizational accounts, and every API call requires a valid Entra token.

  • Single Sign-On (SSO) β€” seamless access across Fabric, Power BI, and Microsoft 365
  • Multi-Factor Authentication (MFA) β€” enforce MFA for all users, especially admins
  • Entra ID Groups β€” assign workspace roles and security policies to groups, not individuals

🚦 Conditional Access

Use Entra ID Conditional Access policies to control how and from where users access Fabric.

  • Location-based β€” restrict to trusted networks or named locations
  • Device compliance β€” require Intune-compliant or domain-joined devices
  • Session controls β€” enforce sign-in frequency, block persistent sessions
  • Risk-based β€” step-up MFA for risky sign-ins detected by Entra ID Protection

Workload Identity

πŸ€– Service Principals

Use service principals for automation and CI/CD pipelines instead of user accounts.

  • Enable "Service principals can use Fabric APIs" in admin portal
  • Assign to security groups for scoped access
  • Use certificates over secrets β€” shorter rotation, no password leaks
  • Apply Conditional Access policies to restrict where they operate

πŸ”— Managed Identities

Managed identities enable credential-free authentication from Fabric to Azure resources.

  • System-assigned β€” lifecycle tied to the Fabric resource
  • User-assigned β€” reusable across multiple resources
  • Use for connecting to ADLS, Key Vault, SQL without storing credentials

Workspace Identity

Each Fabric workspace can have an automatically managed workspace identity β€” an Entra ID service principal tied to the workspace lifecycle. It enables credential-free, secure access from Fabric items to external Azure resources without managing secrets or certificates.

πŸͺͺ What It Is

  • A managed Entra ID service principal automatically created for the workspace
  • Authenticates the workspace (not a user) when accessing external resources
  • Credentials managed entirely by Fabric β€” no secrets or certificates to rotate
  • Automatically deleted when the workspace is removed
  • Registered in the tenant's Entra ID as an app registration you can assign RBAC roles to

βš™οΈ How to Enable

  1. Open workspace Settings β†’ Identity
  2. Toggle "Workspace identity" to On
  3. Copy the generated Application (client) ID and Object ID
  4. On the target Azure resource (e.g., ADLS Gen2), assign RBAC roles using the identity's Object ID
  5. Configure Fabric items to use "Workspace Identity" as the authentication method

Supported Scenarios

OneLake ShortcutsConnect to secured ADLS Gen2 using resource instance rules.
Data Pipelines & Copy JobsRead from or write to protected storage without user credentials.
Dataflows Gen2Authenticate supported source connections with the workspace identity.
T-SQL COPY INTOUse CREDENTIAL = 'WorkspaceIdentity' for supported bulk loads.
Semantic ModelsRefresh supported imports from secured Azure storage.
Spark NotebooksRequest workspace identity tokens for supported Azure resources.

Trusted Workspace Access

Trusted workspace access allows Fabric to securely connect to firewall-enabled or private-endpoint–only Azure storage accounts β€” without opening public network access.

πŸ”’ How It Works

  1. Storage account has public access disabled (firewall-only)
  2. Add a resource instance rule on the storage account that trusts the specific Fabric workspace
  3. Workspace identity authenticates with Entra ID and presents the workspace's identity token
  4. Azure Storage validates the token against the resource instance rule and grants access

No VNet, private endpoint, or IP whitelisting required from the Fabric side.

πŸ›‘οΈ Configuration Steps

  1. Enable workspace identity (see above)
  2. Create the storage account resource instance rule using an ARM template or PowerShell β€” Fabric workspace rules cannot be added from the Azure portal UI
  3. Use resource type Microsoft.Fabric/workspaces with the fixed Fabric resource ID format:
    /subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/Fabric/providers/Microsoft.Fabric/workspaces/{workspaceId}
  4. Assign RBAC (e.g., Storage Blob Data Contributor) to the workspace identity's Object ID
  5. In Fabric, configure the connection with "Workspace Identity" auth

The subscription GUID and resource group name above are literal constants required by Fabric β€” only {workspaceId} changes.

OnCopy & OnWrite Access Patterns

πŸ“₯ OnCopy (Read from firewalled storage)

  • Fabric reads data from ADLS behind a firewall during copy/ingest operations
  • Requires Storage Blob Data Reader role on the workspace identity
  • Used by: Shortcuts, Copy Activity, T-SQL COPY INTO, Dataflows Gen2
  • Data is copied into OneLake β€” subsequent reads don't hit the external source

πŸ“€ OnWrite (Write back to firewalled storage)

  • Fabric writes results or exports data back to protected ADLS accounts
  • Requires Storage Blob Data Contributor role on the workspace identity
  • Used by: Data Pipelines (sink), Spark notebooks, Warehouse CETAS
  • Supports incremental write patterns for ETL/ELT pipelines
Requirements, limitations, and known issues
  • F SKU needed for Trusted Workspace Access β€” workspace identity itself can be created in any workspace, but consuming it for trusted workspace access requires a purchased F SKU capacity
  • No personal workspaces β€” "My Workspace" cannot have a workspace identity
  • One identity per workspace β€” you cannot create multiple identities for a single workspace
  • Identity name = workspace name β€” the identity's display name always matches the workspace name and cannot be customized
  • Admin role required β€” only workspace Admins can enable/manage the identity
  • RBAC propagation delay β€” after assigning roles, allow up to 5 minutes for changes to take effect
  • No cross-tenant support β€” workspace identity can only access resources in the same Entra ID tenant
  • Do NOT modify the app registration β€” deleting or renaming the Entra ID service principal/app registration behind the identity will break Fabric functionality (adding API permissions is safe)
  • Implicit trust within workspace β€” anyone with a workspace role (Member, Contributor) can assume the identity for supported operations; follow least-privilege workspace role assignments
  • Connector coverage is evolving β€” not all Fabric connectors support workspace identity authentication yet; check the latest docs for your specific data source
  • Contributor role removed (July 2025) β€” workspace identity no longer gets automatic Contributor access; admins must explicitly assign roles on target resources
⚠️ Common Mistakes
  • Don't use personal user accounts for scheduled refreshes, pipelines, or automated processes β€” if that user leaves, all dependent workloads break
  • Don't forget to add the resource instance rule on the storage account β€” RBAC alone won't bypass the firewall
  • Don't confuse workspace identity with managed identity for Azure resources β€” workspace identity is Fabric-specific
Layer 2

Workspace Security

Workspaces are the primary security boundary in Fabric β€” they determine who can access, create, and manage artifacts.

Built-in Workspace Roles

RolePermissionsTypical AssignmentOneLake Access
AdminFull control: manage access, delete workspace, configure settingsWorkspace owners, IT adminsFull
MemberCreate, edit, delete artifacts; publish reports; share itemsData engineers, developersFull
ContributorCreate and edit artifacts; cannot manage workspace access, but can share individual items when granted ReshareAnalysts, junior developersFull
ViewerView and interact with artifacts (read-only); can also reshare items if granted ReshareBusiness users, stakeholdersRestricted by OneLake security roles
πŸ”‘ Critical Distinction

Admin, Member, and Contributor roles have full read/write access to all OneLake data in the workspace, so they bypass OneLake security roles. Those roles apply to users in the Viewer role or to users granted item-level Read access. Design your workspace access carefully β€” don't give Member/Contributor access to users who should only see a subset of data.

Workspace Isolation Patterns

πŸ—οΈ Environment Separation

Separate workspaces for Dev β†’ Test β†’ Prod. Each environment has its own access list, ensuring developers can't accidentally modify production data.

🏒 Domain Boundaries

Organize workspaces into Fabric Domains (Finance, Marketing, HR) so domain owners can apply delegated governance settings. Note that domain assignment is an organizational and discoverability construct β€” it does not by itself change item visibility or access.

πŸ”’ Sensitivity Tiers

Create separate workspaces for sensitive vs. non-sensitive data. Apply stricter Conditional Access and audit policies to high-sensitivity workspaces.

⚑ Capacity Isolation

Assign critical workspaces to dedicated capacities. This provides resource isolation and ensures one team's heavy workloads don't impact another's.

βœ… Best Practice

Use Entra ID security groups for role assignments instead of individual users. This makes access auditable, scalable, and easy to update when team members change.

Layer 3

Item-Level Permissions

Beyond workspace roles, you can grant granular permissions on individual items β€” reports, semantic models, warehouses, and more.

Permission Types

ℹ️ Permission Availability Varies

Not every Fabric item supports every permission below. Confirm the item's permission panel and documentation before designing an access model around ReadAll, ReadData, Execute, or Reshare.

PermissionWhat It AllowsHow It's Granted
ReadView and interact with the itemSharing dialog, app audience, direct link
ReadAllAccess the underlying data in OneLake (files and folders)Item permissions panel
ReadDataQuery data via SQL analytics endpointItem permissions panel
WriteEdit the item (notebooks, reports, pipelines)Workspace role (Contributor+) or item-level grant
ReshareShare the item with other usersSharing dialog option "Allow recipients to share"
ExecuteRun pipelines or notebooksItem permissions panel

Sharing & Distribution

πŸ“€ Direct Sharing

Share individual items with specific users or groups. Choose whether recipients can reshare or build on the data. Use sparingly β€” it creates hard-to-audit one-off permissions.

πŸ“± Fabric Apps

Package reports and dashboards into an app with defined audiences. Apps provide a curated, read-only experience β€” the recommended way to distribute content to business users.

🏷️ Endorsement Signals

  • Promoted β€” workspace members mark items as reliable and ready for use
  • Certified β€” designated reviewers certify items meet governance standards

Endorsed items appear with badges in search, making trusted data easy to find.

⚠️ Avoid Permission Sprawl

If you find yourself sharing dozens of items individually, you probably need to redesign your workspace structure. Prefer workspace roles + apps over per-item sharing. Run the access review in Admin Portal quarterly to clean up stale permissions.

Layer 4

Data-Level Security

Control exactly which rows, columns, and objects each user can see β€” even when they have access to the item itself.

Choose the Right Control

Rows: RLS

Filter records by user, region, department, or another business attribute in Warehouse, semantic models, or OneLake.

Columns: CLS

Prevent roles from querying sensitive columns in Warehouse or through OneLake security policies.

Objects: OLS

Hide tables, folders, schemas, or model objects through OneLake or semantic-model security.

Values: DDM

Return masked values to nonprivileged SQL users while keeping the stored data unchanged.

Source Policy: OneLake

Define object, row, and column access at the data source for enforcement through supported engines.

πŸ“ Where the Policy Lives Matters

Warehouse SQL controls apply to SQL queries, semantic-model roles apply through Power BI, and OneLake policies apply at the shared data source through supported engines. Choose the lowest layer that must consistently enforce the requirement.

Row-Level Security (RLS)

RLS filters data at query time so users only see rows they're authorized to access. Available in Power BI semantic models and Fabric Warehouse.

Implementation example: Warehouse RLS
T-SQL β€” Row-Level Security in Warehouse
-- Create a security predicate function
CREATE FUNCTION dbo.fn_security_predicate(@Region AS nvarchar(50))
RETURNS TABLE
WITH SCHEMABINDING
AS
RETURN SELECT 1 AS result
WHERE @Region = USER_NAME()
   OR USER_NAME() = 'admin@contoso.com';

-- Apply security policy to a table
CREATE SECURITY POLICY RegionFilter
ADD FILTER PREDICATE dbo.fn_security_predicate(Region)
ON dbo.SalesData
WITH (STATE = ON);
πŸ’‘ RLS in Power BI

Define roles and DAX filter expressions in Power BI Desktop. Test with "View as role" before publishing. RLS is enforced in the Power BI service, apps, and embedded scenarios β€” but not when querying the underlying lakehouse directly.

Column-Level Security (CLS)

CLS restricts access to specific columns using standard SQL GRANT and DENY statements in Fabric Warehouse.

Implementation example: Warehouse CLS
T-SQL β€” Column-Level Security
-- Deny access to salary column for a specific role
DENY SELECT ON dbo.Employees(Salary, SSN) TO [LimitedAccess];

-- Grant access to only specific columns
GRANT SELECT ON dbo.Employees(EmployeeId, Name, Department) TO [LimitedAccess];

Object-Level Security (OLS)

OLS hides entire tables or columns from specific users in Power BI semantic models. Unlike CLS which returns an error, OLS makes the object completely invisible β€” users don't even see it in field lists.

Dynamic Data Masking (DDM)

DDM masks sensitive data in query results without changing the stored data. Non-privileged users see masked values; privileged users see the original. Available in both Fabric Warehouse and Lakehouse SQL analytics endpoint.

Implementation example: Dynamic Data Masking
T-SQL β€” Dynamic Data Masking in Warehouse / Lakehouse SQL Endpoint
-- Mask email column with partial masking
ALTER TABLE dbo.Customers
ALTER COLUMN Email ADD MASKED WITH (FUNCTION = 'email()');

-- Mask phone with custom partial mask (show last 4 digits)
ALTER TABLE dbo.Customers
ALTER COLUMN Phone ADD MASKED WITH (FUNCTION = 'partial(0,"XXX-XXX-",4)');

-- Full mask on SSN (returns "xxxx")
ALTER TABLE dbo.Customers
ALTER COLUMN SSN ADD MASKED WITH (FUNCTION = 'default()');

-- Grant UNMASK to privileged roles
GRANT UNMASK ON dbo.Customers TO [PrivilegedAnalysts];
πŸ”’ Layer Your Data Controls

DDM, RLS, CLS, and OLS are complementary, not alternatives. A robust setup uses RLS to filter rows, CLS to restrict columns, DDM to mask remaining sensitive values, and OLS to hide objects from Power BI users who shouldn't see them at all.

Layer 5

OneLake Security

The unified data-plane security model for OneLake β€” define access once across objects, rows, and columns, then enforce it through supported analytics engines.

πŸ” Control Plane vs. Data Plane

Workspace roles and item permissions form the control plane: they govern who can discover, configure, share, or manage an item. OneLake security roles form the data plane: they govern which data a principal can read or write inside the item. A secure design evaluates both planes.

Model at a Glance

OneLake Security Role Model

πŸ”‘ Permissions & Type

Roles use a grant-only model. Grant Read, or ReadWrite where the item type supports granular writes.

  • No explicit deny role type
  • ReadWrite can apply to selected folders and tables
  • A grant from another role can expand effective access

πŸ—‚οΈ Data in Role

Scope a role to structured or unstructured data, from broad containers down to fine-grained table policies.

  • OLS: schemas, tables, folders, and subfolders
  • CLS: selected columns in Delta or virtualized Iceberg tables
  • RLS: row-filter expressions for tabular data

πŸ‘₯ Members in Role

Assign Microsoft Entra users, security groups, or non-user identities directly, or use virtual membership based on Fabric permissions.

  • Prefer security groups over individual assignments
  • Review the built-in DefaultReader role
  • Remove users from DefaultReader when assigning restricted roles

How Policies Are Evaluated

Within one role: all restrictions apply

The user receives only the objects, rows, and columns allowed by every control in that role.

OLS ∩ RLS ∩ CLS
Across roles: grants accumulate

Access provided by any role generally contributes to the user's effective permissions.

Role 1 βˆͺ Role 2 βˆͺ ...
SQL endpoint columns: stricter behavior

If any applicable role hides a column, the SQL analytics endpoint blocks that column.

Shortcuts: the source cannot be bypassed

Effective access is limited by permissions at both the shortcut location and its target.

Shortcut access ∩ target access
⚠️ Keep Related RLS and CLS Together

When row and column restrictions must apply together, define them in the same OneLake security role. Unsupported combinations across separate roles can cause query failures, and grants from another role can unintentionally broaden access.

Central Policy, Distributed Enforcement

OneLake stores the security definitions and calculates each principal's effective access. A supported query engine receives that effective policy and enforces it during query execution. This enables engine-native filtering and optimization while keeping OneLake as the source of truth.

Supported Lakehouse & Spark

Enforces OLS, RLS, and CLS for supported tables and runtime versions.

Configuration required SQL Analytics Endpoint

Use querying-user identity mode so policies are evaluated per user.

Configuration required Direct Lake

The semantic model must use Direct Lake on OneLake mode.

Preview Authorized External Engines

Retrieve effective access and enforce the policy in their own query layer.

Protected by blocking Unauthorized External Engines

Partially secured RLS or CLS tables are blocked rather than returned without filtering.

Shortcut Security

➑️ Passthrough

The querying user's identity is evaluated at the target. This is the default for same-tenant OneLake-to-OneLake shortcuts.

πŸ”— Delegated

A connection identity accesses the target, while OneLake security limits what the calling user can consume through the shortcut.

πŸ›‘οΈ Most Restrictive Path

Effective access is constrained by both the shortcut location and its target. Source policies remain authoritative in downstream workspaces.

Operate the Model

πŸ“š Manage with Catalog Secure

Review principals, update workspace roles in bulk, and administer OneLake roles across workspaces. See Catalog & Governance for the wider catalog experience.

πŸ“‹ Audit with OneLake Diagnostics

Stream API, application, engine, and shortcut access events into a lakehouse. Use the Fabric audit log for control-plane changes such as role edits and sharing.

Key Limitations & Considerations

Workspace role bypass

Admins, Members, and Contributors already have broad data access. Use Viewer or item-level Read for restricted consumers.

DefaultReader

Edit or remove this broad ReadAll assignment before expecting a restricted custom role to reduce lakehouse access.

Metadata exposure

Values remain protected, but some experiences and error messages can still reveal table or column names.

Propagation

Role changes take minutes; Entra group updates and engine caches can take substantially longer.

Scale

Design for documented role, member, and permission limits. Prefer group-based roles over one role per user.

B2B and group types

Guests need compatible Entra settings, and some engines can't resolve distribution-list membership.

βœ… Recommended Architecture

Keep authoritative data and security policies in a primary workspace, assign consumers Viewer plus the appropriate OneLake roles, and expose the secured source to downstream workspaces through shortcuts. This avoids duplicating policies and keeps source owners in control.

Layer 6

Information Protection

Classify, label, and protect data throughout its lifecycle with Microsoft Purview and Data Loss Prevention policies.

1. ClassifyApply sensitivity labels and identify sensitive information.
2. DetectEvaluate supported items with DLP and governance policies.
3. ProtectRestrict item access, protect exports, and apply encryption where supported.
4. AuditInvestigate alerts, policy matches, access changes, and AI activity.

Sensitivity Labels

Microsoft Purview sensitivity labels (e.g., "Public," "Internal," "Confidential," "Highly Confidential") can be applied to Fabric artifacts to classify and protect data.

🏷️ How Labels Work

  • Applied to lakehouses, warehouses, semantic models, reports, and more
  • Labels flow downstream automatically β€” a labeled lakehouse passes its label to reports built on it
  • Labels can enforce encryption on exported files (Excel, PDF, PowerPoint)
  • Labels are visible in workspace lists, search results, and lineage views

βš™οΈ Configuration

  • Define labels in the Microsoft Purview compliance portal
  • Set auto-labeling policies to automatically apply labels based on content patterns (e.g., credit card numbers, SSNs)
  • Enable mandatory labeling in Fabric admin portal β€” fully enforced for Power BI items, with expanding support for other Fabric items
  • Control who can apply or change specific labels with label scoping

Data Loss Prevention (DLP)

DLP policies for Fabric and Power BI evaluate supported items when their data changes, helping surface and contain sensitive data.

⚠️ Scope Limits

Fabric DLP does not act as a generic export/download block across the platform, and DLP is not currently supported for Copilot in Fabric AI interactions. Verify supported item types in the current Microsoft Purview documentation before relying on DLP as a control.

Encryption & Key Management

πŸ” Encryption at Rest

All data stored in OneLake is encrypted at rest using Microsoft-managed keys by default. For regulated workloads, enable customer-managed keys (CMK) to retain control of your encryption keys via Azure Key Vault.

πŸ”’ Encryption in Transit

All communications use TLS 1.2+ encryption. This applies to user-to-Fabric, Fabric-to-data-source, and inter-service traffic within the platform.

Copilot & AI Data Boundaries

βœ… Controls Copilot Respects

  • Workspace and item permissions
  • RLS and CLS on supported access paths
  • Tenant isolation
  • Unified audit logging and Purview DSPM for AI monitoring

⚠️ Boundaries to Review

  • Labels and Fabric DLP aren't direct Copilot enforcement controls
  • Over-permissioned source content remains over-permissioned to AI
  • Cross-region processing depends on tenant settings
  • Confirm data residency and compliance requirements before rollout
βœ… Before Enabling Copilot

Audit your permissions model before rolling out Copilot. Over-permissioned content is the #1 source of AI data security incidents. Because labels and DLP don't gate Copilot, workspace and item permissions plus RLS/CLS are your real enforcement boundary. Also confirm the cross-geo processing tenant setting matches your compliance requirements.

Layer 7

Network Security

Control network traffic to, from, and within Fabric using private connectivity, managed networks, and zero-trust architecture.

πŸ”’ Inbound β€” Users to Fabric

  • Azure Private Link β€” route all traffic through private endpoints in your VNet
  • Conditional Access β€” enforce device compliance, location, MFA
  • Tenant restrictions β€” prevent data exfiltration to unauthorized tenants

πŸ”— Outbound β€” Fabric to Data

  • Managed Private Endpoints (MPE) β€” Fabric connects to resources through Azure backbone
  • VNet Data Gateways β€” bridge to on-premises or VNet-isolated resources
  • Trusted Workspace Access β€” firewalled storage trusts specific Fabric workspaces

πŸ›‘οΈ Internal β€” Between Services

  • Managed VNets β€” Spark runs in Fabric-managed VNets with controlled egress
  • Service tags β€” NSG rules using DataFactory and PowerBI tags
  • Encryption in transit β€” TLS 1.2+ for all communications

Network Decision Quick Reference

ScenarioApproachSKU Min
Corporate-only access to FabricPrivate Link + block publicF64
Spark reads from firewalled ADLSManaged Private EndpointsF64
OneLake shortcuts to firewalled storageTrusted Workspace AccessF2
On-premises SQL connectivityVNet Data GatewayF2
Full zero-trust posturePrivate Link + MPE + Managed VNet + CAF64
Layer 8

Monitoring & Audit

Continuous monitoring, audit trails, and threat detection to ensure your security controls are working and to investigate incidents.

SignalUnified Audit Log
Collect & AnalyzeMicrosoft Purview / Sentinel
Use

Investigate sharing, permission, administration, and user activity.

SignalOneLake Diagnostics
Collect & AnalyzeLakehouse + reports or KQL
Use

Answer who accessed which data, when, through which engine or shortcut, and with what result.

SignalDefender for Cloud Apps
Collect & AnalyzeDefender portal / Sentinel
Use

Detect anomalous activity and apply supported real-time session controls.

SignalMonitoring Workspace & Admin Portal
Collect & AnalyzeEventhouse, dashboards, tenant views
Use

Correlate operational failures, capacity pressure, tenant settings, and workload behavior with security events.

βœ… Monitoring Best Practices
  • Forward Fabric audit logs to Microsoft Sentinel for centralized security monitoring and automated incident response
  • Enable OneLake diagnostics for workspaces that hold sensitive or regulated data
  • Enable MDCA policies β€” at minimum: unusual data download, risky sign-in, mass sharing detection
  • Review admin portal weekly β€” check tenant settings, new workspace creation, and external sharing activity
  • Automate alerts β€” use Activator or Logic Apps to notify security teams of critical events
Real-World Example

Putting It All Together

See how all 8 security layers work together in a real scenario β€” a multinational company deploying Fabric for regional sales analytics.

πŸ“‹ Scenario: Regional Sales Analytics Platform

Contoso Corp has three sales regions β€” EMEA, Americas, and APAC. Regional analysts should only see their own region's data. A central analytics team needs full access. Customer PII (emails, phone numbers) must be masked for most users. The platform ingests data from an on-premises SQL Server via a gateway and must meet enterprise compliance requirements.

πŸ”
Layer 1 β€” Identity & Access
Entra ID groups + Conditional Access
View implementation
Create security groups: SG-Sales-EMEA, SG-Sales-Americas, SG-Sales-APAC, and SG-Analytics-Central. Apply a Conditional Access policy requiring MFA for all Fabric access and blocking sign-ins from non-compliant devices. Create a service principal SP-Sales-ETL for automated data pipelines β€” no interactive user required.
🏒
Layer 2 β€” Workspace Security
Dev/Prod isolation with role separation
View implementation
Create two workspaces: Sales-Dev and Sales-Prod. The central analytics team gets Contributor on both. Regional groups get Viewer on Prod only β€” they never see Dev. The ETL service principal gets Contributor on Prod for automated loads. Both workspaces are assigned to the "Sales" domain for governance and to a dedicated F64 capacity to prevent noisy-neighbor issues.
πŸ“¦
Layer 3 β€” Item-Level Permissions
Targeted sharing via Power BI apps
View implementation
Publish a Power BI app "Regional Sales Dashboard" with audience targeting β€” each regional group sees only their designated report pages. Share the Sales Lakehouse with ReadData permission to the data science team for ad-hoc SQL queries, without granting workspace access. All production semantic models carry the "Certified" endorsement badge.
πŸ›‘οΈ
Layer 4 β€” Data-Level Security
RLS + CLS + Dynamic Data Masking
View implementation
Row-Level Security: DAX filter on the semantic model β€” [Region] = USERPRINCIPALNAME() mapped via a security table, so EMEA analysts see only EMEA rows.
Column-Level Security: The ProfitMargin column is restricted β€” only SG-Analytics-Central can see it.
Dynamic Data Masking: CustomerEmail shows as jXXX@XXX.com for regional analysts; the central team sees full values.
πŸ’Ύ
Layer 5 β€” OneLake Security
Source-enforced object, row, and column policies
View implementation
Define OneLake security roles on the Sales Lakehouse. Use OLS so only SP-Sales-ETL can access /raw/, apply regional RLS to curated sales tables, and hide sensitive source columns with CLS. Supported Spark, SQL, and Direct Lake access paths then evaluate the policies defined at the source instead of relying on separate rules in every consumer.
🏷️
Layer 6 β€” Information Protection
Sensitivity labels + DLP policies
View implementation
Apply "Confidential β€” PII" sensitivity label to the Sales Lakehouse and semantic model. This label auto-inherits downstream to reports and exports. A Fabric DLP policy detects sensitive data, alerts the security team, and restricts access to the affected item when required. Use a separate Defender for Cloud Apps session policy when Power BI downloads from unmanaged devices must be inspected or blocked in real time.
🌐
Layer 7 β€” Network Security
Private Link + Managed VNet
View implementation
The on-premises SQL Server source connects via a VNet data gateway β€” on-premises data gateways aren't supported once Azure Private Link is enabled β€” so no data crosses the public internet. Spark notebooks run inside a managed virtual network with a private endpoint to Azure SQL for staging data. Trusted workspace access is enabled so the Sales workspace can access a secured Azure Data Lake Storage account via its workspace identity.
πŸ“Š
Layer 8 β€” Monitoring & Audit
Continuous auditing + alerting
View implementation
Audit logs are streamed to a Log Analytics workspace for 90-day retention and SOC queries. Microsoft Defender for Cloud Apps monitors session activity and alerts on anomalous mass downloads or other risky behavior. The Fabric admin monitoring workspace tracks capacity utilization, and a weekly Purview scan verifies all PII items still carry the correct sensitivity label.
πŸ’‘ Key Takeaway

No single layer is sufficient on its own. An EMEA analyst in this scenario is protected by: identity (MFA + group membership) β†’ workspace (Viewer role, Prod only) β†’ item (app audience) β†’ data (RLS filters EMEA rows, CLS hides margins, DDM masks email) β†’ OneLake (no raw folder access) β†’ labels (export restrictions) β†’ network (private connectivity) β†’ monitoring (anomaly alerts). Compromise of any one layer still leaves 7 others enforcing protection.

Checklist

Security Hardening Checklist

Track your Fabric security posture across all layers. Progress is saved in your browser.

Completed: 0 / 0 applicable controls Β· 0 not applicable

πŸ” Identity & Access

🏒 Workspace & Item Security

πŸ›‘οΈ Data-Level Controls

🏷️ Information Protection

🌐 Network Security

πŸ“Š Monitoring & Audit