Hive 元存储中的特权和安全对象
适用于: Databricks SQL Databricks Runtime
特权模型和安全对象因你使用的是 Unity Catalog 元存储还是旧版 Hive 元存储而有所不同。 本文介绍旧版 Hive 元存储的特权模型。 如果使用的是 Unity Catalog,请参阅 Unity Catalog 中的特权和安全对象。
Hive 元存储中的安全对象
安全对象是在元存储中定义的对象,可以在其上向主体授予特权。
要管理任何对象的权限,你必须是其所有者或管理员。
语法
securable_object
{ ANY FILE |
CATALOG [ catalog_name ] |
{ SCHEMA | DATABASE } schema_name |
FUNCTION function_name |
[ TABLE ] table_name |
VIEW view_name
}
parameters
ANY FILE
控制对基础文件系统的访问。
CATALOG
catalog_name控制对整个数据目录的访问。
{ SCHEMA | DATABASE }
schema_name控制对架构的访问。
FUNCTION
function_name控制对命名函数的访问。
[ TABLE ]
table_name控制对托管表或外部表的访问。
VIEW
view_name控制对 SQL 视图的访问。
继承模型
Hive 元存储中的安全对象是分层的,特权是向下继承的。 这意味着授予或拒绝对 CATALOG
的某个权限时,会自动授予或拒绝对目录中的所有架构的该权限。 同样,在架构对象上授予的权限会被该架构中的所有对象继承。 此模式适用于所有安全对象。
如果拒绝用户对表的权限,则用户无法通过尝试列出架构中的所有表来查看表。 如果拒绝用户对架构的权限,则用户无法通过尝试列出目录中的所有架构来查看架构是否存在。
权限类型
下表显示了哪些特权与哪些安全对象相关联。
权限类型 | ANONYMOUS FUNCTION | ANY FILE | CATALOG | SCHEMA | FUNCTION | TABLE | VIEW |
---|---|---|---|---|---|---|---|
CREATE | 是 | 是 | |||||
MODIFY | 是 | 是 | 是 | 是 | |||
READ_METADATA | 是 | 是 | 是 | 是 | |||
SELECT | 是 | 是 | 是 | 是 | 是 | 是 | 是 |
USAGE | 是 | 是 |
ALL PRIVILEGES
用于授予或撤销适用于安全对象及其子对象的所有特权,无需显式指定这些特权。 这会扩展到进行权限检查时的所有可用特权。
CREATE
在目录或架构中创建对象。
MODIFY
COPY INTO、UPDATE DELETE、INSERT 或 MERGE INTO 表。
如果 securable_object 是
hive_metastore
或其中的架构,则授予MODIFY
将对安全对象中所有当前和将来的表和视图授予MODIFY
。READ_METADATA
在 SHOW 中发现安全对象,并在 DESCRIBE 中询问该对象
如果安全对象是
hive_metastore
目录或其中的架构,则授予READ_METADATA
将对安全对象内所有当前和将来的表和视图授予READ_METADATA
。READ FILES
SELECT
查询表或视图,调用用户定义的函数或匿名函数,或者选择
ANY FILE
。 用户针对表、视图或函数需要SELECT
,并且针对对象的架构和目录需要USAGE
。如果安全对象是
hive_metastore
或其中的架构,则授予SELECT
将在安全对象内的所有当前和将来的表和视图上授予SELECT
。USAGE
必需,但不足以引用目录或架构中的任何对象。 主体还需要对各个安全对象具有特权。
WRITE FILES
示例
-- Grant a privilege to the user alf@melmak.et
> GRANT SELECT ON TABLE t TO `alf@melmak.et`;
-- Revoke a privilege from the general public group.
> REVOKE USAGE ON SCHEMA some_schema FROM `alf@melmak.et`;