如何为Databricks个人访问令牌设置Unity Catalog读取权限并限制访问单一目录
限制Simba ODBC连接到单一Unity Catalog的方法
要解决这个问题,需从权限控制和ODBC连接配置两方面配合操作,确保令牌对应的身份仅能访问指定的Unity Catalog:
1. 严格配置Databricks侧的权限
令牌绑定的用户/服务主体是权限控制的核心,需在Databricks中为该身份移除全局Catalog权限,仅保留目标Catalog的必要权限:
- 撤销该身份对所有其他Unity Catalog的
USE CATALOG权限 - 仅授予其对目标Catalog的
USE CATALOG权限,以及对应Schema、表/视图的细粒度权限
示例SQL(在Databricks SQL或Notebook中执行):-- 撤销所有Catalog的全局权限(若之前存在) REVOKE ALL PRIVILEGES ON ALL CATALOGS FROM `your-user-or-service-principal`; -- 授予目标Catalog的必要权限 GRANT USE CATALOG ON CATALOG `target-catalog` TO `your-user-or-service-principal`; GRANT USE SCHEMA ON SCHEMA `target-catalog.target-schema` TO `your-user-or-service-principal`; GRANT SELECT ON ALL TABLES IN SCHEMA `target-catalog.target-schema` TO `your-user-or-service-principal`; -- 若需访问视图,添加对应权限 GRANT SELECT ON ALL VIEWS IN SCHEMA `target-catalog.target-schema` TO `your-user-or-service-principal`;
2. 在ODBC连接中强制指定默认Catalog
通过Simba ODBC驱动的配置参数,强制连接默认指向目标Catalog,避免用户尝试切换到其他Catalog:
- 在ODBC数据源配置界面的Default Catalog字段中,填入目标Unity Catalog名称
- 或直接在连接字符串中添加参数:
结合第一步的权限控制,即使用户尝试手动切换其他Catalog,也会因权限不足被拒绝。DefaultCatalog=target-catalog;DefaultSchema=target-schema;
验证配置效果
完成设置后在Excel中测试:
- 尝试访问非目标Catalog的表,会收到权限不足的错误提示
- 确认仅能看到目标Catalog下的Schema、数据表和视图
内容的提问来源于stack exchange,提问作者Seanny Tiemann
相关产品推荐
相关产品推荐

