Azure Databricks执行dbutils.fs.ls挂载目录时遇403授权错误求助
针对你遇到的挂载成功但无法列出目录的403错误,即使已配置Storage Blob Data Contributor权限,可从以下几个方向排查:
RBAC权限的有效性问题
- 确认权限作用范围:必须直接将Storage Blob Data Contributor权限分配给服务主体,且作用范围是目标容器(FileSystem)或存储账户——如果仅在资源组级别分配,容器上的自定义拒绝规则会覆盖允许权限。
- 等待权限生效:RBAC权限添加后通常需要10-15分钟才能完全同步,刚配置完就重试可能会遇到缓存问题。
- 检查拒绝规则:排查存储账户或容器的IAM设置中是否存在Deny类型的权限规则,拒绝规则优先级高于允许规则,会直接阻断访问。
存储账户网络限制
- 登录Azure门户进入存储账户的「网络」设置:
- 如果设置为「选定的网络」,需确保Databricks工作区所在VNet已加入允许列表,或者开启「允许受信任的Microsoft服务访问此存储账户」选项(Databricks属于受信任服务)。
- 若为「所有网络」则跳过此检查,但生产环境建议使用选定网络管控访问。
- 登录Azure门户进入存储账户的「网络」设置:
ADLS Gen2的ACL权限冲突
- 启用分层命名空间的ADLS Gen2除了RBAC,还支持ACL(访问控制列表)权限:
- 进入存储账户的「容器」页面,找到目标容器,切换到「访问控制(ACL)」标签。
- 确认服务主体的Object ID在容器级别拥有
read或read-execute权限(列出目录至少需要read权限)。
- 注意:ACL权限会与RBAC叠加生效,即便RBAC有Contributor权限,ACL的拒绝设置也会导致403错误。
- 启用分层命名空间的ADLS Gen2除了RBAC,还支持ACL(访问控制列表)权限:
挂载配置或缓存问题
- 核对挂载代码的
source参数:确保容器名、存储账户名完全正确(容器名必须小写),没有拼写或大小写错误。 - 卸载后重新挂载:执行
dbutils.fs.unmount("/mnt/demo"),再重新运行挂载代码,避免旧挂载缓存导致的异常。
- 核对挂载代码的
内容的提问来源于stack exchange,提问作者Krzysztof
相关产品推荐
相关产品推荐

