使用 Unity Catalog 管理对云存储的访问

本文概述了如何使用 Unity Catalog 管理从 Azure Databricks 访问云存储。 本文介绍外部位置存储凭据托管存储的概念。

注意

如果要使用 Unity Catalog 来管理对外部服务(而不是云存储)的访问,请参阅 使用服务 credentials管理对外部云服务的访问。

外部位置和存储凭据

受 Unity Catalog 管理的所有数据都必须位于云提供商帐户的云存储中。 Unity Catalog 使用称为 外部位置的安全对象控制对云存储的访问,该对象定义云存储位置的路径以及访问该位置所需的 credentials。 反过来,这些凭据又在 Unity Catalog 安全对象中进行定义,称为存储凭据。 通过授予和撤消对 Unity Catalog中外部位置安全对象的访问权限,可以控制对云存储位置中的数据的访问。 通过授予和撤消对 Unity Catalog中存储凭据安全对象的访问权限,可以控制创建外部位置对象的能力。

下面是有关这两个安全对象的详细信息:

  • 存储凭据表示用于访问云租户上存储的数据的身份验证和授权机制,该机制对 Azure Data Lake Storage Gen2 容器使用 Azure 托管标识或服务主体,对 Cloudflare R2 存储桶则使用 R2 API 令牌。 Unity Catalog 中授予的权限控制着哪些用户和组可以使用凭据来定义外部位置。 只能向需要创建外部位置对象的用户授予创建和使用存储 credentials 的权限。 请参阅创建用于连接到 Azure Data Lake Storage Gen2 的存储凭据,以及创建用于连接到 Cloudflare R2 的存储凭据
  • 外部位置可将云存储路径与授权访问云存储路径的存储凭据相结合。 Unity 中授予的权限 Catalog 控制哪些用户和组可以访问外部位置定义的云存储路径。 仅应向需要创建外部 tables、外部 volumes或托管存储位置的用户授予创建和使用外部位置的权限。 请参阅创建外部位置以将云存储连接到 Azure Databricks

外部位置在 Unity Catalog 中既可用于外部数据资产(如外部表和外部卷),也可用于托管数据资产(如托管表和托管卷)。 有关 Unity Catalog中的外部数据资产与托管数据资产之间的差异的详细信息,请参阅 什么是 tables 和 views?什么是 Unity Catalogvolumes?

若要了解使用外部位置的最佳做法,请参阅 管理外部位置、外部 tables和外部 volumes

创建外部表和卷时使用外部位置

在 Unity Catalog 中注册的外部表和外部卷本质上是指向在 Azure Databricks 外部管理的云存储中的数据的指针。 在 Unity Catalog 中创建外部表或外部卷时,必须引用包含在已授予足够权限的外部位置对象中的云存储路径。 有关 Unity Catalog中的外部数据资产与托管数据资产之间的差异的详细信息,请参阅 什么是 tables 和 views?什么是 Unity Catalogvolumes?。 有关权限,请参阅外部位置上的 权限。

创建托管存储时使用外部位置

托管表和托管卷由 Unity Catalog 完全托管。 它们默认存储在 托管存储位置中,可在元存储、catalog或 schema 级别定义。 将托管存储位置分配给元存储、catalog或 schema时,必须引用外部位置对象,并且必须具有足够的权限才能使用它。 请参阅在 Unity Catalog 中指定托管存储位置Unity Catalog 最佳做法

管理 Unity 中云存储访问权限的工作流 Catalog

若要使用 Unity Catalog管理对云存储的访问,请执行以下操作:

  1. 创建封装 Azure 托管标识的存储凭据对象,该标识提供对云存储路径的访问权限。
  2. 创建引用存储路径和存储凭据对象的外部位置对象。
  3. 创建外部 tables、外部 volumes或默认托管存储位置时,引用外部位置中包含的路径。 这可以是在外部位置或子路径中定义的确切路径。

后续步骤