本页介绍 Unity 目录中的所有安全对象。 安全对象是在 Unity 目录中定义的对象,可以向其授予主体(用户、服务主体或组)的特权。
Unity 目录对象层次结构
Unity Catalog 中的安全对象是分层的。 此分层结构为 Unity 目录中的访问控制提供了基础。
元存储是顶级安全对象。 在此元存储中,数据资产位于三级命名空间中,该命名空间定义其 目录、 架构和资产类型,例如 表 (catalog.schema.table)。 下图突出显示了这些安全对象。
上图显示了以下内容:
- 目录 是数据资产的顶层层。 目录直接存在于元存储下。 它们用于组织数据和 AI 资产,通常按组织单位或软件开发生命周期范围进行组织。
Unity 目录中还有其他许多安全对象。 所有这些对象都直接存在于元存储下。 下图突出显示了这些安全对象。
这些安全对象可以广泛分类为两个组。 第一个组包括管理对云存储和其他外部数据源和服务的访问权限的对象:
- 存储凭据 是表示访问云存储中特定路径所需的身份验证信息的对象。
- 外部位置 是表示云存储中特定路径的对象。 它还包括对访问该路径所需的存储凭据的引用。
- 外部元数据对象用于为在 Unity 目录外部运行的系统定义自定义数据世系关系。
- 服务凭据 是表示访问外部云服务所需的身份验证信息的对象。
- 连接 是表示与外部数据库系统的连接的对象。
第二个组包括管理跨元存储或组织边界的数据和 AI 资产共享访问的对象:
- 共享 是表示要与外部 收件人共享的数据资产的逻辑分组的对象。
- 提供程序 是表示外部组织或与组织共享数据的用户组的对象。
- 收件人 是表示 提供程序 与之共享数据的外部组织或用户组的对象。
- 清理室 是表示与其他组织协作的安全环境的对象,无需公开基础数据。
以下各节更详细地描述了每个安全对象。
元数据仓库
元存储是 Unity 目录中的顶级安全对象。 元存储包含单个云区域中 Unity 目录中注册的所有安全对象。 这些对象不仅包括组织数据的目录,还包括控制数据访问和共享方式的对象,例如服务凭据、存储凭据、外部位置、连接、共享、收件人、提供程序和清理室。
下表总结了有关元存储的重要详细信息:
| 详细信息 | 说明 |
|---|---|
| Scope | 元存储的范围限定为单个云区域。 你的组织需要每个在其中运行它的区域一个元存储。 单个元存储可以附加到同一区域中的多个工作区。 元存储中的权限授予适用于附加到该元存储的所有工作区。 换句话说,在一个工作区中授予的权限在共享该元存储的所有其他工作区中有效。 |
| 元存储特权 | 元存储上的特权允许在元存储级别执行操作。 例如, CREATE CATALOG 允许用户在元存储中创建目录。 但是,这不会向用户授予对目录中数据的访问权限。 有关适用权限的完整列表,请参阅 特权类型表。重要的是,在元存储级别授予的权限不会继承到层次结构中的子对象。 元存储级授予仅限于元存储级操作。 这不同于目录和架构授予的特权继承行为,其中继承的权限会自动应用于所有当前和将来的子对象。 请参阅 权限继承。 |
| 元存储管理员 | 元存储管理员是 Azure Databricks 中的可选角色。 它由帐户管理员分配。 某些功能仅适用于元存储管理员,包括删除元存储、管理工作区分配以及获取元存储中任何对象的所有权,从而间接访问元存储中的所有数据。 无法通过标准特权授予授予这些功能。 请参阅元存储管理员。 自动为 Unity 目录启用工作区时,工作区管理员会收到一组默认的元存储级特权,包括 CREATE CATALOG和CREATE STORAGE CREDENTIALCREATE EXTERNAL LOCATION。 这些操作不会传输到附加到同一元存储的其他工作区。 请参阅《为 Unity Catalogu 自动启用工作区时的工作区管理员权限》。 |
Catalog
在 元存储中, 目录 是数据资产的第一层和最高级别层。 目录是 容器对象。 目录包含架构,而架构又包含表、视图、卷和函数。
我们经常引用 Unity 目录中数据的“三级命名空间”。catalogschematable。 在这里,目录是三级命名空间的第一层。
下表总结了有关目录的重要详细信息:
| 详细信息 | 说明 |
|---|---|
| 继承 | 对目录授予的权限会自动应用于其中所有当前和将来的架构、表、视图、卷和函数。 例如,授予SELECT目录允许用户读取该目录中的任何表(具有适当的USE CATALOG和使用USE SCHEMA权限)。 请参阅 权限继承。由于继承,目录级权限非常广泛。 向用户授予他们时要小心。 |
使用特权 (USE CATALOG) |
USE CATALOG在用户可以与目录中的任何对象交互之前,需要使用使用权限。 这与它们持有子对象的权限无关。 |
特权BROWSE |
BROWSE授予用户对目录的权限后,他们无需授予数据访问权限即可发现和查看目录中所有对象的元数据,包括子架构、表、视图、卷和函数。
BROWSE 只能在目录级别授予。Databricks 建议授予 BROWSEAll account users组,以便用户可以根据需要发现数据和请求访问权限。 |
| 工作区绑定 | 默认情况下,可从附加到同一元存储的所有工作区访问目录。 可以通过将目录绑定到特定工作区来限制此限制,可以选择将其作为只读工作区。 工作区绑定取代单个特权授予。 即使是具有显式 SELECT 授权的用户也无法访问未绑定到工作区的目录中的对象。 请参阅 将目录访问限制到特定工作区。 |
有关目录的详细信息,请参阅 什么是 Azure Databricks 中的目录?。
Schema
在 目录中, 架构 (也称为数据库)是数据资产的对象层次结构的第二层。 架构是 容器对象。 架构包含表、视图、卷和函数。
我们经常引用 Unity 目录中数据的 三级命名空间 (即 catalog.schema.table)。 在这里,架构是三级命名空间的第二层。
下表总结了有关架构的重要详细信息:
| 详细信息 | 说明 |
|---|---|
| 继承 | 授予架构的权限会自动应用于其中所有当前和将来的表、视图、卷和函数。 例如,授予SELECT架构后,用户可以读取该架构中的任何表(具有适当的USE CATALOG和使用USE SCHEMA权限)。 请参阅 权限继承。由于继承,架构级权限可能非常广泛。 在向用户授予权限之前,请查看架构中包含的对象。 |
使用特权 (USE SCHEMA) |
USE SCHEMA在用户可以与架构中的任何对象交互之前,需要使用使用权限。 这除了 USE CATALOG 在架构的父目录上。
USE SCHEMA授权本身不会提供对架构中的数据的访问权限。 |
有关架构的详细信息,请参阅 架构。
表
在 架构中, 表 是 Unity 目录中结构化数据的主要安全对象。 以下是 Azure Databricks 中的表类型:
- 托管表 是存储位置路径由 Unity 目录确定的表。 重要的是,数据本身仍驻留在云帐户中。 Databricks 建议使用托管表来利用最新的表功能。 请参阅 Azure Databricks for Delta Lake 和 Apache Iceberg 中的 Unity 目录托管表。
- 外部表 是指定存储位置路径的表。 Unity 目录继续管理表的元数据,但不管理数据的生命周期、优化、存储位置或布局。 请参阅处理外部表。
- 外表 是 Unity 目录中注册的外国目录中的表。 请参阅 处理外部表。
下表汇总了有关表的重要详细信息:
| 详细信息 | 说明 |
|---|---|
| 使用权限 | 若要访问表,除了相关的表级特权(例如SELECT或MODIFY)外,用户还必须对父目录和USE SCHEMA父架构(使用权限)具有USE CATALOG。 |
| 继承 | 表特权可以从父架构或目录继承。 例如,授予 SELECT 架构会自动授予 SELECT 该架构中所有当前表和将来的表。 请参阅 权限继承。 |
| 读取和写入访问权限 | 用于 SELECT 授予读取访问权限和 MODIFY 授予写入访问权限(插入、更新、删除)。 通过 Lakehouse Federation 访问的外国表是只读的,不支持特权 MODIFY 。 |
有关表的详细信息,请参阅 Azure Databricks 表。
查看
在 架构中, 视图 是由存储的 SQL 查询对一个或多个表或其他视图定义的只读对象。 查看对每个查询重新计算结果。
下表总结了有关视图的重要详细信息:
| 详细信息 | 说明 |
|---|---|
| 使用权限 | 若要访问视图,除了对视图,用户还必须具有USE CATALOG父目录和USE SCHEMA父架构(使用权限SELECT)。用户不需要对视图查询的基础表拥有特权。 视图所有者的权限用于在查询时解析基础表。 对于表所有者,这使得视图可用于限制对特定行或列的访问,而无需直接公开基础表。 |
| 继承 |
SELECT 在架构或目录级别授予的权限适用于该架构或目录中的所有当前和将来视图。 请参阅 权限继承。 |
有关视图的详细信息,请参阅什么是视图?
具体化视图
具体化视图是预先计算并存储其查询结果的视图。 结果反映上次刷新具体化视图时的数据状态。
具体化视图的权限模型与标准视图的权限模型相同。 此外SELECTMANAGE,具体化视图还支持REFRESH特权,允许用户触发具体化视图结果的刷新。 只有 SELECT 和适当的 使用权限 的用户可以查询存储的结果,但无法触发刷新。
有关具体化视图的详细信息,请参阅 具体化视图。
指标视图
指标视图是一个只读对象,它基于一个或多个表、视图或 SQL 查询定义一组可重用指标定义。 用户按标准视图查询指标视图。
具体化视图的权限模型与标准视图的权限模型相同。 用户需要 SELECT 适当的 使用权限 才能查询指标视图。 指标视图所有者的权限用于在查询时解析基础数据源。
有关指标视图的详细信息,请参阅 Unity 目录指标视图。
音量
在 架构中, 卷 是云存储中非结构化数据的安全对象。 卷可以管理(存储位置由 Unity 目录确定)或外部(指定存储路径)。 与表和视图不同,卷不支持 SQL 查询操作 , 它们提供对云存储中数据的文件级读取和写入访问权限。 以下是 Azure Databricks 中的卷类型:
- 托管卷 是存储位置路径由 Unity 目录确定的卷。 重要的是,数据本身仍驻留在云帐户中。 Databricks 建议使用托管卷让 Unity 目录自动控制所有数据访问。
- 外部卷 是指定存储位置路径的卷。 如果需要在 Azure Databricks 外部进行外部系统访问,则可以使用外部卷,但外部系统可以绕过 Unity 目录治理。
下表总结了有关卷的重要详细信息:
| 详细信息 | 说明 |
|---|---|
| 使用权限 | 若要访问卷中的文件,除了卷之外,用户还必须具有USE CATALOG父目录和USE SCHEMA父架构(使用权限READ VOLUMEWRITE VOLUME)。 |
| 读取和写入访问权限 | 用于 READ VOLUME 授予读取存储在卷中的文件和目录的能力,以及 WRITE VOLUME 授予添加、修改或删除文件的能力。 |
| 继承 |
READ VOLUME 并在 WRITE VOLUME 架构或目录级别授予,适用于该架构或目录中的所有当前和将来卷。 请参阅 权限继承。 |
有关卷的详细信息,请参阅“什么是 Unity Catalog 卷?”。
功能
在 架构中, 函数 是 Unity 目录中的安全对象,表示可重用的可执行逻辑。 函数包括用户定义的函数(UDF)、存储过程和已注册的模型(在 Unity 目录中注册的 MLflow 模型)。
- 用户定义的函数(UDF) 是用 SQL 或 Python 编写的自定义函数,可在 SQL 查询和笔记本中调用。 请参阅什么是用户定义函数 (UDF)?。
- 存储过程 是执行一系列 SQL 语句的用户定义例程,可能包括插入或更新数据等副作用。
- 已注册的模型 是在 Unity 目录中注册的 MLflow 机器学习模型。 在 Unity 目录中,注册的模型作为函数类型实现。 请参阅在 Unity Catalog 中管理模型生命周期。
下表汇总了有关函数的重要详细信息:
| 详细信息 | 说明 |
|---|---|
| 使用权限 | 若要执行函数或加载已注册的模型,除了对函数,用户还必须对父目录和USE SCHEMA父架构(使用权限)EXECUTE具有USE CATALOG。 |
特权EXECUTE |
EXECUTE授予对函数的用户允许他们调用该函数并查看其定义和元数据。 对于已注册的模型, EXECUTE 还允许用户查看已注册模型的所有版本的元数据,以及下载模型文件。 |
| 继承 |
EXECUTE 在架构或目录级别授予的权限适用于该架构或目录中的所有当前和将来函数。 请参阅 权限继承。 |
型号
模型是作为函数对象存储在 Unity 目录中的版本控制 MLflow 机器学习模型。 模型本身是容器。 每个训练运行的项目和元数据作为 模型版本 存储在其中。
已注册模型的权限模型与函数的权限模型相同。 以下附加特权特别适用于模型:
APPLY TAG:允许在模型及其版本上添加和编辑标记。 用户还必须在父目录和USE SCHEMA父架构上具有USE CATALOG。CREATE MODEL VERSION:允许用户注册新版本的模型,而无需授予执行、修改或向模型添加标记的能力。 用户还必须在父目录和USE SCHEMA父架构上具有USE CATALOG。
创建模型需要 CREATE MODEL 对架构具有特权,而不是 CREATE FUNCTION。
CREATE MODEL 还可以授予目录,以允许在该目录中的任何架构中创建模型。
有关模型的详细信息,请参阅 管理 Unity 目录中的模型生命周期。
存储凭据
在 元存储中, 存储凭据 是一个安全对象,用于存储访问云存储中特定路径所需的身份验证信息。 存储的身份验证方法取决于云提供商:AWS 上的 IAM 角色、Azure 上的服务主体或 GCP 上的服务帐户。
存储凭据最常用作 外部位置的构建基块,这些构建基块将存储凭据与特定的云存储路径配对。 存储凭据还可以直接用于创建外部表。
若要创建存储凭据,用户需要对 Unity 目录元存储拥有 CREATE STORAGE CREDENTIAL 特权。
有关存储凭据的详细信息,请参阅 存储凭据概述。
外部位置
在 元存储中, 外部位置 是一个安全对象,该对象将 存储凭据 与云存储路径配对。 它控制对云存储中特定路径的访问。
若要创建外部位置,用户需要对 Unity 目录元存储拥有 CREATE EXTERNAL LOCATION 特权。
创建外部位置后,用户需要 READ FILES 特权直接从存储路径读取文件,以及 WRITE FILES 写入文件的权限。 但是,Databricks 建议通过卷和READ VOLUMEWRITE VOLUME特权管理云存储访问,而不是直接授予READ FILES外部WRITE FILES位置。
有关外部位置的详细信息,请参阅 外部位置概述。
外部元数据
在 元存储中, 外部元数据 对象是一个安全对象,用于为在 Unity 目录的本机世系跟踪外部运行的系统定义自定义数据世系关系。
若要创建外部元数据对象,用户需要对 Unity 目录元存储拥有 CREATE EXTERNAL METADATA 特权。 若要在对象上添加或修改世系关系,用户需要 MODIFY 对外部元数据对象以及关系中引用的任何 Unity 目录对象的相应特权。
有关外部元数据的详细信息,请参阅 使用 Unity 目录查看数据世系。
服务凭证
在 元存储中, 服务凭据 是一个安全对象,用于存储用于访问外部云服务的身份验证信息。 这与管理对云存储的访问的 存储凭据不同。
若要创建服务凭据,用户需要对 Unity 目录元存储拥有 CREATE SERVICE CREDENTIAL 特权。
权限 ACCESS 允许用户使用服务凭据访问外部服务。
CREATE CONNECTION 服务凭据(与 CREATE CONNECTION 元存储上结合使用)允许用户使用该凭据创建与外部数据库的连接。
有关服务凭据的详细信息,请参阅 “创建服务凭据”。
连接
在 元存储中, 连接 是一个安全对象,用于定义与 Lakehouse 联合身份验证 方案中外部数据库系统的连接。
若要创建连接,用户需要对 Unity 目录元存储拥有 CREATE CONNECTION 特权。 如果连接使用 服务凭据,则用户还需要 CREATE CONNECTION 使用该服务凭据。
该 USE CONNECTION 权限允许用户列出和查看连接详细信息,并使用 remote_query 函数 直接在外部数据库上运行 SQL 查询。
CREATE FOREIGN CATALOG 通过连接,用户可以创建由该连接支持的外目录。
有关连接的详细信息,请参阅 管理 Lakehouse 联合身份验证的连接。
分享
在 元存储中, 共享 是增量共享中的安全对象,表示数据资产(表、视图和卷)的逻辑分组。 然后 ,提供程序 可以将共享提供给外部 收件人。
向 SELECT 收件人(而不是单个用户)授予共享的权限,以允许该收件人读取共享中的资产。 若要创建共享,用户需要对 Unity 目录元存储拥有 CREATE SHARE 特权。
有关共享的详细信息,请参阅 为增量共享创建和管理共享。
Provider
在 元存储中, 提供程序 是 Delta 共享中的安全对象,表示与组织共享数据的外部组织。 提供程序对象是在收件人的 Unity 目录元存储中创建的。 该 USE PROVIDER 权限允许用户查看所有提供程序及其共享,并结合 CREATE CATALOG这些提供程序来装载共享目录,而无需元存储管理员角色。
若要创建提供程序,用户需要对 Unity 目录元存储拥有 CREATE PROVIDER 特权。
有关提供程序的详细信息,请参阅 什么是增量共享?。
Recipient
在 元存储中, 收件人 是 Delta 共享中的一个安全对象,该对象代表提供程序与之共享数据的外部组织或用户组。 收件人对象是在提供程序的 Unity 目录元存储中创建的。 不能对收件人对象本身授予任何特权。 通过向收件人授予SELECT共享来控制对共享数据的访问。
若要创建收件人,用户需要对 Unity 目录元存储拥有 CREATE RECIPIENT 特权。
有关收件人的详细信息,请参阅创建和管理增量共享的数据收件人(Databricks 到 Databricks 共享)。
洁净室
在 元存储中, 清理室 是一个安全对象,它提供一个安全的环境,用于与其他组织协作处理共享数据,而无需任何一方向另一方公开其基础数据。
若要创建干净房间,用户需要 CREATE CLEAN ROOM Unity 目录元存储的特权。
该 EXECUTE CLEAN ROOM TASK 权限允许用户在清理室内运行笔记本,并查看清理室的详细信息。 该 MODIFY CLEAN ROOM 权限允许用户更新清理室,包括添加或删除数据资产、笔记本和注释。
有关干净房间的详细信息,请参阅 什么是 Azure Databricks Clean Room?。