Databricks SQL 安全模型和数据访问概述
Databricks SQL 安全模型基于 SQL 数据库中确立已久的安全模型,该模型支持使用标准 SQL 语句 GRANT 和 REVOKE 设置精细的访问权限。 下图说明了如何保护数据。

黄色用户组已被授予查询表 1 和视图 1 的权限 。 这些表的文件和目录组织在不同的数据集中。 在示例中,表 1 数据在数据集 1 和数据集 2 中托管,视图 1 数据在数据集 A 中托管 。
当你开始操作时或者对于简单的场景(例如仅在单个工作区中访问数据时),可直接在 Databricks 文件系统 (DBFS) 中存储文件和目录。 这些文件和目录据说是托管内容。 无需配置额外的凭据即可管理对托管数据的访问。
但是,文件和目录通常存储在云存储中。 这些文件和目录据说是非托管内容。 为了访问云存储中的非托管数据,Databricks 使用云存储凭据向云提供商进行身份验证。 在下图中,Azure Databricks 使用凭据 1(针对数据集 1 和 数据集 2)和凭据 2(针对数据集 A)向云提供商进行身份验证。Azure Databricks 管理员将 Azure Databricks 配置为使用正确的凭据来访问云存储中的数据。 有关详细信息,请参阅本文稍后的云存储访问概述。 表和视图的用户通常不会直接查看或使用凭据。
用户和组通常在标识提供者 (IdP) 中托管,并同步到 Azure Databricks,例如使用 SCIM。

以下部分概述如何使用 Azure Databricks 表访问控制管理对数据的访问、配置对云存储的访问,以及管理用户和组。
表访问控制概述
使用 Azure Databricks 表访问控制可保护以下对象。 我们将这些对象称为可保护对象。
CATALOG:控制对整个数据目录的访问。DATABASE:控制对数据库的访问。TABLE:控制对托管表或外部表的访问。VIEW:控制对 SQL 视图的访问。ANY FILE:控制对基础文件系统的访问。 获得了对ANY FILE的访问权限的用户可以绕过在目录、数据库、表和视图上施加的限制,直接从文件系统读取内容。
只有 Azure Databricks 管理员和对象所有者才能授予对安全对象的访问权限。 使用启用了表访问控制的群集在in Databricks SQL 或数据科学和工程中创建数据库、表或视图的用户将成为它的所有者。 所有者被授予所有权限,并且可以向其他用户授予权限。 如果对象没有所有者,管理员可以设置对象所有权。 下表总结了可用角色以及每个角色可以授予权限的对象。
| 角色 | 可以向其授予访问权限的对象 |
|---|---|
| Azure Databricks 管理员 | 目录和基础文件系统中的所有对象。 |
| 目录所有者 | 目录中的所有对象。 |
| 数据库所有者 | 数据库中的所有对象。 |
| 表所有者 | 仅表。 |
有关详细信息,请参阅数据对象特权。
云存储访问概述
注意
如果使用 Azure Databricks 托管表,则无需配置对云存储的访问。
若要在云存储中查询数据,Azure Databricks 管理员会使用服务主体配置从 Databricks SQL 到云存储的访问。 Databricks 建议为每个云存储位置设置一个服务主体。 数据集可以分布在不同的云存储位置,如下图所示。 在图中,服务主体 1 用于访问云存储 1,服务主体 2 用于访问云存储 2 。

配置对云存储的访问包括三个步骤:
- 在 Azure Active Directory 中创建 Azure 服务主体或重用现有服务主体。
- 向服务主体授予对 Azure 存储帐户的访问权限。
- 使用允许访问云存储中的数据的服务主体配置来配置 Databricks SQL 仓库。
下图概述了建议的设置。

- 已在 Azure Active Directory 中创建两个服务主体 - 服务主体 1 和服务主体 2 。
- 每个服务主体已被授予对一个存储帐户的基于角色的访问控制:通过使用“Blob 存储参与者”角色,服务主体 1 可以访问存储帐户 1,服务主体 2 可以访问存储帐户 2 。
- 这两个服务主体必须都添加到全局 SQL 仓库设置,使所有 SQL 仓库在访问云存储中的数据时使用这些凭据。
用户和组概述
Azure Databricks 管理员在数据科学和工程工作区中管理用户和组。 对于 Databricks SQL,Databricks 建议使用组而不是用户,因为它可以更轻松地管理数据访问特权。 有两个选项可用于设置组:
使用 SCIM API 将标识提供者 (IdP) 组同步到 Databricks。 Databricks 建议使用此选项,因为这会在 IdP 中保留标识的真实源,同时仍使其可用于Azure Databricks。 在图中,Azure Active Directory 中的用户和组同步到 Databricks SQL,并用于
GRANT语句来保护数据库对象,例如表和视图。
使用 SQL、UI 或 API 在 Databricks 中创建组。
操作指南
Databricks SQL 管理员可以配置新工作区以访问数据对象,或使用已配置数据对象访问权限的数据科学&和工程工作区。 以下文章介绍有关配置对云存储的访问以及将数据科学&与工程安全模型映射到 Databricks SQL 的详细步骤。
- 配置对云存储的访问权限
- 将数据科学与工程安全映射到 Databricks SQL