Databricks SQL 安全模型和数据访问概述

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

Security model

黄色用户组已被授予查询表 1 和视图 1 的权限 。 这些表的文件和目录组织在不同的数据集中。 在示例中,表 1 数据在数据集 1 和数据集 2 中托管,视图 1 数据在数据集 A 中托管 。

当你开始使用或简单方案(例如仅在单个工作区中访问数据时),可以直接在 Databricks filesystem (DBFS) 中存储文件和目录。 这些文件和目录称为 " 托管"。 不需要配置额外的凭据来管理对托管数据的访问。

但是,文件和目录通常存储在云存储中。 这些文件和目录被称为不 受管理。 若要访问云存储中的非托管数据,Databricks 使用云存储凭据向云提供程序进行身份验证。 在下图中,Azure Databricks 向云提供商验证数据集1凭据 1数据集 2 ,并使用数据集 A凭据 2进行身份验证。Azure Databricks 管理员将 Azure Databricks 配置为使用正确的凭据来访问云存储中的数据。 有关详细信息,请参阅本文后面的 云存储访问概述 。 表和视图的用户通常不会直接查看或使用凭据。

用户和组通常在标识提供者 (IdP) 中托管,并同步到 Azure Databricks,例如使用 SCIM

IdP sync

以下部分概述如何使用 Azure Databricks 表访问控制管理对数据的访问、配置对云存储的访问,以及管理用户和组。

表访问控制概述

使用 Azure Databricks 表访问控制可保护以下对象。 我们将这些对象称为可保护对象。

  • CATALOG:控制对整个数据目录的访问。
  • DATABASE:控制对数据库的访问。
  • TABLE:控制对托管表或外部表的访问。
  • VIEW:控制对 SQL 视图的访问。
  • ANY FILE:控制对基础文件系统的访问。 获得了对 ANY FILE 的访问权限的用户可以绕过在目录、数据库、表和视图上施加的限制,直接从文件系统读取内容。

只有 Azure Databricks 管理员和对象所有者才能授予对安全对象的访问权限。 如果用户在 SQL Databricks 中创建数据库、表或视图,或者 使用为表访问控制启用的群集进行数据科学工程,就成为其所有者。 所有者被授予所有权限,并且可以向其他用户授予权限。 如果对象没有所有者,管理员可以设置对象所有权。 下表总结了可用角色以及每个角色可以授予权限的对象。

角色 可以向其授予访问权限的对象
Azure Databricks 管理员 目录和基础文件系统中的所有对象。
目录所有者 目录中的所有对象。
数据库所有者 数据库中的所有对象。
表所有者 仅表。

有关详细信息,请参阅数据对象特权

云存储访问概述

注意

如果使用 Azure Databricks 托管表,则无需配置对云存储的访问。

若要在云存储中查询数据,Azure Databricks 管理员会使用服务主体配置从 Databricks SQL 到云存储的访问。 Databricks 建议为每个云存储位置设置一个服务主体。 数据集可以分布在不同的云存储位置,如下图所示。 在图中,服务主体 1 用于访问云存储 1,服务主体 2 用于访问云存储 2 。

External storage

配置对云存储的访问包括三个步骤:

  1. 在 Azure Active Directory 中创建 Azure 服务主体或重用现有服务主体。
  2. 向服务主体授予对 Azure 存储帐户的访问权限。
  3. 通过启用对云存储中数据的访问的服务主体配置,配置 Databricks SQL 终结点。

下图概述了建议的设置。

RBAC

  1. 已在 Azure Active Directory 中创建两个服务主体 - 服务主体 1 和服务主体 2 。
  2. 每个服务主体已被授予对一个存储帐户的基于角色的访问控制:通过使用“Blob 存储参与者”角色,服务主体 1 可以访问存储帐户 1,服务主体 2 可以访问存储帐户 2 。
  3. 这两个服务主体必须添加到全局终结点 SQL 设置,使所有 SQL 终结点在访问云存储中的数据时使用这些凭据。

用户和组概述

Azure Databricks 管理员在数据科学工程工作区中 管理用户和组 。 对于 Databricks SQL,Databricks 建议使用组而不是用户,因为它可以更轻松地管理数据访问特权。 有两个选项可用于设置组:

操作指南

Databricks SQL 管理员可以配置新的工作区以访问数据对象,或者使用已 & 配置对数据对象的访问的数据科学工程工作区。 以下文章介绍了配置对云存储的访问权限,以及如何将数据科学 & 工程安全模型映射到 Databricks SQL 的详细步骤。