使用 Unity Catalog 连接到云对象存储和服务
本文概述了使用 Unity Catalog 处理数据所需的云存储连接,以及 Unity Catalog 如何管理对云存储和外部云服务的访问的信息。
注意
如果工作区是在 2023 年 11 月 9 日之前创建的,则可能无法为 Unity Catalog 启用该工作区。 帐户管理员必须为工作区启用 Unity Catalog。 请参阅为工作区启用 Unity Catalog。
Unity Catalog 如何使用云存储?
Databricks 建议使用 Unity Catalog 卷来管理对云对象存储中已存储的所有数据的访问权限。 Unity Catalog 提供了一套工具,用于配置与云对象存储的安全连接。 这些连接提供完成以下操作的访问权限:
- 将数据引入湖屋。
- 在 Unity Catalog 管理的云存储中创建和读取托管表和非结构化数据的托管卷。
- 注册或创建包含表格数据和外部卷的外部表,其中包含使用云提供程序管理的云存储中的非结构化数据。
- 读取和写入非结构化数据(作为 Unity Catalog 卷)。
为了更具体化,Unity Catalog 以两种主要方式使用云存储:
- 在 Databricks 中创建的托管表和托管卷(非结构化的非表格数据)的默认(或“托管”)存储位置。 这些托管存储位置可以在元存储、目录或架构级别上定义。 在云提供商中创建托管存储位置,但其生命周期完全由 Unity Catalog 管理。
- 存储外部表和卷的存储位置。 这些是指使用 Unity Catalog 管理其 Azure Databricks 访问权限,但使用云提供程序和其他数据平台管理其数据生命周期和文件布局的表和卷。 通常情况下,使用外部表在 Azure Databricks 中注册大量现有数据,或者在需要使用 Azure Databricks 之外的工具对数据进行写访问时使用外部表。
有关托管和外部表和卷的详细信息,请参阅什么是表?和什么是 Unity Catalog 卷?。
警告
不要为最终用户提供对 Unity 目录托管表或卷的存储级访问权限。 这样做会损害数据安全和治理。
授予用户对 Azure Data Lake Storage Gen2 中外部位置存储的直接存储级访问权限不会遵守 Unity Catalog 授予的任何权限或维护的审核。 直接访问将绕过 Unity Catalog 的审核、世系以及其他安全和监视功能,包括访问控制和权限。 你需要负责管理通过 Azure Data Lake Storage Gen2 进行的直接存储访问,并确保通过 Fabric 为用户授予适当的权限。
对于存储 Databricks 托管表的存储桶,请避免为其使用授予直接存储级写入访问权限的所有方案。 直接通过存储修改、删除或演进任何最初由 Unity Catalog 管理的对象可能会导致数据损坏。
支持哪些云存储提供程序?
Azure Databricks 同时支持 Azure Data Lake Storage Gen2 容器和 Cloudflare R2 存储桶作为在 Unity Catalog 中注册的数据和 AI 资产的云存储位置。 R2 主要用于希望避免出现跨云和区域的增量共享等数据流出量费用的用例。 有关详细信息,请参阅使用 Cloudflare R2 副本或将存储迁移到 R2。
Unity Catalog 如何管理对云存储的访问?
为了管理对存储表和卷的底层云存储的访问,Unity Catalog 使用名为外部位置的安全对象,该对象定义云存储位置的路径以及访问该位置所需的凭据。 这些凭据又在名为 存储凭据的 Unity Catalog 安全对象中定义。 通过授予和撤消对 Unity Catalog 中外部位置安全对象的访问权限,可以控制对云存储位置中数据的访问。 通过授予和撤消对 Unity Catalog 中存储凭据安全对象的访问权限,可以控制创建外部位置对象的能力。
如需详细信息,请参阅使用 Unity Catalog 管理对云存储的访问权限。
对云存储的基于路径的访问
虽然 Unity Catalog 支持使用云存储 URI 对外部表和外部卷进行基于路径的访问,但 Databricks 建议使用表名读取和写入所有 Unity Catalog 表,并使用 /Volumes
路径访问卷中的数据。 卷是大多数 Azure Databricks 用户应该用来与云对象存储中的非表格数据直接交互的安全对象。 请参阅什么是 Unity Catalog 卷?。
通过 Unity Catalog 实现云存储的最佳做法
Azure Databricks 需要使用 Azure Data Lake Storage Gen2 作为 Azure 存储服务,用于在 Azure Databricks 中使用 Unity Catalog 治理处理的数据。 通过 Azure Data Lake Storage Gen2,可以分离存储和计算成本,并利用 Unity Catalog 提供的精细访问控制。 如果数据存储在 OneLake(Azure Fabric 数据湖)中,并由 Databricks 处理(绕过 Unity Catalog),则会产生捆绑的存储和计算成本。 与用于存储、读取和写入数据的 Azure Data Lake Storage Gen2 相比,读取和写入成本大约高出 3 倍,写入成本大约高出 1.6 倍。 Azure Blob 存储也与 Unity Catalog 不兼容。
功能 | Azure Blob 存储 | Azure Data Lake Storage Gen2 | OneLake |
---|---|---|---|
在 Unity Catalog 中不受支持 | X | ✓ | X |
需要购买其他 Fabric 容量 | X | X | ✓ |
外部引擎支持的操作 | - 阅读 - 撰写 |
- 阅读 - 撰写 |
- 读取(与从 Azure Data Lake Storage Gen2 读取数据相比,读取的成本为其 3 倍)。 - 不支持写入。 |
部署 | 区域 | Regional | 全局 |
身份验证 | Entra ID 共享访问签名 | Entra ID 共享访问签名 | Entra ID |
存储事件 | ✓ | ✓ | X |
软删除 | ✓ | ✓ | ✓ |
访问控制 | RBAC | RBAC、ABAC、ACL | RBAC(仅表/文件夹,不支持快捷方式 ACL) |
加密密钥 | ✓ | ✓ | X |
访问层级 | 联机存档 | 热、冷、寒、存档 | 仅热 |
Unity Catalog 如何控制对其他云服务的访问?
Unity Catalog 使用名为服务凭据的安全对象控制对非存储服务的访问。 服务凭证封装了一个长期云凭证,该凭证提供用户需要从 Azure Databricks 连接到的外部服务的访问权限。
服务凭证不适用于管理对用作 Unity Catalog 托管存储位置或外部存储位置的云存储的访问权限。 对于这些用例,请使用存储凭据,如 Unity Catalog 如何控制对云存储的访问?中所述。
有关详细信息,请参阅:
后续步骤
如果你刚刚以管理员身份开始使用 Unity Catalog,请参阅:
如果你是新用户,并且你的工作区已启用 Unity Catalog,请参阅:
若要详细了解如何管理对云存储的访问,请参阅:
若要详细了解如何管理对云服务的访问,请参阅: