通过使用 OneLake 安全,管理员可以选择 通过 OneLake 实现集中治理 ,或在 SQL 分析端点 内采用基于 SQL 的细粒控制 。
SQL 分析端点中的访问模式
使用 SQL 分析终结点时,所选access模式确定如何强制执行数据安全性。 Fabric 支持两种独特的访问模式,每种模式根据您的运营和合规性需求提供不同的优势。
用户身份模式:通过使用 OneLake 角色和策略来强制执行安全。 在此模式下,SQL 分析终结点将已登录用户的标识传递给 OneLake,读取 访问权限完全由 OneLake 中定义的安全规则控制。 该模式支持对非数据对象(如视图、存储过程和函数)进行 SQL 级别权限,确保 Power BI、笔记本和湖屋等工具间的治理一致性。
委派标识模式:通过 SQL 提供完全控制。 在此模式下,SQL 分析端点通过工作区或项目所有者的身份连接到 OneLake,安全性完全由数据库内定义的 SQL 权限来管理 。 该模型支持传统的安全方法,包括GRANT、REVOKE、自定义角色、行级安全和动态数据掩蔽。
每个模式都支持不同的治理模型。 了解它们的影响,以便你为你的Fabric环境选择合适的方法。
重要
使用SQL分析端点需要项目访问权限。 要通过SQL分析端点连接和查询数据,用户必须对与该端点关联的项拥有读取权限。 如果用户没有对该项的控制平面访问权限(例如,工作区角色访问或显式项权限),那么无论该用户可能拥有任何SQL权限,连接到SQL分析端点都会被拒绝。
比较访问模式
下表比较了用户标识模式与委托标识模式中如何设置安全性以及在何处设置安全性,并按对象类型和数据访问策略划分。
| 安全目标 | 用户标识模式 | 委派标识模式 |
|---|---|---|
| Tables | OneLake 的安全角色控制访问权限。 不允许使用 SQL GRANT/REVOKE 。 |
使用 SQL GRANT/REVOKE完全控制 。 |
| 视图 | 使用 SQL GRANT/REVOKE 分配权限。 |
使用 SQL GRANT/REVOKE 分配权限。 |
| 存储过程 | 使用 SQL GRANT EXECUTE 分配权限。 |
使用 SQL GRANT EXECUTE 分配权限。 |
| 函数 | 使用 SQL GRANT EXECUTE 分配权限。 |
使用 SQL GRANT EXECUTE 分配权限。 |
| 行级别安全性 (RLS) | 被定义为 OneLake 安全角色的一部分。 | 使用 SQL CREATE SECURITY POLICY定义 。 |
| 列级安全(CLS) | 被定义为 OneLake 安全角色的一部分。 | 使用 SQL GRANT SELECT 和列列表定义。 |
| 动态数据掩码 (DDM) | OneLake 安全性不支持。 | 使用 SQL ALTER TABLE 和 MASKED 选项定义。 |
更改OneLake的访问模式
访问模式确定通过 SQL 分析终结点查询 OneLake 时如何对数据访问进行身份验证和强制执行。 新创建的SQL分析端点默认以委派身份访问模式启动。 在你能为端点使用OneLake安全之前,管理员或成员必须将其切换到 用户身份访问模式。
注释
要使用 OneLake 安全,你只需在每个 SQL 分析端点切换到 一次用户身份访问模式 。 未切换到用户身份访问模式的端点,仍会使用委托身份来评估权限。
转到 SQL 分析终结点。
在 SQL 分析终结点体验中,选择“ 安全 ”选项卡。
选择“查看数据访问模式>设置”。
选择 用户身份访问模式 以使用登录用户的身份并强制执行 OneLake 安全角色,或选择委 托身份访问模式 以使用物品所有者的身份并仅强制执行 SQL 权限。 然后,选择应用。
选择 “继续 ”以确认你的选择。
重要
更改安全模式会使SQL分析端点在整个工作区暂时不可用。 此操作会取消该工作区中所有 SQL 分析终结点的所有正在运行的查询和排队查询。 仅在需要时更改模式,最好在非工作时间避免停机。
OneLake 安全性中的用户标识模式
在用户标识模式下,SQL 分析终结点使用直通身份验证机制强制实施数据访问。 当用户连接到 SQL 分析终结点时,其 Entra ID 标识将传递到 OneLake,后者执行权限检查。 使用 OneLake Lakehouse 中定义的安全规则(而不是任何 SQL 级别 GRANT 或 REVOKE 语句)评估针对表的所有读取操作。
通过此模式可以集中管理安全性,确保跨所有 Fabric 体验(包括 Power BI、Notebook、Lakehouse 和 SQL 分析终结点)的一致强制实施。 它专为治理框架而设计,其中访问权限应在 OneLake 中定义一次,并在各处自动生效。
在用户标识模式下:
表访问完全受 OneLake 安全性的管控。 忽略表上的 SQL
GRANT/REVOKE语句。OneLake 的经验定义了 RLS(行级安全)、CLS(列级安全)和对象级安全。
允许对非数据对象(如视图、存储过程和函数)使用 SQL 权限,从而灵活地定义自定义逻辑或面向用户的入口点来访问数据。
SQL 分析端点不支持写操作。 所有写入都必须通过 Fabric 门户中的 Lakehouse 页面进行,并由工作区角色(管理员、成员、参与者)管理。
重要
跨生产者和消费者(中心辐射型)的一对一身份映射。 当 OneLake 安全策略从生成者(定义角色的源项)传递到使用者(通过快捷方式访问数据的目标项)时,在使用者中必须将分配给 OneLake 安全角色的标识 精确地 1:1 映射。 无论是用户还是组,与生产者安全角色中引用的同一主体都必须对消费者工件具有 Fabric 读取权限。 嵌套或有效的组成员身份 无法 跨此边界解析。
例如,如果 OneLake 的生成者安全角色引用user123@microsoft.com,则user123@microsoft.com(该确切对象 ID)也必须在使用者的 lakehouse 上具有 Fabric “读取”权限。 同样,如果生产者角色引用 Group A,则必须向消费者上的 Group A 本身授予 Fabric Read 权限——仅向 Group A 的某个成员授予该权限并不能满足匹配要求。
有关用户 身份模式权限模型的更多信息,请参见 OneLake 安全如何控制数据访问。
OneLake 和 SQL 分析终结点之间的安全同步
用户标识模式的关键组件是 安全同步服务。 此后台服务监视对 OneLake 中安全角色所做的更改,并确保这些更改反映在 SQL 分析终结点中。
安全同步服务负责以下各项:
检测对 OneLake 角色的更改,包括新角色、更新、用户分配以及与表相关的更改。
将 OneLake 定义的策略(RLS、CLS、OLS)转换为等效的与 SQL 兼容的数据库角色结构。
确保正确验证来自其他 lakehouses 的 快捷方式对象 (来自其他 lakehouses 的表),以便遵守原始 OneLake 安全设置,即使在远程访问时也是如此。
此同步可确保 OneLake 安全定义具有权威性,无需手动 SQL 级干预来复制安全行为。 因为安全是集中实施的:
在此模式下,不能直接使用 T-SQL 定义 RLS、CLS 或 OLS。
你仍然可以使用
GRANT或EXECUTE语句将 SQL 权限应用于视图、函数和存储过程。
安全同步重试退避
安全同步包括用于保护系统稳定性并避免不必要的计算消耗的重试退避机制:
如果将 OneLake 安全角色应用到 SQL 分析终结点时出现重复错误,系统可能会暂时暂停自动同步尝试。
修改现有 OneLake 安全角色或创建新角色时,同步会自动恢复。
安全同步错误和解决方法
| Scenario | 用户标识模式下的行为 | 委托模式下的行为 | 纠正措施 | 注释 |
|---|---|---|---|---|
| RLS 策略引用已删除或重命名的列 | 错误: 行级别安全策略引用不再存在的列。 在修复策略之前,数据库进入错误状态。 | 错误:无效的列名 <列名> | 更新或删除一个或多个受影响的角色,或还原缺少的列。 | 必须在角色创建时所在的 Lakehouse 中进行更新。 |
| CLS 策略引用已删除或重命名的列 | 错误: 列级安全策略引用不再存在的列。 在修复策略之前,数据库进入错误状态。 | 错误:无效的列名 <列名> | 更新或删除一个或多个受影响的角色,或还原缺少的列。 | 必须在角色创建时所在的 Lakehouse 中进行更新。 |
| RLS/CLS 策略引用已删除或重命名的表 | 错误: 安全策略引用不再存在的表。 | 未显示任何错误;如果缺少表,则查询会以无提示方式失败。 | 更新或删除一个或多个受影响的角色,或还原缺少的表。 | 必须在角色创建时所在的 Lakehouse 中进行更新。 |
| DDM (动态数据掩码) 策略引用已删除或重命名的列 | OneLake 安全性不支持 DDM;必须通过 SQL 实现。 | 错误:无效的列名 <列名> | 更新或删除一个或多个受影响的 DDM 规则,或还原缺少的列。 | 更新 SQL 分析终结点中的 DDM 策略。 |
| 系统错误(意外失败) | 错误: 发生意外的系统错误。重试或联系支持人员。 | 错误: 将表更改应用于 SQL 时发生内部错误。 | 重试操作;如果问题仍然存在,请联系Microsoft 支持部门。 | N/A |
| 不支持用户主体 | 错误: 不支持用户主体。 | 错误: 不支持用户主体。 | 从角色{username}中删除用户DefaultReader。 |
如果用户不再是有效的Entra ID(例如,用户离开组织或删除),则会发生此错误。 从角色中删除它们以解决错误。 |
具有安全同步的快捷方式行为
OneLake 安全性在数据源处强制执行,因此安全同步会禁用涉及快捷方式的表和视图的所有权链式访问。 这可确保始终评估并遵循源系统权限,即使对于来自另一个数据库的查询也是如此。
因此:
用户必须在快捷方式的源(当前的Lakehouse或SQL 分析终结点)和数据物理驻留的目标位置上都具有有效的访问权限。
如果用户在任一端都缺少权限, 则查询失败 并出现访问错误。
这种设计既能在湖屋边界间保持安全完整性,又减少了生产者和消费者物品之间重复身份分配的需求。
OneLake 安全性中的委托模式
在 委派标识模式下,SQL 分析终结点保留与传统 SQL 安全模型的 向后兼容性 。 你在SQL 引擎层定义并实施安全控制,而OneLake 安全角色和访问策略不会延续到表级访问。 您必须通过SQL构造(GRANT/REVOKE安全策略等)定义所有过滤和访问控制——包括对模式和表的访问、行级安全(RLS)、列级安全(CLS)以及动态数据掩蔽(DDM)。
由于最终用户的 OneLake 安全角色不会直接强制执行,因此在 OneLake 中定义的任何安全规则(例如,通过 OneLake 读取的 Spark 或其他引擎强制实施的规则)在通过 SQL 分析终结点查询相同的数据时 不适用 。 当工作负荷依赖于 SQL 本机安全语义或现有 T-SQL 工具需要完全兼容性时,请选择此模式。
当用户连接到 SQL 分析终结点并发出查询时:
SQL 根据 SQL 层中定义的权限验证查询。
如果查询获得授权,系统会继续access存储在 OneLake 中的数据。
此数据访问是使用 Lakehouse 或 SQL 分析终结点所有者(也称为 项帐户)的标识(而不是已登录的用户)执行的。
因此 项目所有者 负责在 OneLake 中拥有足够的权限,以工作负荷的名义读取基础文件。 向最终用户授予的 SQL 权限与项所有者的 OneLake 访问之间的任何不对齐都会导致查询失败。
此模式支持 DBA 或应用程序使用的现有 T-SQL 工具和做法,在所有对象级别和 SQL 定义的 RLS、CLS 和 DDM 上完全兼容 SQL GRANT/REVOKE 。
代理模式下的快捷方式行为
由于委托模式通过物品 所有者的身份连接到 OneLake,捷径只有在所有者对 整个源表拥有无限制访问权限时才有效。 如果源表应用了任何OneLake级别的安全规则——如行级安全(RLS)或列级安全(CLS)——SQL分析端 点会阻止访问该快捷方式。
因此:
指向 没有数据级安全规则 的源表的快捷方式在委托模式下正常工作。
即使最终用户对快捷对象具有 SQL 权限,在委托模式下,SQL 分析终结点依然无法访问指向 OneLake 安全性中带有 RLS 或 CLS 的源表的快捷方式。
若要使用源具有 OneLake 安全策略的快捷方式,请在使用者终结点使用 用户标识模式 ,以便根据源的 OneLake 安全规则评估最终用户的标识。
在模式之间切换时的注意事项
重要
在用户标识和委托模式之间切换(无论哪个方向)时,会自动删除内嵌元数据对象,包括表值函数(TVF)和标量函数。 此行为仅影响元数据定义;OneLake 中的基础数据不受影响。
切换到用户标识模式
将忽略 SQL RLS、CLS 和表级权限。
必须为用户配置 OneLake 角色以维持访问权限。
只有具有查看器权限或共享只读访问权限的用户受 OneLake 安全性的约束。
现有 SQL 角色被删除,无法恢复。
切换到委派标识模式
不再应用 OneLake 角色和安全策略。
SQL 角色和安全策略变为活动状态。
项目所有者必须具有有效的 OneLake 访问权限,否则所有查询都可能失败。
注解
SQL 对象不继承所有权:快捷方式充当 SQL 分析终结点中的表,但有意偏离标准 SQL 所有权链,以保持统一的安全态势。
无继承规则:派生的 SQL 对象(视图、存储过程或函数)不会从对象所有者继承权限。
运行时验证:在执行时针对调用方标识验证权限,确保 SQL 抽象无法规避 OneLake 级别策略。
控制平面依赖与有效身份评估:用户必须拥有所需的 Fabric 工件权限,才能连接到 SQL 分析端点。 数据授权随后会根据源头的 OneLake 安全策略评估登录用户及其在支持 Microsoft Entra 组中的有效成员身份。
权限评估行为:权限评估因表类型而异,具体取决于当前的强制执行模型。
快捷表:未满足所需的授权条件时,可能会拒绝访问。 这是一种限制性的执行结果,而不是 OneLake 安全性中基于角色的 DENY 功能。
一般规则:强制实施无法明确验证访问权限时,系统将应用限制性最大的结果。
列级安全(CLS)设计:CLS维护严格的允许列列表。
重命名或删除允许的列会使安全规则失效。 虽然规则保留在系统中,但在还原原始列命名之前,该规则将保持非活动状态(拒绝对资源的所有访问)。
同步保护:当策略无效时,元数据同步会被方案设计故意阻止,直到在 OneLake 安全面板中修正规则。
架构验证:重命名不更新安全策略的列会触发 UI 错误,指出列在同步配置之前“不存在”。
注释
在 SQL 分析终结点中,对数据访问强制执行 OneLake 安全性,同时架构元数据继续遵循 SQL 引擎行为。 即使列级安全性阻止用户读取这些列,用户仍可能会在 对象资源管理器 或
sys.columns中看到这些列。 此行为是预期的,符合设计初衷。角色传播和同步(SLA):
OneLake 安全同步:当 OneLake 安全角色在用户标识模式下更改时,更新不会立即发生。 虽然速度通常很快,但与 SQL 分析终结点同步可能需要长达 5 分钟 的时间。
自动前缀:OneLake 安全角色将传播到带有前缀的
OLS_SQL 分析终结点。同步优先级:安全同步过程定期刷新角色的状态
OLS_。 不支持对这些角色进行手动更改,所有更改将在下一个同步周期内被覆盖。 如果没有同步更改,安全同步不会替代手动更改。
仓库SQL安全与快捷方式:使用仓库中SQL构造定义的安全策略——如行级安全(RLS)、列级安全(CLS)或对象级安全(OLS)——仅在仓库的SQL执行上下文(TDS端点)中强制执行。
重要
当你通过 OneLake 中的快捷方式访问仓库数据时,这些 SQL 安全语义并不会转化为 OneLake 的安全策略。 因此,通过快捷方式访问数据的用户可能会看到完整的仓库数据,无论生产者仓库中配置了什么SQL安全策略。
局限性
仅适用于读取者:OneLake 安全性主要执行于通过 查看器级别工作区或项目访问数据的用户。 具有更广泛的工作区角色(例如 管理员、 成员或 参与者 )的用户将保留提升的访问权限,而不是 OneLake 安全强制的主要目标。
异常:
快捷方式拒绝行为:对于由快捷方式支持的表,在特定情况下,权限控制仍可拒绝对管理员、成员或参与者的访问权限。
安全同步失败案例:如果安全同步无法正确为某些表或角色应用安全性,则属于这些受影响角色成员的管理员、成员或参与者角色中的用户也可能会遇到受限访问。
用户身份模式下的RLS:当用户身份模式下配置行级安全(RLS)时,所有用户(包括管理员、成员和贡献者角色)都会强制执行定义的安全规则。
对象元数据中的架构可见性:无论用户的表级权限如何,SQL 分析终结点始终返回对象元数据 中的所有架构名称 。 用户没有权限的表将被筛选掉,并且不会显示在列表中。
- 因此,用户可能会看到在对象资源管理器或
INFORMATION_SCHEMA/sys目录查询中不包含可见表的架构。
- 因此,用户可能会看到在对象资源管理器或
安全同步依赖性:在用户身份模式下,安全同步进程将 OneLake 安全角色与 SQL 分析端点同步。 在同步完成之前,SQL 可能会暂时根据所有表的现有 SQL 权限状态来判定访问权限,其中也包括来自其他项的快捷方式表。 同步完成后,SQL 分析端点将反映 OneLake 的安全配置。
快捷方式支持的表的所有权更改:快捷方式支持的表在 SQL 分析终结点中表示为 SQL 对象,因此支持标准的 SQL 所有权操作。 管理命令,例如
ALTER AUTHORIZATION,可以更改依赖快捷方式的表的所有者。 在某些情况下,这可能允许所有权链接行为绕过 OneLake 安全策略,并授予对基础数据的意外访问权限。 在引入其他强制机制之前,管理员应避免修改依赖快捷方式的表的所有权。目标验证停机时间:当快捷方式目标发生更改(例如重命名或 URL 更新)时,数据库会在系统验证新目标时短暂进入 单用户模式 。 在此期间,查询将被阻止。 这些操作通常是快速的,但根据内部进程,可能需要长达 5 分钟才能同步。
- 创建架构快捷方式可能会导致影响验证和延迟元数据同步的已知错误。
委派模式令牌缓存:在委派模式下,SQL 分析终结点将缓存用于代表所有者标识从 OneLake 检索数据的存储访问令牌。 如果 所有者的权限发生更改,则以前颁发的令牌在过期之前可能保持有效。 因此,绑定到所有者标识的访问更改可能不会立即生效,并且可以在令牌过期之前保留,通常最多 30-60 分钟。
对 OneLake 安全 GRANT/DENY 策略的更改会立即强制执行,并且不会因存储令牌缓存而延迟。
活动查询取消:为了维护数据完整性和安全性,如果在执行过程中快捷方式配置发生更改,可能会自动取消活动查询。
行级安全(RLS)约束:
仅支持单表达式表。 动态 RLS 和多表 RLS 均不可用。
删除筛选表达式中使用的列会导致元数据同步中断,直到在 OneLake 安全面板中修复 RLS 为止。
角色复杂性和元数据同步:安全角色中的高复杂性(特别是涉及使用 RLS 的大量交集和联合语义)可能会导致安全同步失败。 安全同步失败可防止应用安全策略,并阻止同步元数据的功能。
架构和角色约束:
重命名:OneLake 安全角色绑定到表名称。 重命名表会中断关联,策略不会自动迁移。 这可能会导致意外的数据泄露,直到策略重新应用。
字符限制:OneLake 安全角色名称不能超过 124 个字符;否则,角色创建或同步在 SQL 分析终结点上失败。
OLS_角色修改:不支持对OLS_角色进行用户更改,并可能导致意外行为。
不支持的身份:当前不支持启用邮件的安全组和通讯组。
Lakehouse 所有者要求:
- Lakehouse 的所有者必须是管理员、成员或参与者工作区角色的成员;否则,安全性不会应用于 SQL 分析终结点。