Unity Catalog 中的特权和安全对象

适用于:勾选标记为“是” Databricks SQL 勾选标记为“是” Databricks Runtime 勾选标记为“是” 仅 Unity Catalog

特权是授予主体对元存储中的可安全对象进行操作的权限。 特权模型和安全对象因你使用的是 Unity Catalog 元存储还是旧版 Hive 元存储而有所不同。 本文介绍 Unity Catalog 的特权模型。 如果使用 Hive 元存储,请参阅 Hive 元存储中的 Privileges 和安全对象

有关如何在 Unity 目录中管理特权的详细信息,请参阅 “管理 Unity 目录中的权限”。

注意

本文参考特权模型 1.0 版中的 Unity Catalog 特权和继承模型。 如果在公共预览期间(2022 年 8 月 25 日之前)创建了 Unity Catalog 元存储,则可能使用的是不支持当前继承模型的更早版本特权模型。 可以升级到权限模型版本 1.0 来获得权限继承。 请参阅 “升级到特权继承”。

安全对象

安全对象是在 Unity Catalog 元存储中定义的对象,可以在其上向主体授予特权。 有关 Unity 目录安全对象的完整列表以及可对其授予的权限,请参阅 Unity 目录特权和安全对象

若要管理任何对象的特权,你必须是对象的所有者,或者对该对象具有 MANAGE 特权,以及对该对象的父目录具有 USE CATALOG,对其父架构具有 USE SCHEMA

语法

securable_object
  { CATALOG [ catalog_name ] |
    CONNECTION connection_name |
    CLEAN ROOM clean_room_name |
    EXTERNAL LOCATION location_name |
    FUNCTION function_name |
    METASTORE |
    SCHEMA schema_name |
    SHARE share_name |
    [ STORAGE | SERVICE ] CREDENTIAL credential_name |
    [ TABLE ] table_name |
    MATERIALIZED VIEW view_name |
    VIEW view_name |
    VOLUME volume_name
  }

还可以指定 SERVER 而不是 CONNECTION,指定 DATABASE 而不是 SCHEMA

parameters

  • CATALOGcatalog_name

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

  • CONNECTION connection_name

    控制对连接的访问。

  • EXTERNAL LOCATIONlocation_name

    控制对 外部位置的访问。

  • FUNCTIONfunction_name

    控制对用户定义的函数或 MLflow 注册模型的访问。

  • MATERIALIZED VIEW view_name

    控制对具体化视图的访问。

  • METASTORE

    控制对附加到工作区的 Unity Catalog 元存储的访问。 管理元对存储的特权时,SQL 命令中请勿包含元存储名。 Unity Catalog 会授予或撤销对附加到工作区的元存储的特权。

  • SCHEMAschema_name

    控制对架构的访问。

  • [ STORAGE | SERVICE ] CREDENTIALcredential_name

    控制对凭据的访问。

    关键字 STORAGESERVICE选中标记为是 Databricks Runtime 15.4 及更高版本)是可选的。

  • SHAREshare_name

    控制接收方共享的访问。

  • TABLEtable_name

    控制对托管表或外部表的访问。 如果找不到表,Azure Databricks 将引发 TABLE_OR_VIEW_NOT_FOUND 错误。

  • VIEW view_name

    控制对视图的访问。 如果找不到视图,Azure Databricks 将引发 TABLE_OR_VIEW_NOT_FOUND 错误。

  • VOLUMEvolume_name

    控制对卷的访问。 如果找不到该卷,Azure Databricks 会引发错误。

权限类型

有关特权类型的列表,请参阅 Unity 目录特权和安全对象

示例

-- 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 USE SCHEMA ON SCHEMA some_schema FROM `alf@melmak.et`;