使用来宾用户凭据从PowerBI服务访问ADLS2的问题
问题解答:来宾用户通过Power BI访问ADLS Gen2的权限问题
这不是Bug,而是当前Power BI与ADLS Gen2集成时针对Azure AD外部来宾用户的已知限制特性。
问题原因
虽然ADLS Gen2本身支持通过RBAC或ACL给来宾用户分配访问权限,但Power BI服务在处理来宾用户的身份验证流程时,无法直接将来宾用户的凭据正确传递给ADLS Gen2完成验证,因此会抛出凭据无效的错误。
可行的解决方法
以下是几种可以让来宾用户间接访问ADLS Gen2数据的方案:
使用Azure AD服务主体作为中间身份
- 在Azure AD中创建一个服务主体,为其分配ADLS Gen2的RBAC权限(例如
Storage Blob Data Contributor),或者针对目标容器/文件夹配置对应的ACL权限。 - 在Power BI服务中编辑ADLS数据源的凭据,选择「服务主体」身份验证方式,输入服务主体的应用ID和密钥。
- 给来宾用户授予Power BI报表或数据集的访问权限,此时来宾用户通过Power BI访问数据时,会使用服务主体的身份去访问ADLS Gen2,绕开来宾用户直接验证的限制。
- 在Azure AD中创建一个服务主体,为其分配ADLS Gen2的RBAC权限(例如
使用SAS令牌访问
- 在Azure门户中为ADLS Gen2的目标容器或文件夹生成SAS令牌,确保令牌包含足够的权限(至少读取权限)。
- 在Power BI服务中配置ADLS数据源时,选择「SAS」身份验证方式,输入生成的SAS令牌。
- 给来宾用户授予Power BI相关资产的访问权限,他们就能通过SAS令牌访问ADLS中的数据。
将来宾用户转为Azure AD内部用户(若可行)
如果来宾用户的身份可以纳入你的组织Azure AD管理范围,将其添加为内部用户后,即可正常使用RBAC或ACL权限,直接通过Power BI访问ADLS Gen2。
补充说明
微软持续在优化跨服务的来宾用户访问体验,但目前这个场景下确实需要通过上述替代方案来实现访问需求。
内容的提问来源于stack exchange,提问作者Sergey Voronkov
相关产品推荐
相关产品推荐

