如何从Databricks连接启用私有终结点的Azure存储账户?
Databricks连接启用私有端点的Azure Data Lake Storage Gen2报错解决方案
你遇到的报错信息如下:
Caused by: StorageException: This Request is not Authorized to Perform this operation.
添加Databricks绑定VNET的IP到存储公网白名单不生效,是因为存储启用私有端点后公网访问规则优先级低于私有端点配置,可参考以下方案处理:
根因说明
当存储账户启用私有端点后,若你配置了禁用公网访问,所有公网链路的访问请求会被直接拦截,此时配置的公网IP白名单不会生效,请求必须走私有网络链路访问存储的私有端点IP。
可行连接方案
方案1:私有链路访问(生产环境推荐)
- 确认你的Databricks工作区为VNET注入部署模式(非Databricks默认托管VNET),若使用默认托管VNET需要先完成VNET注入配置
- 确保Databricks注入的VNET与存储私有端点所属VNET为同一个VNET,或两个VNET已配置对等连接、路由可达
- 验证DNS解析:在Databricks Notebook中运行
%sh nslookup <存储账户名>.dfs.core.windows.net,确认解析结果为存储私有端点的内网IP,若解析到公网IP,需要在VNET关联的私有DNS区域添加ADLS Gen2对应域名的A记录 - 验证端口连通性:在Notebook中运行
%sh nc -zv <存储账户名>.dfs.core.windows.net 443,确认443端口连通正常
方案2:公网访问兼容(仅测试使用)
如果暂时无法配置私有链路,可临时调整存储网络配置:
- 进入存储账户「网络」配置页,将公网访问权限调整为启用来自选定网络的访问
- 除添加Databricks出口IP到白名单外,额外勾选允许受信任的Azure服务访问此存储账户
- 注意:该配置会保留公网访问入口,生产环境不建议使用
通用权限校验
如果网络连通正常仍报相同错误,需要检查访问身份的权限配置:
- 若使用Azure AD身份认证(服务主体、托管身份),确认对应身份在存储账户IAM中配置了
存储Blob数据参与者/存储Blob数据读取者等数据层权限,仅配置控制面权限(如订阅/资源组层面的参与者权限)无法访问存储数据 - 若使用存储账户密钥/SAS令牌连接,确认密钥未过期、SAS令牌的权限、有效期、允许IP范围配置正确
内容的提问来源于stack exchange,提问作者Aniruddh Kulkarni
相关产品推荐
相关产品推荐

