启用对 Unity Catalog 的外部数据访问

Azure Databricks 使用 Unity REST API 和 Apache Iceberg REST 目录提供对 Unity 目录表的访问。

元存储管理员须为每个需要从外部访问的元存储启用外部数据访问。 配置连接的用户或服务主体必须具有每个架构的 EXTERNAL USE SCHEMA 权限,以执行支持的操作:从托管表读取或创建、读取和写入外部表。

Unity REST API 支持对 Delta 表进行直接读取。 Iceberg REST 目录支持 Delta 表的读取,以及 Iceberg 表的读取和写入。 请参阅使用外部系统来访问 Databricks 数据。

在元存储上启用外部数据访问

若要允许外部引擎访问元存储中的数据,元存储管理员必须启用元存储的外部数据访问。 此选项默认禁用,以防止未经授权的外部访问。

要启用外部数据访问,请执行以下操作:

  1. 在附加到元数据存储的 Azure Databricks 工作区中,单击 “数据”图标。Catalog。

  2. 单击 “齿轮”图标。 “ 目录 ”窗格顶部的齿轮图标,然后选择 “元存储”。

  3. 在“详细信息”选项卡上,启用“外部数据访问”。

注意

这些选项仅对具有足够特权的用户显示。 如果没有看到这些选项,则无权为元存储启用外部数据访问。

授予主体 Unity Catalog 权限

连接到 Azure Databricks 的外部客户端需要来自足够特权主体的授权。

Azure Databricks 支持用于身份验证的 OAuth 和个人访问令牌 (PAT)。 请参阅 “授权访问 Azure Databricks 资源”。

请求临时凭据的主体必须具有:

  • 在包含的架构或其父目录上具有 EXTERNAL USE SCHEMA 特权。

    此特权应始终显式授予。 只有父目录所有者可以授予此特权。 为了避免数据意外外泄,ALL PRIVILEGES 不包括 EXTERNAL USE SCHEMA 特权,架构所有者默认不具有此特权。

  • 对表的 SELECT 权限、对父目录的 USE CATALOG 权限及对父架构的 USE SCHEMA 权限。

  • 如果创建外部表,主体还必须对架构具有CREATE TABLE权限,并且CREATE EXTERNAL TABLEEXTERNAL USE LOCATION对目标外部位置具有权限。

    EXTERNAL USE LOCATION 必须始终显式授予。 只有具有 MANAGE 外部位置特权的用户才能授予它。 为了避免意外外泄, ALL PRIVILEGES 不包括 EXTERNAL USE LOCATION 特权,并且位置所有者默认不具有此权限。

以下示例语法演示如何向用户授予 EXTERNAL USE SCHEMA 权限:

GRANT EXTERNAL USE SCHEMA ON SCHEMA catalog_name.schema_name TO `user@company.com`

以下示例语法演示如何向用户授予 EXTERNAL USE LOCATION 权限:

GRANT EXTERNAL USE LOCATION ON EXTERNAL LOCATION external_location_name TO `user@company.com`

假设用户有权读取架构中的全部所需表,则无需其他权限。 如果需要授予读取表的其他权限,请参阅 Unity 目录权限参考。

后续步骤