管理 Unity Catalog 对象所有权

Unity Catalog 中的每个安全对象都有一个所有者。 所有者可以是任何主体:用户、服务主体或帐户组。 创建对象的主体将成为其初始所有者。 对象的所有者拥有该对象的所有权限(例如对表的 SELECTMODIFY),并且有权向其他主体授予权限。 对象的所有者能够删除对象。

所有者权限

对象的所有者将自动被授予对该对象的所有权限。 此外,对象所有者可以授予对对象本身及其所有子对象的权限。 这意味着架构的所有者不会自动拥有架构中表的所有权限,但可以向自己授予对架构中表的权限。

注意

“所有者对对象拥有所有特权”规则有一个例外情况:为了避免数据意外外泄,架构所有者默认不具有 EXTERNAL USE SCHEMA 权限。 请参阅启用对 Unity Catalog 数据的外部访问

元存储和目录所有权

元存储管理员是元存储的所有者。 元存储管理员角色是可选项。 元存储管理员可以通过转移元存储管理员角色来重新分配元存储的所有权,请参阅分配元存储管理员

如果自动为 Unity Catalog 启用了工作区,则该工作区会默认附加到元存储,并会在元存储中为工作区创建工作区目录。 工作区管理员是默认所有者,而且可以重新分配工作区目录的所有权。 在这些工作区中,默认情况下不会分配元存储管理员,但帐户管理员可以根据需要向其他用户授予元存储管理员角色。 请参阅元存储管理员

有关 Unity Catalog 中的管理员权限的详细信息,请参阅Unity Catalog 中的管理员权限

所有权与 MANAGE 特权

MANAGE(公共预览版)是类似于对象所有权的特权。 它授予用户编辑、删除和管理对象特权的能力。 但是,对对象具有 MANAGE 特权的用户不会自动被授予该对象的所有特权。 与其他特权一样,用户需要对象的父目录的 USE CATALOG 和对象的父架构的 USE SCHEMA。 例如,若要授予对表的权限,用户必须拥有对该表的 MANAGE 特权和对其父目录的 USE CATALOG 特权,以及对其父架构的 USE SCHEMA 特权。

对象的所有者只能是单个主体,包括一个组,而 MANAGE 可以授予多个主体。

为了避免意外的特权提升,ALL PRIVILEGES 不包括 MANAGE 特权

查看对象的所有者

可使用目录资源管理器或 SQL 语句查看对象的所有者

所需权限:对对象具有BROWSE权限的任何用户或对象的父级都可以查看对象所有者。

目录资源管理器

  1. 在 Azure Databricks 工作区中,单击 “数据”图标。目录

  2. 选择对象,例如目录、架构、表、视图、卷、外部位置或存储凭据。

    如何导航到对象取决于对象。 目录、架构和架构的内容(例如,表和卷)可以在左侧目录窗格中选择。 可以通过单击目录窗格上方的齿轮图标,并从菜单中选择对象类别,来查找其他对象,例如外部位置或 Delta Sharing 共享。

    对于大多数对象,所有者显示在对象详细信息页的“概述”选项卡上。 对于一些对象(例如,外部位置),它显示在对象详细信息页的顶部。

SQL

在笔记本或 SQL 查询编辑器中运行以下 SQL 命令。 替换占位符值替:

  • <securable-type>:安全对象的类型,例如 CATALOGTABLE
  • <catalog>:如果要查看架构或架构的内容,则为父目录。
  • <schema>:如果要查看架构的内容(例如,表或视图),则为父架构。
  • <securable-name>:安全对象的名称。
DESCRIBE <securable-type> EXTENDED <catalog>.<schema>.<securable-name>;

转让所有权

可使用目录资源管理器或 SQL 语句查看对象的所有者

所需权限:如果你是当前所有者、元存储管理员或容器的所有者(架构的目录、表的架构)或对对象具有 MANAGE 特权的用户,则可以转让对象所有权。 Delta Sharing 共享对象是一个例外:具有USE SHARESET SHARE PERMISSION特权的主体也可以转让共享所有权。

注意

为了防止特权升级,只有元存储管理员可以将视图、函数或模型的所有权转让给帐户中的任何用户、服务主体或组。 当前所有者和具有 MANAGE 特权的用户只能将所有权转移给其用户名或他们所属的组。

目录资源管理器

  1. 在 Azure Databricks 工作区中,单击 “数据”图标。目录

  2. 选择对象,例如目录、架构、表、视图、外部位置或存储凭据。

    如何导航到对象取决于对象。 目录、架构和架构的内容(例如,表和卷)可以在左侧目录窗格中选择。 可以通过单击目录窗格上方的齿轮图标,并从菜单中选择对象类别,来查找其他对象,例如外部位置或 Delta Sharing 共享。

    对于大多数对象,所有者显示在对象详细信息页的“概述”选项卡上。 对于一些对象(例如,外部位置),它显示在对象详细信息页的顶部。

  3. 点击“所有者”旁边的“编辑”图标编辑图标

  4. 搜索并选择组、用户或服务主体。

  5. 单击“ 保存”。

SQL

在笔记本或 SQL 查询编辑器中运行以下 SQL 命令。 替换占位符值替:

  • <securable-type>:安全对象的类型,例如 CATALOGTABLE。 此命令不支持 METASTORE 作为安全对象。
  • <securable-name>:安全对象的名称。 如果要修改架构或架构的内容,则必须使用完整的三级命名空间 (catalog.schema.object),除非已指定父目录和/或架构。
  • <principal> 是用户、服务主体(由其 applicationId 值表示)或组。 必须用反引号 () 将包含` `的用户、服务主体和组名括起来。 请参阅主体
ALTER <securable-type> <securable-name> OWNER TO <principal>;

例如,要将orders表的所有权转让给accounting组:

ALTER TABLE mycatalog.myschema.orders OWNER TO `accounting`;