使用 Unity Catalog 管理对云存储的访问
本文概述如何使用 Unity Catalog 管理从 Azure Databricks 访问云存储。 本文介绍外部位置、存储凭据和托管存储的概念。
注意
如果要使用 Unity Catalog 管理对外部服务(而非云存储)的访问,请参阅使用服务凭据管理对外部云服务的访问。
外部位置和存储凭据
所有由 Unity Catalog 管理的数据都必须位于云提供商帐户中的云存储中。 Unity Catalog 使用名为 外部位置的安全对象管理对云存储的访问,该对象定义云存储位置的路径以及访问该位置所需的凭据。 这些凭据又在名为 存储凭据的 Unity Catalog 安全对象中定义。 通过授予和撤消对 Unity Catalog 中外部位置安全对象的访问权限,可以控制对云存储位置中数据的访问。 通过授予和撤消对 Unity Catalog 中存储凭据安全对象的访问权限,可以控制创建外部位置对象的能力。
下面是有关这两个安全对象的详细信息:
- 存储凭据表示用于访问云租户上存储的数据的身份验证和授权机制,该机制对 Azure Data Lake Storage Gen2 容器使用 Azure 托管标识或服务主体,对 Cloudflare R2 存储桶则使用 R2 API 令牌。 Unity Catalog 授予的权限控制哪些用户和组可以使用凭据来定义外部位置。 仅应向需要创建外部位置对象的用户授予创建和使用存储凭据的权限。 请参阅创建用于连接到 Azure Data Lake Storage Gen2 的存储凭据,以及创建用于连接到 Cloudflare R2 的存储凭据。
- 外部位置可将云存储路径与授权访问云存储路径的存储凭据相结合。 Unity Catalog 授予的权限控制哪些用户和组可以访问外部位置定义的云存储路径。 仅应向需要创建外部表、外部卷或托管存储位置的用户授予创建和使用外部位置的权限。 请参阅创建外部位置以将云存储连接到 Azure Databricks。
Unity Catalog 中的外部位置既可用于外部数据资产(如外部表和外部卷),也可用于托管数据资产(如托管表和托管卷)。 有关 Unity Catalog 中外部数据资产和托管数据资产的差异的详细信息,请参阅什么是表和视图?以及什么是 Unity Catalog 卷?。
要了解使用外部位置的最佳做法,请参阅管理外部位置、外部表和外部卷。
创建外部表和外部卷时使用外部位置
Unity Catalog 中注册的外部表和外部卷本质上是指向在 Azure Databricks 外部管理的云存储中数据的指针。 在 Unity Catalog 中创建外部表或外部卷时,必须引用已被授予足够权限的外部位置对象中包含的云存储路径。 有关 Unity Catalog 中外部数据资产和托管数据资产的差异的详细信息,请参阅什么是表和视图?以及什么是 Unity Catalog 卷?。 有关权限,请参阅对外部位置授予权限。
创建托管存储时使用外部位置
Unity Catalog 完全管理托管表和托管卷。 默认情况下,它们存储在托管存储位置中,可在元存储、目录或架构级别进行定义。 将托管存储位置分配给元存储、目录或架构时,必须引用外部位置对象,且必须具有足够权限才能使用。 请参阅在 Unity Catalog 中指定托管存储位置和 Unity Catalog 最佳做法。
Unity Catalog 中管理对云存储访问的工作流
若要使用 Unity Catalog 管理对云存储的访问,请执行以下操作:
- 创建封装 Azure 托管标识的存储凭据对象,该标识提供对云存储路径的访问权限。
- 创建引用存储路径和存储凭据对象的外部位置对象。
- 创建外部表、外部卷或默认托管存储位置时,引用外部位置中包含的路径。 这可以是在外部位置或子路径中定义的确切路径。