当你对OneLake中的表应用 行级安全(RLS) 或 列级安全(CLS )时,是否以及如何读取数据取决于你查询时使用的引擎。 本文介绍了哪些引擎可以读取安全数据、每种引擎的要求,以及作为数据消费者可以预期的执法行为。
要了解如何定义安全规则,请参阅 创建和管理OneLake安全角色。 关于底层概念,请参见 OneLake中的表、列和行级安全。
能够读取安全数据的引擎
Fabric 引擎可以读取应用了 RLS 或 CLS 规则的表。 访问OneLake的数据有两种方式之一:
- 通过查询引擎:Fabric 引擎和授权的第三方引擎会应用 RLS 和 CLS 过滤,所以你只看到允许看到的行和列。
- 通过用户访问: 来自未经授权的外部引擎的查询被视为用户访问。 如果你不能看到表格中的所有行或列,查询就会被阻塞。
下表列出了支持RLS和CLS过滤的引擎:
| Engine | RLS/CLS 筛选 | 地位 |
|---|---|---|
| Eventhouse | 仅限 RLS | 公开预览 |
| Fabric中的图 | 是的 | GA |
| Lakehouse | 是的 | GA |
| 在 OneLake 模式下使用 Direct Lake 的语义模型 | 是的 | GA |
| Spark 笔记本 | 是的 | GA |
| 用户身份访问模式下的SQL分析端点 | 是的 | GA |
| 经授权的第三方引擎 | 是(当引擎实现该功能时) | 公开预览 |
发动机特定需求
有些引擎在读取安全数据前需要额外配置:
- SQL 分析端点:将 SQL 分析端点改为用户的身份访问模式 ,以便读取安全数据。
- 语义模型:语义模型必须使用 OneLake 上的 Direct Lake。
- 授权第三方发动机: 该引擎必须配置为 授权引擎 ,以便在查询时强制执行 OneLake 安全。
访问授权第三方引擎的数据
授权的第三方引擎通过使用 授权引擎 API 为用户获取 OneLake 的有效访问权限,并在查询时强制执行 RLS 和 CLS。 OneLake 会为发出请求的用户返回与引擎无关、预先计算的有效访问权限,而引擎则在其自身的计算层中实施这些策略。 OneLake仍然是唯一的真实来源,因此OneLake编写的安全定义在Fabric引擎和授权外部引擎中会一致应用。
有关详细信息,请参阅 将第三方引擎与 OneLake 安全性集成。