如何为数据仓库团队保护湖屋
简介
本文概述了如何在 Fabric 中配置湖屋的安全性以供通过 T-SQL 查询的 SQL 用户使用。 这些用户可以是通过 SQL 使用数据的业务分析师、报表生成器,也可以是创建新表和视图的数据工程师。
安全功能
Microsoft Fabric 使用多层安全模型,在不同的级别提供不同的控制,以便仅提供所需的最低权限。 有关 Fabric 中可用的不同安全功能的更多信息,请参阅 OneLake 中的数据访问控制模型。
在 Fabric 数据仓库工作负载中,仓库和 SQL 分析终结点项还可用于定义本机 SQL 安全性。 SQL 安全性使用 T-SQL 安全构造的完整库,允许对项中的表、视图、行和列进行精细访问控制。 有关 SQL 安全性的详细信息,请参阅 SQL 粒度权限。
在仓库或 SQL 分析终结点中配置的 SQL 权限仅适用于针对仓库或 SQL 分析终结点执行的查询。 基础数据位于 OneLake 中,但通过 OneLake 数据访问角色单独控制对 OneLake 数据的访问。 为了确保具有 SQL 特定权限的用户看不到其没有 SQL 访问权限的数据,请不要将这些用户包含在 OneLake 数据访问角色中。
根据用例保护
Microsoft Fabric 的安全性围绕特定用例的数据保护进行了优化。 用例是一组需要特定访问权限并通过给定引擎访问数据的用户。 对于 SQL 场景,一些常见的用例包括:
- SQL 写入者:需要创建新表、查看或向现有表中写入数据的用户。
- SQL 读取者:需要使用 SQL 查询读取数据的用户。 他们可以直接访问 SQL 连接,也可以通过 Power BI 等其他服务访问。
然后,我们可以将每个用例与 Fabric 中所需的权限保持一致。
SQL 写入权限
可通过两种方式授予用户对仓库或 SQL 分析终结点的写入访问权限:
- 通过 Fabric 工作区角色,可以向三个授予写入权限的工作区角色授予成员资格。 每个角色都会自动转换为 SQL 中授予等效写入访问权限的相应角色。
- 授予对 SQL 引擎的读取访问权限,并授予自定义 SQL 权限以写入部分或全部数据。
如果用户需要对工作区中的所有仓库或 SQL 分析终结点具有写入访问权限,请将其分配给工作区角色。 除非用户需要将其他用户分配到工作区角色,否则应使用参与者角色。
如果用户只需写入特定的仓库或 SQL 分析,可通过 SQL 权限授予其直接访问权限。
SQL 读取访问权限
可通过两种方式授予用户对仓库或 SQL 分析终结点的读取访问权限:
- 通过作为 Fabric 工作区角色一部分授予的 ReadData 权限授予读取访问权限。 四个工作区角色均授予 ReadData 权限。
- 授予对 SQL 引擎的读取访问权限,并授予自定义 SQL 权限以读取部分或全部数据。
如果用户是 Fabric 工作区角色的成员,则会获得 ReadData 权限。 ReadData 权限将用户映射到 SQL 角色,该角色授予对仓库或湖屋中所有表的 SELECT 权限。 如果用户需要查看湖屋或仓库中的全部或大部分数据,此权限非常有用。 对特定湖屋或仓库设置的任何 SQL DENY 权限仍然适用并限制对表的访问。 此外,还可在表上设置行和列级别的安全性,以限制精细访问。
如果用户只需要访问特定的湖屋或仓库,则共享功能仅提供对共享项的访问权限。 在共享过程中,用户可以选择仅授予 Read 权限或 Read + ReadData 权限。 授予读取权限允许用户连接到仓库或 SQL 分析终结点,但不能访问表。 授予用户 ReadData 权限后,他们就可以完全读取仓库或 SQL 分析终结点中的所有表。 在这两种情况下,都可以配置其他 SQL 安全性以授予或拒绝对特定表的访问。 此 SQL 安全性可能包括精细访问控制,例如行或列级别安全性。
与快捷方式一起使用
快捷方式是 OneLake 的一项功能,其允许从一个位置引用数据,无需实际复制数据。 快捷方式是一种强大的工具,允许在其他位置轻松地重复使用一个湖屋中的数据,而无需重复复制数据。
Fabric 中的仓库不支持快捷方式。 但是,湖屋的 SQL 分析终结点与快捷方式的交互方式存在特殊行为。
通过 SQL 分析终结点查询时,湖屋中的所有快捷方式都以委派模式访问。 委派身份是拥有湖屋的 Fabric 用户。 默认情况下,所有者是创建湖屋和 SQL 分析终结点的用户。 在特定情况下,可以更改所有者,在工作区项列表中查看项时,当前所有者会显示在 Fabric 的所有者列中。 委派行为意味着,如果所有者有权访问基础数据,则查询用户能够从快捷方式表中读取数据,而不是执行查询的用户。 查询用户只需要从快捷方式表中选择的权限。
注意
例如,UserA 是湖屋的所有者,而 UserB 正在对作为快捷方式的表运行查询。 无论是通过 ReadData 还是通过 SQL 权限,UserB 必须首先拥有表的读取访问权限。 若要查看数据,查询会检查 UserA 是否有权访问快捷方式。 如果 UserA 具有访问权限,UserB 将看到查询结果。 如果 UserA 没有访问权限,查询将失败。
对于使用 OneLake 数据访问角色功能的湖屋,对快捷方式的访问取决于 SQL 分析终结点所有者是否有权通过 OneLake 数据访问角色查看目标湖屋并读取表。
对于尚未使用 OneLake 数据访问角色功能的湖屋,快捷方式访问权限取决于 SQL 分析终结点所有者是否具有目标路径的 Read 和 ReadAll 权限。