Unity Catalog 特权和安全对象

本文介绍 Unity Catalog 安全对象及其适用的特权。 若要了解如何在 Unity Catalog 中授予权限,请参阅“显示、授予和撤销权限”。

注意

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

Unity Catalog 中的安全对象

安全对象是在 Unity Catalog 元存储中定义的对象,可以在其上向主体(用户、服务主体或组)授予特权。 Unity Catalog 中的安全对象是分层的。

Unity Catalog 对象层次结构

安全对象包括:

  • 元存储:元数据的顶级容器。 每个 Unity Catalog 元存储都公开了一个用于组织数据的三级命名空间 (catalog.schema.table)。

    管理元对存储的特权时,SQL 命令中请勿包含元存储名。 Unity Catalog 授予或撤销对附加到工作区的元存储的特权。 例如,以下命令向名为 engineering 的组授予权限,允许其在附加到工作区的元存储中创建目录:

    GRANT CREATE CATALOG ON METASTORE TO engineering
    
  • 目录:用于组织数据资产的对象层次结构的第一层。 外部目录是一种特殊的目录类型,用于在 Lakehouse Federation 方案中镜像外部数据系统中的数据库。

  • 架构:也称为数据库,是对象层次结构的第二层,包含表和视图。

  • :对象层次结构的最底层,可以是外部表(存储在所选云存储中的外部位置),也可以是托管表(存储在你为 Azure Databricks 显式创建的云存储中的存储容器中)。

  • 视图:从一个或多个表中的查询创建的只读对象,包含在架构中。

  • VOLUME:对象层次结构的最底层,可以是外部卷(存储在所选云存储中的外部位置),也可以是托管卷(存储在你为 Azure Databricks 显式创建的云存储的存储容器中)。

  • 函数:架构中包含的用户定义的函数MLflow 已注册模型

  • 模型MLflow 已注册模型是特定类型的函数。 模型与目录资源管理器中的其他函数分开列出,但在使用 SQL 授予模型特权时,可以使用 GRANT ON FUNCTION

  • 外部位置:包含对存储凭据和云存储路径的引用的对象,包含在 Unity Catalog 元存储中。

  • 存储凭据:封装长期云凭据的对象,该凭据可用于访问 Unity Catalog 元存储中包含的 Cloud Storage。

  • CONNECTION:指定用于在 Lakehouse Federation 方案中访问外部数据库系统的路径和凭据。

  • 共享:为要使用 Delta Sharing 进行共享的表提供逻辑分组。 共享包含在 Unity Catalog 元存储中。

  • 收件人:确定可以使用 Delta Sharing 与其共享数据的组织或用户组的对象。 这些对象包含在 Unity Catalog 元存储中。

  • 提供商:表示组织的对象,该组织已使用 Delta Sharing 提供数据进行共享。 这些对象包含在 Unity Catalog 元存储中。

Unity Catalog 中安全对象的特权类型

下表列出了适用于 Unity Catalog 中每个安全对象的特权类型。 若要了解如何在 Unity Catalog 中授予权限,请参阅“显示、授予和撤销权限”。

安全对象 权限
元存储 CREATE CATALOGCREATE CONNECTIONCREATE EXTERNAL LOCATIONCREATE PROVIDERCREATE RECIPIENTCREATE SHARECREATE STORAGE CREDENTIALSET SHARE PERMISSIONUSE MARKETPLACE ASSETSUSE PROVIDERUSE RECIPIENTUSE SHARE
目录 ALL PRIVILEGESAPPLY TAGBROWSECREATE SCHEMAUSE CATALOG

默认情况下,所有用户在 main 目录中都有 USE CATALOG 权限。

以下特权类型适用于目录中的安全对象。 可以在目录级别授予这些特权,以将其应用于目录中当前的对象和未来的对象。

CREATE FUNCTIONCREATE TABLECREATE MODELCREATE VOLUMECREATE FOREIGN CATALOGREAD VOLUMEREFRESHWRITE VOLUMEEXECUTEMODIFYSELECTUSE SCHEMA
架构 ALL PRIVILEGESAPPLY TAGCREATE FUNCTIONCREATE TABLECREATE MODELCREATE VOLUMECREATE MATERIALIZED VIEWUSE SCHEMA

