如何在Databricks中授予Gold Layer视图SELECT权限且不暴露底层表
解决Databricks视图权限隔离问题
核心思路
利用Databricks的所有权委托机制,让视图所有者持有底层表的访问权限,仅给终端用户授予视图的SELECT权限,无需开放底层表权限。
具体步骤
确保视图由具备底层表权限的身份创建
必须使用拥有所有底层表SELECT权限的账号(如管理员、数据工程服务账号)创建Gold Layer视图。这样视图的所有者自带访问底层表的权限,后续用户访问视图时会继承这个权限链。直接给终端用户/组授予视图SELECT权限
执行以下SQL命令完成授权,无需操作底层表权限:-- 给单个用户授权 GRANT SELECT ON VIEW gold_layer.your_target_view TO `end_user@your_domain.com`; -- 给用户组授权(推荐,便于批量管理) GRANT SELECT ON VIEW gold_layer.your_target_view TO `analyst_user_group`;验证权限有效性
切换到终端用户身份测试:-- 正常执行,返回视图数据 SELECT * FROM gold_layer.your_target_view; -- 执行失败,返回权限不足错误(验证底层表不可访问) SELECT * FROM silver_layer.underlying_table_x;
常见问题处理
- 若之前误给用户授予过底层表权限,记得回收:
REVOKE ALL PRIVILEGES ON TABLE silver_layer.underlying_table_x FROM `end_user@your_domain.com`; - 物化视图同样适用该机制,只要视图所有者有权限刷新物化视图即可。
内容的提问来源于stack exchange,提问作者sujithra baskaran
相关产品推荐
相关产品推荐

