Forum Discussion
page level security
hi All
i have 3 pages.
created a excel file with columns and store it in sharepoint from that using web url connector getting into powerbi.
| Team | role | page1 | page2 | page3 | |
| A | [email protected] | admin | TRUE | TRUE | TRUE |
| B | [email protected] | admin | TRUE | TRUE | TRUE |
| C | [email protected] | admin | TRUE | TRUE | TRUE |
| A | [email protected] | manager | FALSE | TRUE | FALSE |
| B | [email protected] | manager | FALSE | TRUE | FALSE |
| C | [email protected] | manager | FALSE | TRUE | FALSE |
Note : create a calculated column using the below formula
Hi Anonymous , There is no official default way to have Page level security in Power BI. While I did say we can use a workaround where we can use measures to restrict access and use page navigation, that was based on my general experience in Power BI and I am sorry if that misled you, wasn’t my intention. I have tried to do this but found not only that this isn’t possible, but the only sure workaround is also what I already gave you in the .pbix file with landing page and page navigation (using bookmarks).
I improved on that workaround by changing it a bit. Now there is a Main page with buttons for Admin and Manager. When you click on Admin, you can view the buttons for pages that admin has access to (all of them in this scenario) and when you click on Manager, you can view the buttons for pages that Manager has access to. There you can use those buttons to navigate to the respective pages. You can base this to build your own report as needed.
Please check the .pbix for your reference.
15 Replies
- Akash_VarunaSuper User
Hi Anonymous You can’t reliably use measures for dynamic page navigation in Power BI Service, as it often breaks after refresh. Instead, use bookmarks and the selection pane to show/hide page content based on roles. Implement Row-Level Security (RLS) to filter data per user and control visibility within pages.
- AnonymousNot applicable
can you create a sample and share the powerbi file. i have totally 16 pages. for admin has to access all pages for users need to access the page which we give access
- v-hashadapuCommunity Support
Hi Anonymous , Thank you for reaching out to the Microsoft Community Forum.
In Power BI, Page Level Security is not possible directly. But there are a few workarounds to do this.
Avoid using DAX measures for page navigation. These are unreliable in the Power BI Service and often fail after refresh. Instead, use a single landing page with buttons, bookmarks and Row-Level Security (RLS) to control access and visibility. Start by connecting to your Excel file stored in SharePoint. The data should include columns like Team, Email, Role, and Page1 through Page16, with TRUE/FALSE values indicating access. You can add a calculated column for display if needed. For example:
Page1_Status = IF(Sheet1[Page1] = "TRUE", "Control In-Scope", "ABC")
In Power BI Desktop, define Row-Level Security by navigating to Modeling -> Manage Roles. Create two roles: one for Admin, where you set the filter as [Role] = "admin" to grant full access to all data and another for Manager, using [Email] = USERPRINCIPALNAME() to ensure each user only sees the data associated with their own email.
On your report, create a single “Main Page” with 16 buttons labeled “Page 1” through “Page 16”. For each logical page, group the visuals using the Selection Pane. Then create bookmarks like Show_Page1, each showing one visual group and hiding the others. Assign each button an Action -> Bookmark, linking it to the correct bookmark. To control which buttons appear for each user, create DAX measures for visibility. For example:
CanAccessPage1 =
CALCULATE(
COUNTROWS(Sheet1),
Sheet1[Email] = USERPRINCIPALNAME(),
Sheet1[Page1] = "TRUE"
) > 0
Repeat for each page. Then, for each button, go to Format -> General -> Properties -> Visible -> fx and bind it to the corresponding measure. This way, users only see buttons for pages they’re authorized to access. Test this using the “View as” feature in Power BI Desktop. Admins like [email protected] should see all buttons, while managers like [email protected] should only see the pages they've been granted access to. After publishing to the Power BI Service, go to Dataset -> Security and assign users to the correct roles. Optionally, you can personalize the experience by showing a welcome message using:
WelcomeMessage = "Welcome, " & CALCULATE(MAX(Sheet1[Role]), Sheet1[Email] = USERPRINCIPALNAME())
If this helped solve the issue, please consider marking it “Accept as Solution” and giving a ‘Kudos’ so others with similar queries may find it more easily. If not, please share the details, always happy to help.
Thank you.- AnonymousNot applicable
thanks . can you create 2 pages and share powerbi file. please
Regards
yukta
- v-hashadapuCommunity Support
Hi Anonymous , Thank you for reaching out to the Microsoft Community Forum.
Please refer attached .pbix file for your reference and share your thoughts.
If this helped solve the issue, please consider marking it “Accept as Solution” and giving a ‘Kudos’ so others with similar queries may find it more easily. If not, please share the details, always happy to help.
Thank you.
- v-hashadapuCommunity Support
Hi Anonymous ,
I wanted to follow up and see if you’ve had a chance to review the information provided here.
If any of the responses helped solve your issue, please consider marking it "Accept as Solution" and giving it a 'Kudos' to help others easily find it.
Let me know if you have any further questions! - v-hashadapuCommunity Support
Hi Anonymous , I hope you're doing well! Just checking in to see if you had a chance to review the details shared earlier. If any of the information addressed your needs, feel free to mark it as "Accept as Solution" to help others in the community. Please let me know if you have any further questions!
- AnonymousNot applicable
my solution is working fine
thanks for help
Regards
- Krish_nidarHelper I
In this case, if user knows the URL of the admin user, they can access right ? at the end of the URL we will have report ID, right ?