白杨商业智能工作室
#技术分享#Power BI#最佳实践

OneLake安全配置实战指南

· 白杨BI工作室

作为数据分析师或 BI 开发者,你可能遇到过这样的场景: - 业务部门要求共享某个湖屋(Lakehouse)的数据,但又担心敏感字段(如客户手机号、薪资)被不该看的人看到。 - 你花了大量时间构建行级安全(RLS),但每次新增报表或数据源,都要重新配置,麻烦不说,还容易遗漏。

OneLake安全配置实战指南

数据安全,是时候从“事后补救”转向“事前防御”了

作为数据分析师或 BI 开发者,你可能遇到过这样的场景:

  • 业务部门要求共享某个湖屋(Lakehouse)的数据,但又担心敏感字段(如客户手机号、薪资)被不该看的人看到。
  • 你花了大量时间构建行级安全(RLS),但每次新增报表或数据源,都要重新配置,麻烦不说,还容易遗漏。
  • 更头疼的是,当数据被复制到不同位置,安全策略就失效了,你根本不知道哪些人真正能访问到哪些数据。

这些痛点的根源在于:传统的数据安全往往是“事后补救”——等到数据泄露了才去追责,或者依赖报表层的权限控制,但底层数据依然“裸奔”。

现在,OneLake 的对象、行、列三级安全,可以让你从源头构建统一的数据安全策略,让数据在存储层就被“锁”住。这篇文章就带你一步步实操,掌握这套配置方法。

为什么你需要关注 OneLake 安全?

OneLake 是 Microsoft Fabric 的统一数据湖,它整合了湖屋、仓库、KQL 数据库等所有数据资产。过去,你可能在湖屋上配置了安全,但仓库或 KQL 数据库的安全却是另一套逻辑,管理起来非常割裂。

而 OneLake 安全的核心价值在于:一套安全策略,覆盖所有数据项。无论数据存储在湖屋、仓库还是其他格式,你都可以通过统一的方式控制访问,并且支持对象(表/文件)、行、列三个粒度的权限控制。

这意味着,你可以在数据被读取之前就进行过滤,而不是等到数据进入报表再隐藏。对于金融、医疗、零售等对数据合规要求极高的行业,这简直是刚需。

三大安全粒度,一次说清

OneLake 安全分为三个层次,你可以根据业务需求单独或组合使用:

1. 对象安全(Object Security)

控制对表、视图或整个湖屋的访问。比如,你可以只让销售团队访问“销售订单”表,而财务团队只能访问“预算”表。

配置方法:

  • 在 Fabric 门户中,选择你的湖屋或仓库。
  • 点击“管理访问权限”(Manage Access)。
  • 添加用户或安全组,并分配相应的权限(如“读取”“写入”)。

2. 行安全(Row Security)

控制哪些行可以被用户查看。例如,区域销售经理只能看到自己区域的订单数据。

在湖屋中,行安全通过 T-SQL 策略实现:

  • 创建安全策略(Security Policy),定义过滤谓词。
  • 例如,只允许用户查看“区域”列等于其所在区域的记录。

3. 列安全(Column Security)

控制哪些列可以被用户查看。比如,普通员工看不到“薪资”列,只有 HR 和财务可以。

同样通过 T-SQL 实现:

  • 使用 GRANT SELECT 语句,但只授予部分列的权限。
  • 或者创建掩码(Masking)函数,对敏感列进行动态脱敏。

实操:在湖屋中配置行级安全

我们以湖屋(Lakehouse)为例,演示如何配置行级安全。

前置条件

  • 你拥有湖屋的“管理员”或“成员”权限。
  • 湖屋已启用 OneLake 安全(默认开启)。

步骤

  1. 创建安全策略 打开湖屋的 SQL 查询编辑器,执行以下 T-SQL:

    CREATE SECURITY POLICY [SalesFilter]
    ADD FILTER PREDICATE [dbo].[fn_security_predicate]([Region]) ON [dbo].[Sales]
    WITH (STATE = ON);
    

    这里 fn_security_predicate 是一个自定义函数,根据当前用户的区域属性返回允许访问的行。

  2. 定义过滤函数

    CREATE FUNCTION [dbo].[fn_security_predicate](@Region AS sysname)
    RETURNS TABLE
    WITH SCHEMABINDING
    AS
    RETURN SELECT 1 AS result
    WHERE @Region = USER_NAME();
    

    这个函数会检查当前用户的名称是否等于区域名,如果你的用户名为“华东”,则只能看到“华东”的订单。

  3. 测试安全策略 使用不同的用户身份查询表,验证是否只返回对应区域的数据。

