如何限制Azure AD SPN在Databricks中的只读权限?
限制Azure AD SPN在Databricks中的只读权限方案
可以通过Workspace权限管控和数据对象权限管控两层实现需求,具体步骤如下:
1. Workspace级权限:限制资源操作(作业/集群/仓库等)
- 给目标SPN分配Workspace Viewer内置角色:该角色仅允许查看Workspace内的资源(作业、集群、仓库等),无法执行创建、修改、删除操作。
- 若内置角色不满足需求,可创建自定义权限角色:
- 仅保留
jobs.read、clusters.read、warehouses.read等只读类权限,移除所有jobs.delete、clusters.delete、warehouses.delete、jobs.create等写操作权限。 - 将自定义角色绑定到SPN,确保没有其他高权限角色(如Workspace Admin)被继承。
- 仅保留
2. 数据对象权限:限制SQL操作(禁止DML/DDL)
根据你使用的元数据存储方案,分别配置:
针对Unity Catalog
- 在Catalog、Schema、Table层级,仅给SPN授予
SELECT权限:GRANT SELECT ON CATALOG <catalog-name> TO `<spn-principal>`; GRANT SELECT ON SCHEMA <schema-name> TO `<spn-principal>`; GRANT SELECT ON TABLE <table-name> TO `<spn-principal>`; - 确保未授予
INSERT、UPDATE、DELETE、ALTER、DROP等权限,也不要将SPN加入有更高权限的组。
针对Hive Metastore
- 对目标数据库和表授予
SELECT权限:GRANT SELECT ON DATABASE <db-name> TO `<spn-principal>`; GRANT SELECT ON TABLE <table-name> TO `<spn-principal>`; - 拒绝所有非只读操作的权限(若有继承的高权限):
REVOKE INSERT, UPDATE, DELETE ON TABLE <table-name> FROM `<spn-principal>`;
3. 验证权限生效
- 执行DML语句(如
DELETE FROM <table>):应返回权限不足的错误提示。 - 通过API尝试删除作业/集群:会收到403 Forbidden的响应。
- 在Databricks控制台查看SPN的权限列表,确认仅包含只读类权限。
内容的提问来源于stack exchange,提问作者Maulik Dave
相关产品推荐
相关产品推荐

