如何设置外部存储位置权限:允许通过指定视图访问,禁止直接访问及创建相关视图
实现外部存储权限的精细化控制方案
完全可以实现你要求的权限控制逻辑,具体配置步骤如下:
1. 维持现有视图的访问权限
你当前的视图testview已经可以正常供用户组访问,只需确保该用户组对这个视图拥有**SELECT权限**即可,这一步你已经完成。
2. 禁止直接访问存储容器
要阻止用户绕过视图直接访问存储,需要从两个层面控制:
- Catalog权限层面:不要给用户组分配目标外部存储路径对应的
外部位置(External Location)的任何权限(包括SELECT、MODIFY等)。如果之前误分配过,执行撤销命令:REVOKE ALL ON EXTERNAL LOCATION <your_external_location_name> FROM <user_group>; - 底层存储IAM权限层面:确保该用户组没有被授予存储账户的
Storage Blob Data Reader或其他能直接访问容器的IAM角色,避免绕开Catalog的权限管控。
这样用户组尝试直接执行SELECT * FROM delta.abfss://<container>@<storage>.dfs.core.windows.net/<path>,或者创建引用该路径的视图时,会因权限不足报错。
3. 允许基于现有视图创建新视图/表
给用户组分配目标Schema的CREATE VIEW和CREATE TABLE权限,同时确保他们对testview拥有SELECT权限(第一步已满足),示例命令:
GRANT CREATE VIEW, CREATE TABLE ON SCHEMA <catalog>.<schema> TO <user_group>;
执行后,用户组就能像示例那样基于testview创建新的视图或表。
内容的提问来源于stack exchange,提问作者Courier
相关产品推荐
相关产品推荐

