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

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

元存储管理员必须为每个需要从外部访问的元存储启用外部数据访问。 配置连接的用户或服务主体须具有每个架构(包含需外部读取的表)的 EXTERNAL USE SCHEMA 特权。

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

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

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

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

  1. 在附加到元存储的 Azure Databricks 工作区中,单击 目录图标“目录”。
  2. 单击“目录”窗格顶部的 齿轮图标 齿轮图标,然后选择“元存储”
  3. 在“详细信息”选项卡上,启用“外部数据访问”

注释

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

授予主体 EXTERNAL USE SCHEMA 权限

连接到 Azure Databricks 的外部客户端需获得具有足够特权的主体的授权。

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

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

  • 对所包含架构或其父目录的 EXTERNAL USE SCHEMA 特权。

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

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

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

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

假设用户有权读取架构中的全部所需表,则无需其他权限。 如果需要授予读取表的其他权限,请参阅 Unity Catalog 特权和安全对象