如何获取Power BI所有应用及对应有权限用户的汇总列表
Power BI全量应用及对应访问权限用户清单提取方案
前提条件
你需要持有Power BI租户管理员权限,或配置拥有Tenant.Read.All/Tenant.ReadWrite.All应用级API权限的服务主体,才能调用管理员级别的REST接口拉取全量数据。
实现方案
方案1:REST API组合调用(适合自定义开发场景)
Power BI 提供了管理员专用的应用查询接口,不需要逐个查用户权限,反向遍历所有应用拉取权限即可,步骤如下:
- 第一步:调用
GET https://api.powerbi.com/v1.0/myorg/admin/apps接口,拉取租户内全量应用列表,保存应用ID、应用名称、所属工作区等基础信息作为底表 - 第二步:遍历底表中的所有应用ID,逐个调用
GET https://api.powerbi.com/v1.0/myorg/admin/apps/{appId}/users接口,拉取单个应用对应的所有授权主体(包括用户、安全组、服务主体)的权限信息 - 第三步:将应用基础信息和对应权限数据做关联合并,即可得到全量应用与权限用户的对应汇总表
注意:如果租户内应用数量较多,调用接口时建议增加1-2秒的请求间隔,避免触发Power BI API每小时5000次的限流规则。
方案2:PowerShell脚本一键导出(适合无开发能力的管理员使用)
先安装Power BI官方管理模块:Install-Module -Name MicrosoftPowerBIMgmt
运行以下脚本即可直接导出汇总好的权限清单到本地CSV文件:
# 登录Power BI管理员账号 Connect-PowerBIServiceAccount # 拉取全租户应用列表 $allApps = Invoke-PowerBIRestMethod -Url 'admin/apps' -Method Get | ConvertFrom-Json $permissionResult = @() # 遍历拉取每个应用的权限列表 foreach ($app in $allApps.value) { $appPerms = Invoke-PowerBIRestMethod -Url "admin/apps/$($app.id)/users" -Method Get | ConvertFrom-Json foreach ($perm in $appPerms.value) { $permissionResult += [PSCustomObject]@{ 应用ID = $app.id 应用名称 = $app.name 授权主体名称 = $perm.displayName 主体类型 = $perm.principalType 权限级别 = $perm.role 用户UPN = $perm.userPrincipalName } } # 规避API限流 Start-Sleep -Seconds 1 } # 导出结果 $permissionResult | Export-Csv -Path "PowerBI全量应用权限清单.csv" -Encoding UTF8 -NoTypeInformation
可选补充方案
如果仅需要统计有过访问行为的活跃权限用户,也可以从Power BI统一审核日志中提取历史访问记录匹配应用信息,该方案不需要高频调用API,但无法覆盖已授权但未产生过访问行为的用户。
内容的提问来源于stack exchange,提问作者Sai
相关产品推荐
相关产品推荐

