使用Power BI REST API查询数据集时遇403禁止访问错误求助
权限类型错误:你配置的是委托权限(Delegated Permissions),但应用到应用认证(服务主体)需要使用应用权限(Application Permissions)的
Dataset.Read.All。委托权限仅适用于用户上下文的认证流程,服务主体必须使用应用权限,重新在Azure AD应用中添加应用权限的Dataset.Read.All,并由租户管理员完成管理员同意。权限同意未完成:应用权限必须经过租户管理员的显式同意,仅添加权限不点击“授予管理员同意”(针对租户)是无效的。检查Azure AD应用的“API权限”页面,确认
Dataset.Read.All(应用权限)旁边显示“已授予[租户名]同意”。令牌Scope错误:生成访问令牌时,scope必须指定为
https://analysis.windows.net/powerbi/api/.default,这是应用权限认证的标准scope。如果使用了委托权限的scope(比如单独的Dataset.Read.All),令牌将不包含服务主体所需的应用级权限。工作区权限验证:
- 确认工作区是新工作区(而非经典工作区),经典工作区对安全组的权限支持有限,可能需要直接将服务主体添加到工作区管理员角色,而非通过安全组继承。
- 检查安全组是否确实包含目标服务主体,且工作区的管理员角色中已正确添加该安全组,无拼写或配置错误。
租户级API访问设置:除了启用安全组使用Power BI API,需确认租户设置中**“允许服务主体访问Power BI API”**选项已开启(路径:Power BI Admin Portal > Tenant settings > Developer settings > Allow service principals to use Power BI APIs)。
数据集RLS排查:若目标数据集配置了行级别安全(RLS),需确认服务主体未被RLS规则限制。虽然服务主体默认不受RLS影响,但部分自定义RLS规则可能意外包含服务主体,可暂时移除RLS测试是否恢复正常。
Group ID正确性:确认请求中的
{{group_id}}是工作区的正确ID,可在Power BI服务中进入工作区,通过URL末尾的字符串获取(格式类似xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)。
内容的提问来源于stack exchange,提问作者Anna

