OneLake 中的列级安全性(预览版)

列级安全性(CLS)是 OneLake 安全性(预览版) 的一项功能,允许你访问表中的选定列,而不是完全访问表。 CLS 允许指定用户可以访问的表子集。 任何从列表中删除的列都对用户不可见。

先决条件

  • OneLake 中已打开 OneLake 安全性的项目。 有关详细信息,请参阅 OneLake 数据访问角色入门
  • 通过“安全”选项卡将 Lakehouse 上的 SQL 分析终结点切换到用户的标识模式。
  • 若要创建语义模型,请使用步骤创建 DirectLake 模型
  • 有关限制的完整列表,请参阅 已知限制部分。

实施列级安全性

OneLake 安全 CLS 通过以下两种方式之一强制执行:

  • Fabric 引擎中筛选的表: 对 Fabric 引擎(如 Spark 笔记本)的查询会导致用户仅看到允许根据 CLS 规则查看的列。
  • 阻止访问表格:已应用 CLS 规则的表格无法在受支持的 Fabric 引擎之外读取。

对于经过筛选的表,适用以下行为:

  • CLS 规则不会限制对具有管理员、成员和参与者角色的用户的访问。
  • 如果 CLS 规则与其所定义的表不匹配,查询将失败,且不会返回任何列。 例如为不属于表的列定义了 CLS。
  • 如果用户属于两个不同的角色,且其中一个角色具有行级安全性 (RLS) 设置,则对 CLS 表的查询将失败,并且会显示错误。
  • 只能对 Delta parquet 表对象强制实施 CLS 规则。
    • 应用于非 Delta 表对象的 CLS 规则会阻止访问角色成员的整个表。
  • select *如果用户在仅有权访问某些列的表上运行查询,则 CLS 规则的行为因结构引擎而异。
    • Spark 笔记本:查询成功,且仅显示允许的列。
    • SQL 分析终结点:对用户无法访问的列阻止列访问。
    • 语义模型:对用户无权访问的列阻止列访问。

定义列级安全规则

可以将列级安全性定义为项的 “表” 部分中任何 Delta-parquet 表的 OneLake 安全角色的一部分。 CLS 始终为表指定,并且处于启用或禁用状态。 默认情况下,CLS 处于禁用状态,用户有权访问所有列。 用户可以启用 CLS 并从列表中删除列以撤销访问权限。

重要

即使删除了某列的访问权限,如果另一个角色授予了该列的访问权限,则用户仍可访问该列。

使用以下步骤定义列级安全性:

  1. 导航到数据项并选择“管理 OneLake 安全性”(预览版)。

  2. 选择要为其定义表或文件夹安全性的现有角色,或者选择“新建”以创建新角色。

  3. 在角色详细信息页面上,选择要为其定义 CLS 的表旁边的“更多选项 (...)”,然后选择“列级安全性(预览版)”。

    显示选择“列级安全性”以编辑表权限的屏幕截图。

  4. 默认情况下,表的 CLS 处于禁用状态。 选择 “启用 CLS ”或“ 创建新规则 ”以启用它。

    用户界面会显示该表中用户有权查看的列的列表。 默认情况下,它显示所有列。

  5. 若要限制对列的访问,请选择列名称旁边的复选框,然后选择“删除”。 允许查看的列的列表中必须保留至少一列。

  6. 选择“保存”以更新角色。

  7. 如果要添加已删除的列,请选择“ 新建规则”。 此操作将在列表末尾添加新的 CLS 规则条目。 然后,使用下拉列表选择要包含在访问中的列。

  8. 完成更改后,选择“保存”

为 SQL 分析终结点启用 OneLake 安全性

在将 OneLake 安全性与 SQL 分析终结点配合使用之前,必须启用其 用户的标识模式。 新创建的 SQL 分析终结点将默认为用户的标识模式,因此对于现有 SQL 分析终结点,必须遵循这些步骤。

注释

每个 SQL 分析终结点只需切换到 用户的标识 模式一次。 未切换到用户的标识模式的终结点将继续使用委派标识来评估权限。

  1. 转到 SQL 分析端点。

  2. 在 SQL 分析终结点体验中,选择顶部功能区中的 “安全性 ”选项卡。

  3. OneLake 访问模式下选择用户的标识

    显示选择“用户身份”以启用 OneLake 安全性的 SQL 分析终结点的屏幕截图。

  4. 在提示符下,选择确认,使用用户的身份

    显示必须接受才能为表读取访问启用 OneLake 安全性的用户提示的屏幕截图。

现在,SQL 分析端点已准备好用于保障 OneLake 的安全。

结合使用行级和列级安全性

可以将行级和列级安全性一起使用,以限制用户对表的访问。 这两种策略必须通过单一的 OneLake 安全角色来应用。 在这种情况下,对数据的访问将根据单个角色中设置的规则进行限制。

OneLake 安全功能不支持将两个或多个角色组合使用,其中一个角色包含 RLS 规则,另一个角色包含 CLS 规则。 尝试访问属于不支持的角色组合的表的用户将收到查询错误。