配置列级安全的技巧

列级安全通常与行级安全配合使用。例如,你可以让销售经理看到订单表的所有行,但隐藏“客户折扣”列。

操作步骤:

  1. 在湖屋中,右键点击表,选择“管理安全性”(Manage Security)。
  2. 在“列安全”选项卡中,选择要保护的列。
  3. 添加用户或组,并勾选“拒绝读取”或“允许读取”。

注意:列安全需要表支持行级安全(即表已启用安全策略),否则可能无法生效。

国内用户怎么看?

对于国内企业,数据合规压力日益增大(如《数据安全法》《个人信息保护法》),OneLake 安全提供了一种集中管控的解法。尤其是那些使用 Fabric 的客户,可以告别过去“权限分散、难以审计”的状态。不过,国内用户可能更关心:

  • 与现有权限体系集成:能否对接企业已有的 Active Directory 或钉钉/企业微信账号体系?目前,OneLake 支持 Azure AD 同步,但本地化集成还需借助工具。
  • 性能影响:行级过滤会不会拖慢查询?在大型表上,建议对过滤列建立索引,以减轻性能损耗。

总结与建议

OneLake 安全是 Fabric 数据治理的基石。通过对象、行、列三级控制,你可以在数据源头就定义清晰的访问边界,减少数据泄露风险,也让审计更简单。

建议你从行级安全入手,先解决最常见的“数据隔离”需求,再逐步扩展到列级和对象级。记住,安全策略越早配置,后期维护成本越低。

如果你已经在使用 Fabric,不妨今天就试试在湖屋中启用行级安全,体验一把“从源头锁数据”的感觉。

相关文章

Power BI 和 Microsoft Fabric 的 Databricks ADBC 连接器正式发布

Power BI 和 Microsoft Fabric 的 Databricks ADBC 连接器正式发布

微软正在把 Power Query 连接器的底层驱动从 ODBC 迁到 ADBC,这次轮到 Databricks。适用于 Power BI 和 Microsoft Fabric 的 Databricks ADBC 连接器已正式 GA(Generally Available,正式发布)。

#技术分享#Power BI#Fabric#语义模型
Power BI 2026 年 10 月功能摘要

Power BI 2026 年 10 月功能摘要

距离上一次九月更新才过去没多久,而且当时还赶上了欧洲 Microsoft Fabric + SQL 社区大会,更新量已经不小。

#技术分享#Power BI#Fabric#Copilot
Microsoft Data Factory 的 Amazon Redshift V2 连接器

Microsoft Data Factory 的 Amazon Redshift V2 连接器

微软正在对 Amazon Redshift 连接器进行重要升级,底层驱动将从旧版切换至全新的 Amazon Redshift ODBC 2.x。

#技术分享#Power BI#Fabric
F2容量跑通完整报表方案

F2容量跑通完整报表方案

很多团队一提到 Microsoft Fabric,第一反应就是:F2 这种小容量能干嘛? 跑个 Demo 都嫌卡,更别说承载一套完整的报表解决方案了。

#技术分享#Power BI#最佳实践
近似去重反而更慢?

近似去重反而更慢?

做 DAX 性能优化的人,看到 `APPROXIMATEDISTINCTCOUNT` 这个新函数,第一反应多半是:终于有办法治 `DISTINCTCOUNT` 这个性能杀手了。 但最近一轮实测下来,结论有点打脸——在某些场景下,近似去重反而比精确去重更慢。

#Power BI#最佳实践
近似去重计数:快但准吗?

近似去重计数:快但准吗?

9 月 Power BI 更新后,Import 模式和 Direct Lake 模式的语义模型开始支持 `ApproximateDistinctCount()` 这个 DAX 函数。 我在一个 14 亿行的 Direct Lake 语义模型上做了测试,数据来自纽约出租车样本。

#Power BI#最佳实践
有问题?加企业微信 1 对 1 交流 👇
➕ 添加企业微信
备注「白杨」优先通过 · 数据洞察与智能决策
企业微信
企业微信
备注「白杨」优先通过