Unity Catalog 中的每个安全对象都有一个所有者。 所有者可以是任何主体:用户、服务主体或帐户组。 创建对象的主体将成为其初始所有者。 对象的所有者拥有该对象的所有权限(例如对表的 SELECT
和 MODIFY
),并且有权向其他主体授予权限。 对象的所有者能够删除对象。
所有者权限
对象的所有者将自动被授予对该对象的所有权限。 此外,对象所有者可以授予对对象本身及其所有子对象的权限。 这意味着架构的所有者不会自动拥有架构中表的所有权限,但可以向自己授予对架构中表的权限。
注意
“所有者对对象拥有所有特权”规则有一个例外情况:为了避免数据意外外泄,架构所有者默认不具有 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
权限的任何用户或对象的父级都可以查看对象所有者。
目录资源管理器
在 Azure Databricks 工作区中,单击
目录。
选择对象,例如目录、架构、表、视图、卷、外部位置或存储凭据。
如何导航到对象取决于对象。 目录、架构和架构的内容(例如,表和卷)可以在左侧目录窗格中选择。 可以通过单击目录窗格上方的
,并从菜单中选择对象类别,来查找其他对象,例如外部位置或 Delta Sharing 共享。
对于大多数对象,所有者显示在对象详细信息页的“概述”选项卡上。 对于一些对象(例如,外部位置),它显示在对象详细信息页的顶部。
SQL
在笔记本或 SQL 查询编辑器中运行以下 SQL 命令。 替换占位符值替:
-
<securable-type>
:安全对象的类型,例如CATALOG
或TABLE
。 -
<catalog>
:如果要查看架构或架构的内容,则为父目录。 -
<schema>
:如果要查看架构的内容(例如,表或视图),则为父架构。 -
<securable-name>
:安全对象的名称。
DESCRIBE <securable-type> EXTENDED <catalog>.<schema>.<securable-name>;
转让所有权
可使用目录资源管理器或 SQL 语句查看对象的所有者。
所需权限:如果你是当前所有者、元存储管理员或容器的所有者(架构的目录、表的架构)或对对象具有 MANAGE
特权的用户,则可以转让对象所有权。 Delta Sharing 共享对象是一个例外:具有USE SHARE
和SET SHARE PERMISSION
特权的主体也可以转让共享所有权。
注意
为了防止特权升级,只有元存储管理员可以将视图、函数或模型的所有权转让给帐户中的任何用户、服务主体或组。 当前所有者和具有 MANAGE
特权的用户只能将所有权转移给其用户名或他们所属的组。
目录资源管理器
在 Azure Databricks 工作区中,单击
目录。
选择对象,例如目录、架构、表、视图、外部位置或存储凭据。
如何导航到对象取决于对象。 目录、架构和架构的内容(例如,表和卷)可以在左侧目录窗格中选择。 可以通过单击目录窗格上方的
,并从菜单中选择对象类别,来查找其他对象,例如外部位置或 Delta Sharing 共享。
对于大多数对象,所有者显示在对象详细信息页的“概述”选项卡上。 对于一些对象(例如,外部位置),它显示在对象详细信息页的顶部。
点击“所有者”旁边的
编辑图标。
搜索并选择组、用户或服务主体。
单击“ 保存”。
SQL
在笔记本或 SQL 查询编辑器中运行以下 SQL 命令。 替换占位符值替:
-
<securable-type>
:安全对象的类型,例如CATALOG
或TABLE
。 此命令不支持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`;