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
      }

参数

  • ANY FILE

    控制对基础文件系统的访问。

  • CATALOGcatalog_name

    控制对整个数据目录的访问。

  • { SCHEMA | DATABASE }schema_name

    控制对架构的访问。

  • FUNCTIONfunction_name

    控制对命名函数的访问。

  • [ TABLE ]table_name

    控制对托管表或外部表的访问。

  • VIEWview_name

    控制对 SQL 视图的访问。

继承模型

Hive 元存储中的安全对象是分层的,特权是向下继承的。 这意味着授予或拒绝对 CATALOG 的某个权限时,会自动授予或拒绝对目录中的所有架构的该权限。 同样,在架构对象上授予的权限会被该架构中的所有对象继承。 此模式适用于所有安全对象。

如果拒绝用户对表的权限,则用户无法通过尝试列出架构中的所有表来查看表。 如果拒绝用户对架构的权限,则用户无法通过尝试列出目录中的所有架构来查看架构是否存在。

权限类型

下表显示了哪些特权与哪些安全对象相关联。

权限类型 ANONYMOUS FUNCTION ANY FILE CATALOG SCHEMA FUNCTION TABLE VIEW
CREATE
MODIFY
READ_METADATA
SELECT
USAGE
  • ALL PRIVILEGES

    用于授予或撤销适用于安全对象及其子对象的所有特权,而无需显式指定这些特权。 这会扩展到进行权限检查时的所有可用特权。

  • CREATE

    在目录或架构中创建对象。

  • MODIFY

    对表执行 COPY INTOUPDATEDELETEINSERTMERGE 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

    直接对外部凭据外部位置治理的文件执行 COPY INTO

示例

-- 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`;