启用VNnet的Blob存储创建Databricks DLT在线表遇403权限问题
Unity Catalog创建DLT在线表ADLS Gen2 403权限问题解决
问题场景
- 在Unity Catalog中创建DLT在线表时触发403权限错误,仅当ADLS Gen2公共网络访问设为「从选定虚拟网络和IP地址启用」时出现该问题,设为「从所有网络启用」则可正常创建。
- 已完成配置:通过
unity-catalog-access-connector赋予Storage Blob Data Contributor权限,Databricks工作区的私有、公共子网已加入ADLS Gen2虚拟网络白名单。
错误栈信息
DataPlaneException: Failed to start the DLT service on cluster . Please check the stack trace below or driver logs for more details.
com.databricks.pipelines.execution.service.UCContextInitializationException: Failed to initialize the UCContext
com.databricks.pipelines.common.CustomException: [DLT ERROR CODE: EXECUTION_SERVICE_STARTUP_FAILURE.STORAGE_PERMISSION_ISSUE] Operation failed: "This request is not authorized to perform this operation.", 403, GET
解决方案
- 配置DLT集群强制私有子网出站:DLT服务启动时可能通过公共IP发起ADLS Gen2请求,即便子网在白名单内也会被拦截。需将DLT集群部署到私有子网,并开启强制隧道(Force Tunnel),确保所有出站流量通过VNet私有链路传输,请求来源落在白名单子网范围内。
- 确认访问连接器权限层级:确保
Storage Blob Data Contributor权限授予在ADLS Gen2存储账户层级,而非仅容器层级。DLT初始化过程需要账户级别的存储访问权限,仅容器权限会触发403错误。 - 启用ADLS Gen2信任服务访问:在ADLS Gen2存储账户的「防火墙和虚拟网络」设置中,勾选「允许受信任的Microsoft服务访问此存储账户」。DLT属于Databricks托管的信任服务,开启此选项可放行初始化阶段的必要跨服务请求。
- 验证访问连接器的VNet关联:确认
unity-catalog-access-connector部署在与Databricks工作区同区域的VNet中,且该VNet已添加到ADLS Gen2的虚拟网络白名单内。访问连接器的VNet归属错误会导致权限验证失败。 - 检查DLT集群标识权限:确保DLT集群使用的服务主体(或托管标识)在Unity Catalog中拥有目标Catalog、Schema的创建权限,同时该标识已被授权通过访问连接器访问ADLS Gen2存储。
内容的提问来源于stack exchange,提问作者Samlex
相关产品推荐
相关产品推荐