以下特权类型适用于架构中的安全对象。 可以在架构级别授予这些特权,以将其应用于架构中当前的对象和未来的对象。

EXECUTEMODIFYREAD VOLUMEREFRESHSELECTWRITE VOLUME
ALL PRIVILEGESAPPLY TAGMODIFYSELECTSINGLE USER ACCESS
视图 ALL PRIVILEGESAPPLY TAGSELECT
音量 ALL PRIVILEGESREAD VOLUMEWRITE VOLUME
外部位置 ALL PRIVILEGESBROWSECREATE EXTERNAL TABLECREATE EXTERNAL VOLUMEREAD FILESWRITE FILESCREATE MANAGED STORAGE
存储凭据 ALL PRIVILEGESCREATE EXTERNAL LOCATIONCREATE EXTERNAL TABLEREAD FILESWRITE FILES
连接 ALL PRIVILEGESCREATE FOREIGN CATALOGUSE CONNECTION
函数 ALL PRIVILEGESAPPLY TAG(仅限模型)、EXECUTE
型号 已注册模型是一种函数类型。
共享 SELECT(可授予给 RECIPIENT
Recipient
提供程序

常规 Unity Catalog 特权类型

本部分提供通常适用于 Unity Catalog 的特权类型的详细信息。 若要了解如何在 Unity Catalog 中授予权限,请参阅“显示、授予和撤销权限”。

所有特权

适用的对象类型:CATALOGEXTERNAL LOCATIONSTORAGE CREDENTIALSCHEMAFUNCTION(包括模型)TABLEVIEW,VOLUME

用于授予或撤销适用于安全对象及其子对象的所有特权,无需显式指定这些特权。

在授予有关对象的 ALL PRIVILEGES 时,它不会在授权时向用户单独授予每个适用的特权。 相反,它在进行权限检查时扩展到所有可用特权。 这意味着,当 Databricks 发布新特权和新安全对象时,现有 ALL PRIVILEGES 授予会自动包括适用于安全对象、其现有子对象和任何新子对象的任何新特权。

在撤销 ALL PRIVILEGES 时,将会撤销 ALL PRIVILEGES 特权,并且也会撤销授予用户对于对象的任何显式特权。

为了避免数据意外外泄,ALL PRIVILEGES 不包括 EXTERNAL USE SCHEMA 特权。

注意

在层次结构中的更高级别应用时,此特权功能强大。 例如,GRANT ALL PRIVILEGES ON CATALOG main TO analysts 授予分析员团队对目录中每个现有和将来的安全对象的所有现有和未来特权。

应用标记

适用的对象类型:CATALOGSCHEMATABLEVOLUMEMATERIALIZED VIEWVIEW、注册为FUNCTION 的模型

允许用户在对象上添加和编辑标记。 向表或视图授予 APPLY TAG 还会启用列标记。 向已注册模型授予 APPLY TAG 还会启用模型版本标记。

用户还必须对其父目录具有 USE CATALOG 特权,对其父架构具有 USE SCHEMA 特权。

BROWSE

适用的对象类型:CATALOGEXTERNAL LOCATION

重要

此功能目前以公共预览版提供。

允许用户使用目录资源管理器、架构浏览器、搜索结果、世系图、information_schema 和 REST API 查看对象的元数据。

用户不需要对父目录的 USE CATALOG 特权或对父架构的 USE SCHEMA 特权。

默认情况下,会为所有用户授予对使用目录资源管理器创建的新目录的 BROWSE 特权。 如果需要,可以撤销该特权。 默认情况下,使用 SQL 语句、REST API 或 Databricks CLI 创建的目录不会授予 BROWSE 特权。 必须公开授予该特权。

CREATE CATALOG

适用的对象类型:Unity Catalog 元存储

允许用户在 Unity Catalog 元存储中创建目录。 若要创建外部目录,还必须对包含外部目录的连接或元存储具有 CREATE FOREIGN CATALOG 特权。

CREATE CONNECTION

适用的对象类型:Unity Catalog 元存储

允许用户在 Lakehouse Federation 方案中创建与外部数据库的连接。

CREATE EXTERNAL LOCATION

适用的对象类型:Unity Catalog 元存储、STORAGE CREDENTIAL

若要创建外部位置,用户必须对要在外部位置引用的元存储和存储凭据具有此权限。

CREATE EXTERNAL TABLE

适用的对象类型:EXTERNAL LOCATIONSTORAGE CREDENTIAL

使用户可使用外部位置或存储凭据直接在云租户中创建外部表。 Databricks 建议在外部位置而不是存储凭据上授予此特权(由于其范围为路径,因此可以更好地控制允许用户在云租户中创建外部表的位置)。

创建外部卷

适用的对象类型:EXTERNAL LOCATION

允许用户使用外部位置创建外部卷。

创建外部目录

适用的对象类型:CONNECTION

允许用户在 Lakehouse Federation 方案中使用与外部数据库的连接来创建外部目录。

CREATE FUNCTION

适用的对象类型:SCHEMA

允许用户在架构中创建函数。 由于继承了特权,因此还可以授予对目录的 CREATE FUNCTION 权限,这使用户可以在目录中的任何现有架构或未来的架构中创建函数。

用户还必须对其父目录具有 USE CATALOG 特权,对其父架构具有 USE SCHEMA 特权。

CREATE MODEL

适用的对象类型:SCHEMA

允许用户在架构中创建 MLflow 已注册模型(这是一种函数)。 由于继承了特权,因此还可以授予对目录的 CREATE MODEL 权限,这使用户可以在目录中的任何现有架构或未来的架构中创建注册模型。

用户还必须对其父目录具有 USE CATALOG 特权,对其父架构具有 USE SCHEMA 特权。

CREATE MANAGED STORAGE

适用的对象类型:EXTERNAL LOCATION

允许用户在目录级或架构级指定用于存储托管表的位置,覆盖元存储的默认根存储。

CREATE SCHEMA

适用的对象类型:CATALOG

使用户可以创建架构。 用户还必须对目录具有 USE CATALOG 特权。

创建存储凭据

适用的对象类型:Unity Catalog 元存储

允许用户在 Unity Catalog 元存储中创建存储凭据。

不能授予服务主体,无论是 Microsoft Entra ID 还是本机 Azure Databricks 服务主体。

CREATE TABLE

适用的对象类型:SCHEMA

使用户可以在架构中创建表或视图。 由于继承了特权,因此还可以授予对目录的 CREATE TABLE 权限,这使用户可以在目录中的任何现有架构或未来的架构中创建表或视图。

用户还必须对其父目录具有 USE CATALOG 特权,对其父架构具有 USE SCHEMA 特权。

CREATE MATERIALIZED VIEW

适用的对象类型:SCHEMA

允许用户在架构中创建具体化视图。 由于继承了特权,因此还可以授予对目录的 CREATE MATERIALIZED VIEW 权限,这使用户可以在目录中的任何现有架构或未来的架构中创建表或视图。

用户还必须对其父目录具有 USE CATALOG 特权,对其父架构具有 USE SCHEMA 特权。

CREATE VOLUME

适用的对象类型:SCHEMA

允许用户在架构中创建卷。 由于继承了特权,因此还可以授予对目录的 CREATE VOLUME 特权,这使用户可以在目录中的任何现有架构或未来架构中创建卷。

用户还必须对卷的父目录具有 USE CATALOG 特权,对其父架构具有 USE SCHEMA 特权。

EXECUTE

适用的对象类型:FUNCTION、模型

允许用户调用用户定义的函数或加载模型进行推理,前提是用户对其父目录具有 USE CATALOG 权限,且对其父架构具有 USE SCHEMA 权限。 对于函数,EXECUTE 会授予查看函数定义和元数据的权限。 对于已注册模型,EXECUTE 会授予查看已注册模型的所有版本的元数据以及下载模型文件的权限。

由于继承了特权,因此可以授予用户对目录或架构的 EXECUTE 特权,这会自动授予用户对目录或架构中所有当前函数和未来函数的 EXECUTE 特权。

EXTERNAL USE SCHEMA

适用的对象类型:SCHEMA

允许用户获得临时凭据,从使用 Unity Catalog Open API 或 Iceberg REST API 的外部处理引擎访问 Unity Catalog 表。

只有目录所有者才能授予此特权。

为了避免数据意外外泄,ALL PRIVILEGES 不包括 EXTERNAL USE SCHEMA 特权,架构所有者默认不具有此特权。

管理允许列表

适用的对象类型:Unity Catalog 元存储

允许用户在允许列表中添加或修改 init 脚本、JAR 和 Maven 坐标的路径,该允许列表通过共享访问模式管理启用 Unity Catalog 的群集。 请参阅将共享计算上的库和 init 脚本加入允许列表

MODIFY

适用的对象类型:TABLE

允许用户在表中添加、更新和删除数据,前提是用户拥有对表的 SELECT 权限、对其父目录的 USE CATALOG 权限以及对其父架构的 USE SCHEMA 权限。

由于继承了特权,因此可以授予用户对目录或架构的 MODIFY 特权,这会自动授予用户对目录或架构中所有当前表和未来表的 MODIFY 特权。

READ FILES

适用的对象类型:VOLUMEEXTERNAL LOCATION

使用户可直接从云对象存储读取文件。 Databricks 建议授予对卷的此特权,并针对少数几个用例在外部位置授予此特权。 如需更多指导,请参阅管理外部位置、外部表和外部卷

READ VOLUME

适用的对象类型:VOLUME

允许用户读取存储在卷内的文件和目录(如果该用户还对其父目录具有 USE CATALOG 特权,并对其父架构具有 USE SCHEMA 特权)。

将会继承特权。 如果可以授予用户对目录或架构的 READ VOLUME 特权,则会自动授予用户对目录或架构中所有当前卷和未来卷的 READ VOLUME 特权。

SELECT

适用对象类型:TABLEVIEWMATERIALIZED VIEWSHARE

如果应用于表或视图,用户就可以从表或视图中进行选择,前提是用户对其父目录有 USE CATALOG 权限,对其父架构有 USE SCHEMA 权限。 如果应用于共享,收件人就可以从共享中进行选择。

由于继承了特权,因此可以授予用户对目录或架构的 SELECT 特权,这会自动授予用户对目录或架构中所有当前及未来的表和视图的 SELECT 特权。

USE CATALOG

适用的对象类型:CATALOG

此特权不授予对目录本身的访问权限,但用户需要此特权才能与目录中的任何对象进行交互。 例如,若要从表中选择数据,用户需要具有对该表的 SELECT 特权、对其父目录的 USE CATALOG 特权以及对其父架构的 USE SCHEMA 特权。

如需使目录所有者能够限制各个架构所有者和表所有者可共享其生成数据的程度,这就非常有用。 例如,将 SELECT 授予另一个用户的表所有者不允许该用户对该表进行读取访问,除非还授予他们对其父目录的 USE CATALOG 特权以及对其父架构的 USE SCHEMA 特权。

如果用户对父目录拥有 BROWSE 权限,则不需要对该目录拥有 USE CATALOG 权限即可读取对象的元数据。

USE CONNECTION

适用的对象类型:CONNECTION

允许用户在 Lakehouse Federation 方案中列出和查看有关外部数据库连接的详细信息。 若要为连接创建外部目录,必须对连接具有 CREATE FOREIGN CATALOG 特权或具有连接所有权。

USE SCHEMA

适用的对象类型:SCHEMA

此特权不授予对架构本身的访问权限,但用户需要此特权才能与架构中的任何对象进行交互。 例如,若要从表中选择数据,用户需要具有对该表的 SELECT 特权、对其父架构的 USE SCHEMA 特权以及对其父目录的 USE CATALOG 特权。

由于继承了特权,因此可以授予用户对目录的 USE SCHEMA 特权,这会自动授予用户对目录中所有当前架构和未来架构的 USE SCHEMA 特权。

如果用户对父架构或其父目录拥有 BROWSE 权限,则不需要对该架构拥有 USE SCHEMA 权限即可读取对象的元数据。

WRITE FILES

适用对象类型:VOLUMEEXTERNAL LOCATION

使用户可将文件直接写入云对象存储中。 Databricks 建议授予对卷的此特权。 在外部位置谨慎地授予此特权。 如需更多指导,请参阅管理外部位置、外部表和外部卷

WRITE VOLUME

适用的对象类型:VOLUME

允许用户添加、删除或修改存储在卷内的文件和目录(如果该用户还对其父目录具有 USE CATALOG 特权,并对其父架构具有 USE SCHEMA 特权)。

将会继承特权。 如果可以授予用户对目录或架构的 WRITE VOLUME 特权,则会自动授予用户对目录或架构中所有当前卷和未来卷的 WRITE VOLUME 特权。

仅适用于 Delta Sharing 或 Databricks Marketplace 的特权类型

本部分提供仅适用于 Delta Sharing 的特权类型的详细信息。

CREATE PROVIDER

适用的对象类型:Unity Catalog 元存储

允许用户在元存储中创建 Delta Sharing 提供程序对象。 提供程序标识使用 Delta Sharing 共享数据的组织或用户组。 接收者的 Databricks 帐户中的用户执行提供者创建操作。 请参阅什么是 Delta Sharing?

CREATE RECIPIENT

适用的对象类型:Unity Catalog 元存储

允许用户在元存储中创建 Delta Sharing 接收者对象。 收件人确定可以使用 Delta Sharing 与其共享数据的组织或用户组。 提供者的 Databricks 帐户中的用户执行接收者创建操作。 请参阅什么是 Delta Sharing?

CREATE SHARE

适用的对象类型:Unity Catalog 元存储

使用户可在元存储中创建共享。 共享是使用 Delta Sharing 为要共享的表提供逻辑分组

SET SHARE PERMISSION

适用的对象类型:Unity Catalog 元存储

在 Delta Sharing 中,将此特权与 USE SHAREUSE RECIPIENT(或接收方所有权)相结合,可让提供者用户向接收者授予对共享的访问权限。 将此权限与 USE SHARE 相结合,可将共享所有权转移给其他用户、组或服务主体。

使用市场资产

适用的对象类型:Unity Catalog 元存储

默认情况下,为所有 Unity Catalog 元存储启用。 在 Databricks Marketplace 中,此特权为用户提供即时访问或请求访问 Marketplace 列表中共享的数据产品的能力。 它还允许用户访问在提供程序共享数据产品时创建的只读目录。 如果没有此特权,用户将需要 CREATE CATALOGUSE PROVIDER 特权或元存储管理员角色。 这使你能够限制具有这些强大权限的用户数量。

USE PROVIDER

适用的对象类型:Unity Catalog 元存储

在 Delta Sharing 中,为接收者用户授予对接收者元存储及其共享中所有提供者的只读访问权限。 将此特权与 CREATE CATALOG 特权相结合,可让非元存储管理员的接收者用户将共享装载为目录。 这样,你便可以限制具有超级元存储管理员角色的用户数量。

USE RECIPIENT

适用的对象类型:Unity Catalog 元存储

在 Delta Sharing 中,为提供者用户授予对提供者元存储及其共享中所有接收者的只读访问权限。 这样,非元存储管理员的提供者用户就可以查看接收者详细信息、接收者身份验证状态,以及提供者与接收者共享的共享列表。

USE SHARE

适用的对象类型:Unity Catalog 元存储

在 Delta Sharing 中,为提供者用户授予对提供者元存储中定义的所有共享的只读访问权限。 这样,非元存储管理员的提供者用户就可以列出共享,并将共享中的资产(表和笔记本)与共享接收者一起列出。