Think Your Power Pages Are Secure? Check These 5 Layers First
Power Pages Security ensures that data and content exposed through a Power Pages (formerly Power Apps Portals) website are protected and only accessible to the right users. Technically, it relies on Dataverse security, web roles, page permissions, and table permissions to control how internal and external users interact with data. Below is a deep technical breakdown:
1. Site Visibility
Purpose: Controls who can see the website.
Options:
- Public – Anyone can access the site without login.
- Private (Authenticated Users Only) – Only users with valid credentials (Azure AD, local portal account, B2C, etc.) can access the site.
Technical Note: Site visibility doesn’t restrict data access; it only controls entry to the portal.
2. Authenticated Users
Purpose: Identifies who the logged-in user is to apply security.
Supported Authentication Providers:
- Azure AD (Office 365 users)
- Azure AD B2C (External Users)
- Local authentication (Username & Password)
- External identity providers (Google, LinkedIn, etc.)
Technical Role: Authenticated users are mapped to Contacts in Dataverse, which are linked to Web Roles to enforce security.
3. Web Roles
Purpose: Similar to security roles in Dataverse, but specific to Power Pages.
Function:
- Assign table permissions.
- Assign page permissions.
- Determine which parts of the site a user can access.
Key Points:
- A single user (contact) can have multiple web roles.
- Security logic flows from Web Role → Permissions → Dataverse Data.
Purpose: Controls who can access a specific page or set of pages.
Options:
- Anonymous Access – Anyone can access.
- Authenticated Users Only – Only logged-in users can access.
- Web Roles Specific – Restricts access to users with specific web roles.
Technical Impact:
If page permissions deny access, data-level permissions don’t apply because the page is not reachable.
5. Table Permissions
Purpose: Enforces row-level and column-level security on Dataverse tables exposed through Power Pages.
Components:
- Scope: Determines which records are accessible.
- Global, Contact, Account, Self, Parent, etc.
- Access Rights: CRUD (Create, Read, Update, Delete).
- Web Role Link: Table permissions are linked to web roles to decide which logged-in users get access to data.
Technical Example:
Table Permission for Case Table
- Scope = Contact
- Read access = Yes
- Linked to Customer Web Role
- Effect: Users only see cases related to their contact record.
How They Work Together
- Site Visibility: Controls entry to the portal.
- Authenticated Users: Identifies logged-in users.
- Web Roles: Assigns security permissions to those users.
- Page Permissions: Controls page-level access.
- Table Permissions: Controls data-level access in Dataverse.
Security Flow Example:
Summary:
Power Pages Security ensures that only the right users can access the right content and data within a Power Pages site. It combines Site Visibility, Authenticated Users, Page Permissions, Table Permissions, and Web Roles to provide a layered security model. Site Visibility controls who can see the site (public vs. private), while Authenticated Users verify identity for restricted content. Page Permissions determine which pages a user can view or edit, and Table Permissions define access to Dataverse data at the record and column level. Web Roles act as the glue, linking users to the permissions they need. Together, these components create a robust, end-to-end security framework that protects both the site and underlying data.
Published on:
Learn moreRelated posts
Power Pages: Bring your own code! (Tutorial)
Introduction At the Power Platform Community Conference in Las Vegas, low-code (as we know it) was declared dead. In Power Apps, we’ve s...
Power Pages – Build modern single-page applications
We are announcing the ability to build modern single-page applications in Power Pages. This feature will reach general availability on January...
Universal Search in Power Pages – Federating Dataverse Search Across Multiple Tables on a Single Search Page
Searching across multiple Dataverse tables from a single search box is one of the most requested features in Power Pages. While Dataverse Sear...
Data Lineage Tracking in Power Pages: Capture Exactly Which Page Created or Updated Your Dataverse Records
When multiple Power Pages forms and pages create or update records in the same Dataverse table, it becomes difficult to understand where the d...
Customizing Copilot Agent appearance in Power Pages - Christmas edition
With the holidays upon us, I wanted the last article of the year to be light and on theme for Christmas. And what better way to do that than b...
Enhancing Power Pages interactivity with htmx
Learn how to use htmx to create an interactive UI without full-screen refreshes using Liquid (and no additional JS)
Data Retention Strategy in Power Pages – Automated Archival with Scheduled Power Automate Jobs
As Power Pages portals scale, the amount of data they generate grows exponentially—form submissions, bookings, cases, applications, event regi...
Power Pages Fundamentals #25: How to Connect Power Pages to Microsoft Fabric Using Power Apps Virtual Tables (Step-by-Step): Quick Read Series
During my discussion with community members, few of them approached me whether we can use Microsoft fabric and show the data in their websites...
Power Pages – Enhance governance for non-production site visibility
We are announcing enhanced site visibility governance for the non-production sites in Power Pages. This feature will reach general availabilit...
Dynamic Navigation Menu in Power Pages Using Dataverse
Make your portal navigation admin-controlled, configurable, and scalable. In traditional Power Pages (formerly Power Apps Portals), site navig...

