重要
此功能目前以公共预览版提供。
Azure Databricks 使用 Unity REST API 和 Apache Iceberg REST 目录提供对 Unity 目录表的访问。
元存储管理员须为每个需要从外部访问的元存储启用外部数据访问。 配置连接的用户或服务主体必须具有 EXTERNAL USE SCHEMA 执行支持作的每个架构的权限:从托管表读取或创建、读取和写入外部表。
Unity REST API 支持对 Delta 表进行直接读取。 Iceberg REST 目录支持 Delta 表的读取,以及 Iceberg 表的读取和写入。 请参阅使用外部系统来访问 Databricks 数据。
在元存储上启用外部数据访问
若要允许外部引擎访问元存储中的数据,元存储管理员必须启用元存储的外部数据访问。 此选项默认禁用,以防止未经授权的外部访问。
要启用外部数据访问,请执行以下操作:
- 在附加到元存储的 Azure Databricks 工作区中,单击 - 目录。 
- 单击 - “ 目录 ”窗格顶部的齿轮图标,然后选择 “元存储”。 
- 在“详细信息”选项卡上,启用“外部数据访问”。 
注意
这些选项仅对具有足够特权的用户显示。 如果没有看到这些选项,则无权为元存储启用外部数据访问。
授予主体 Unity 目录特权
连接到 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 TABLE- EXTERNAL 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 Catalog 特权和安全对象。