列级安全性(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 并从列表中删除列以撤销访问权限。
重要
即使删除了某列的访问权限,如果另一个角色授予了该列的访问权限,则用户仍可访问该列。
使用以下步骤定义列级安全性:
导航到数据项并选择“管理 OneLake 安全性”(预览版)。
选择要为其定义表或文件夹安全性的现有角色,或者选择“新建”以创建新角色。
在角色详细信息页面上,选择要为其定义 CLS 的表旁边的“更多选项 (...)”,然后选择“列级安全性(预览版)”。
默认情况下,表的 CLS 处于禁用状态。 选择 “启用 CLS ”或“ 创建新规则 ”以启用它。
用户界面会显示该表中用户有权查看的列的列表。 默认情况下,它显示所有列。
若要限制对列的访问,请选择列名称旁边的复选框,然后选择“删除”。 允许查看的列的列表中必须保留至少一列。
选择“保存”以更新角色。
如果要添加已删除的列,请选择“ 新建规则”。 此操作将在列表末尾添加新的 CLS 规则条目。 然后,使用下拉列表选择要包含在访问中的列。
完成更改后,选择“保存”。
为 SQL 分析终结点启用 OneLake 安全性
在将 OneLake 安全性与 SQL 分析终结点配合使用之前,必须启用其 用户的标识模式。 新创建的 SQL 分析终结点将默认为用户的标识模式,因此对于现有 SQL 分析终结点,必须遵循这些步骤。
注释
每个 SQL 分析终结点只需切换到 用户的标识 模式一次。 未切换到用户的标识模式的终结点将继续使用委派标识来评估权限。
转到 SQL 分析端点。
在 SQL 分析终结点体验中,选择顶部功能区中的 “安全性 ”选项卡。
在 OneLake 访问模式下选择用户的标识。
在提示符下,选择确认,使用用户的身份。
现在,SQL 分析端点已准备好用于保障 OneLake 的安全。
结合使用行级和列级安全性
可以将行级和列级安全性一起使用,以限制用户对表的访问。 这两种策略必须通过单一的 OneLake 安全角色来应用。 在这种情况下,对数据的访问将根据单个角色中设置的规则进行限制。
OneLake 安全功能不支持将两个或多个角色组合使用,其中一个角色包含 RLS 规则,另一个角色包含 CLS 规则。 尝试访问属于不支持的角色组合的表的用户将收到查询错误。