A Power BI administrator is a role for managing various aspects of the Power BI Service. This role can be assigned in Office 365. Anyone with Office 365 global admin privileges is also a Power BI administrator by default.
Based on the tests I've been doing, I've observed that users with membership to the Power BI administrator role have two sets of permissions apply:
Activities which are scoped across the entire organization
Activities for which normal user permissions apply
Within the above 2 categories, I’m thinking there are 4 main types of activities:
Manage tenant settings (always scoped to the organization)
Compile inventory and metadata (can be scoped to the organization)
Manage workspace users (can be scoped to the organization)
Export content from a workspace (relies on user permissions)
My motivation for laying this out is because initially I expected that all of the PowerShell scripts (including the Export-PowerBIReport cmdlet discussed below) would apply organization-wide. This made me think that the Power BI administrator role had become a highly elevated role which could access all content in the Power BI tenant. However, my initial expectation was wrong in that respect — it turns out that a Power BI administrator can access all metadata but not all of the actual data.
Next let’s briefly review each of the 4 types of activities.
Manage Power BI Tenant Settings
The ability to manage tenant settings in the Power BI Admin Portal, has been in place for some time now. It includes managing things such as:
Tenant settings (for the most part this includes enabling/disabling certain features to influence the user experience and/or govern the system)
Organizational custom visuals
The Power BI administrator role cannot be delegated to individual subsets of the organization — it applies to the entire tenant.
The role also cannot be granted in a read-only way. This can make it challenging in a very large organization. For example, let's say you're a large worldwide organization with five main divisions. One of the key Power BI people from division A requests access to the Power BI Admin Portal because they want to be able to view what the settings are. An example I've seen of this is someone thinking that the 'push apps to end users' doesn't work, when really the issue is that it's disabled by default in the tenant settings.
Compile Power BI Inventory and Metadata
With the introduction of the Power BI Management Module, we can more easily run scripts to perform certain activities such as accessing metadata. There are several cmdlets available, for instance: Get-PowerBIDashboard, Get-PowerBIReport, and Get-PowerBIWorkspace.
Here’s an example of a script which looks across the entire tenant (i.e., the organization scope) to find all instances of a report named Product Sales Analysis:
The key point above is that the Power BI administrator can retrieve all metadata like this, including My Workspace for other users. This is actually great because it means a Power BI administrator can put together an inventory of the content in the tenant. If you compare this to usage data from the Office 365 audit log, you could determine what isn’t being used.
Manage Workspace Users
There are PowerShell cmdlets such as Add-PowerBIWorkspaceUser and Remove-PowerBIWorkspaceUser to manage the new type of workspaces (i.e., the V2 ‘new workspace experience’ that is in preview as of this writing in late 2018).
Here is an example of my Power BI administrator account providing member permissions to a colleague:
The interesting part of the above example is that my Power BI administrator account does *not* have any direct permissions to the workspace. However, the organization scope allows it to be done.
Export Power BI Content from Workspaces
There is a PowerShell cmdlet called Export-PowerBIReport which, as the name implies, exports a PBIX from the Power BI Service. This includes the report and the underlying data.
Initially I thought this would also be able to be done with an organization-wide scope, but that’s not true. (Though if that were true, that would open up some interesting scenarios like exporting files to make backups, and/or exporting files to minimize risk that critical data is being delivered from a user's individual workspace…but that’s not possible right now. And if it were, I would want that highly privileged role to be separate somehow from the existing Power BI administrator role.)
Here is an example of exporting one file:
Unlike the previous two examples, Export-PowerBIReport does require the Power BI administrator to have rights to the workspace in order to access the content. This is what I was observing, so I was happy to have it confirmed by Chaz Beck (CodeCyclone) from the Power BI product team when he replied to this GitHub issue. This is a legitimate unauthorized (401) message when a Power BI administrator tries to export a PBIX that resides somewhere that the administrator doesn’t have access to - this includes My Workspace for all other users.
One limitation to this: reports and dashboards created directly in the Power BI Service cannot be exported in this manner, which means this method cannot be used for migrating content across tenants.
Also, this cmdlet appears to only work with the new workspace experience that is currently in public preview. I get an unauthorized (401) message, even if I’m an admin on the workspace itself, if I try this on a V1 workspace. This is confirmed as a bug on this GitHub issue.
Hopefully this post saves you some time in determining how permissions apply to the different types of activities that a Power BI administrator can do.
The scripts shown above are super simplified, not really ready for actual production use, but I kept them simple since the focus of this post is on permissions.
Also, keep in mind that you do *not* have to be a designated Power BI administrator to use the Power BI PowerShell cmdlets — any user can run them related to their own content. However, you *do* need to be a Power BI administrator in order to set the scope to organization (for those cmdlets which support it).
To find additional information:
Official blog post #2: https://powerbi.microsoft.com/en-us/blog/working-with-powershell-in-power-bi/
Power BI cmdlets reference: https://docs.microsoft.com/en-us/powershell/power-bi/overview
Power BI REST APIs: https://docs.microsoft.com/en-us/rest/api/power-bi/