You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

启用Unity Catalog后Databricks无法使用或列出挂载点

问题描述

在Databricks工作区中挂载了Azure存储容器,启用Unity Catalog(UC)后,非管理员用户无法通过dbutils.fs.ls('/mnt/')列出挂载点,执行以下代码时抛出权限异常:

dbutils.fs.ls('/mnt/')

异常信息:

ExecutionError: An error occurred while calling o438.ls.
org.apache.spark.SparkSecurityException: [INSUFFICIENT_PERMISSIONS] Insufficient privileges:
User does not have permission SELECT on any file. SQLSTATE: 42501
at com.databricks.sql.acl.Unauthorized.throwInsufficientPermission

现有多个通过ADF自动化运行的脚本,无法将挂载点改为Volumes。

解决方案
  • 注册挂载路径为外部位置并分配权限
    由管理员将已挂载的/mnt/xxx路径注册为Unity Catalog的外部位置(External Location),然后给执行脚本的用户/用户组分配该外部位置的SELECT权限。示例SQL命令:

    -- 创建外部位置(需管理员执行)
    CREATE EXTERNAL LOCATION IF NOT EXISTS my_mount_location
    URL 'dbfs:/mnt/your-specific-mount'
    WITH (CREDENTIAL your_credential);
    
    -- 给用户组分配SELECT权限
    GRANT SELECT ON EXTERNAL LOCATION my_mount_location TO `your-adf-exec-group`;
    

    注:若需访问多个挂载点,需逐个注册或注册父路径(如dbfs:/mnt/)并分配权限。

  • 使用权限足够的服务主体执行ADF脚本
    将ADF中执行Databricks任务的身份切换为拥有挂载路径访问权限的服务主体,该服务主体需被管理员赋予对应外部位置的SELECT权限,无需修改现有脚本中的路径逻辑。

  • 调整UC的DBFS权限豁免设置(谨慎使用)
    由管理员在Databricks工作区的管理控制台 > Unity Catalog > 权限设置中,配置允许非管理员访问特定DBFS路径(如/mnt/),此方法需权衡安全性,避免过度开放权限。

内容的提问来源于stack exchange,提问作者NAVEEN KUMAR REDDY BEDADALA

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 02:37:03