1. 数据泄露往往不是从数据库开始的:为什么我关注敏感度标签
1.1 一次事故引发的反思
去年帮一家制造企业做BI系统巡检时,我翻审计日志看到一条记录:某位运营同事把一个带有全国经销商结算价明细的Power BI报表“导出到Excel”,然后通过外部邮件发给了终端客户。数据库防火墙、行级安全、工作区权限全都配置齐全,但这份数据依然以最原始的形式流到了不该看到的人手里。真正的问题不是数据库被攻破,而是报表作为交付物离开平台后,不再受任何控制。
这件事让我重新梳理了Power BI数据安全体系。传统思路习惯把精力花在“谁能看”上:做权限规划、配置RLS行级安全、管理工作区成员身份。但“谁能看”解决的是平台内部访问的人数和范围,“数据出了平台之后怎么办”却是另一套逻辑。敏感度标签要解决的,恰恰是后者——当一个报表、仪表板、数据集或数据流被打上标签后,它就携带了密级声明、保护策略和审计线索,哪怕被导出、被转发、被下载到本地,它依然可以被识别、被约束、被追踪。
1.2 敏感度标签和权限控制完全不是一回事
很多人刚开始接触“敏感度标签”时,容易跟工作区权限、行级安全混在一起。我习惯做这样一个区分:
| 控制维度 | 工作区权限 | 行级安全(RLS) | 敏感度标签 |
|---|---|---|---|
| 控制对象 | 谁能打开工作区/报表 | 用户能看到哪些行数据 | 内容本身的密级、保护与追踪 |
| 作用层面 | 平台访问入口 | 数据模型查询层 | 信息治理与保护层 |
| 离开Power BI后 | 失效 | 失效 | 仍可携带标签与保护信息 |
| 典型用户 | 管理员/工作区成员 | 数据建模者 | 管理员/合规团队 |
| 能否防导出转发 | 不能 | 不能 | 取决于标签保护配置 |
用生活化类比来说:工作区权限是办公室门禁,行级安全是会议室里每个人只能看自己座位上的文件,而敏感度标签则是每份文件封面上的机密章、文件内的水印,以及文件被带走后依然生效的“涉密状态”。三者互相补充,但谁也不能替代谁。
我在实际项目中见过不少团队把敏感度标签当成“权限开关”,以为打了“机密”标签别人就自动打不开。这里面有个关键误区:标签只是一个声明机制,是否产生强制保护,取决于标签里配置的保护动作。没有配置加密和权限约束的标签,本质上就是一套分类标注体系,价值集中在密级识别和审计追踪上。
2. 敏感度标签到底给Power BI的哪些物件“盖戳”
2.1 可标记的对象范围
Power BI的敏感度标签不是只贴在报表上的,它覆盖四类核心内容:仪表板、报表、数据集、数据流。不同的对象“贴标”的影响范围不一样:
- 报表与仪表板:打标后,用户在线查看、导出、订阅时都会触发标签检查和保护动作。这是最直观的使用场景,内容页面上方会出现标签标识。
- 数据集:数据集打标是治理价值最高的动作。因为数据集成为了共享数据源,下游报表全部依赖它,只要数据集密级被打上,下游继承和溯源就都有了依据。
- 数据流:数据流本质上是ETL产物,它属于数据资产的上游,打标后能从源头传递密级信息给下游数据集和报表。
我通常建议团队优先给数据集和关键报表打标,仪表板因为通常只是视觉汇总层,优先级可以略低。但这不是绝对的,如果某个仪表板包含了KPI排名、门店明细等敏感内容,该打也得打。
2.2 标签在Desktop与服务端之间如何流转
标签并不是只在Power BI服务端存在。在Power BI Desktop里,当内容保存到服务端时,标签会随发布流程一起提交。如果文件本身带标签,发布后报表、数据集默认会带上对应标签;如果Desktop里没设置,发布后可以在服务端补打。
比较容易被忽略的是数据源继承。Power BI从带敏感度标签的数据源文件(比如Excel工作簿)读取数据时,数据集有机会继承数据源的标签。这个继承逻辑在数据资产链路治理中很有价值:源文件是“机密”,数据集被建出来自动继承“机密”,下游报表再跟随数据集继承。整条链路密级保持一致,减少了人工判断的疏漏。
2.3 标签继承与手动覆盖的优先级
继承不是绝对的覆盖关系。实际行为大致是这样的:
- 发布新内容时,如果源文件带标签,则数据集自动继承该标签。
- 如果数据集的标签已经存在,发布新报表不会自动降级或升级数据集的既有标签。
- 有权限的管理员可以手动修改数据集或报表的标签,但修改行为会记录到审计日志中。
- 标签继承主要解决“上游密级向下游传递”的问题,下游如果被手动改成更低密级,系统会依靠审计机制追踪到改动人。
我在部署时会给团队定一条规则:人工改低密级标签必须走审批。标签从“机密”改到“公开”这类降密操作最危险,纯靠自觉不现实,一定要配合日志审计,甚至可以结合第三方监控工具对特定对象的标签变化做告警。
3. 前置条件:许可证、权限与合规门户配置
3.1 许可证要求到底卡在哪
敏感度标签在Power BI里的启用,首先要满足许可条件。目前Power BI服务中启用敏感度标签通常要求工作区所在容量为Power BI Premium或Premium Per User(PPU)。也就是说,如果你只有Power BI Pro许可证,没有Premium容量或PPU,就算合规门户里标签建得再多,Power BI的开关和标签菜单也不会出现。
我遇到过最典型的卡壳场景:某电商公司的BI团队买了大量Pro账号,数据安全项目启动会也开了,结果进Power BI管理门户发现“敏感度标签”相关租户设置根本没有。后来查了才发现Premium容量没开通。所以启动这类项目前,第一步不是去合规门户建标签,而是先确认许可证架构。
需要区分的是:查看被标签保护内容的普通用户不一定必须是Premium。只要平台层面启用了该功能,普通读者在一定条件下也能看到带标签的内容。但实际项目中,如果标签带了加密保护,查看者的权限校验就更细了。
3.2 在合规门户里创建标签的完整步骤
标签的创建不在Power BI里,而是在Microsoft 365合规解决方案中(通常是Purview相关门户)。大致路径是:信息保护 → 标签 → 创建标签。创建时需要确定几个核心配置:
- 名称与说明:比如“机密-财务数据”,说明中写清楚密级适用对象和使用要求。
- 标记范围:如果标签要用于Power BI和Office文档,建议把范围选成通用型标签,确保Power BI等应用都能识别。
- 保护动作:可以配置加密权限、水印、页眉页脚。这一块是整个标签体系的“牙齿”,没有保护动作的标签只是分类逻辑。
- 发布策略:标签创建后必须发布给特定的用户或安全组。只有发布范围内的人,才能在Power BI里看到并使用这些标签。
有一步经常被忽略:标签策略发布的对象范围,需要和Power BI租户设置里的允许列表保持一致。假设合规门户把标签发布给了整个组织,但Power BI租户设置只允许“某BI治理安全组”使用标签,那么只有这个组的成员能在Power BI里用到标签。这个不一致会导致“有人能看见标签、有人看不见”,排查时很不直观。
3.3 打开Power BI的租户设置开关
合规门户里建好标签并发布后,回到Power BI管理门户 → 租户设置,找到敏感度标签相关配置项,开启后把允许使用标签的安全组加进去。这里有三个建议值:
- 启用项:打开整个租户的敏感度标签能力。
- 允许使用标签的组:先从小范围试点组开始,不要一上来就全员启用,等流程跑通再向全组织铺开。
- 数据集标签必填:如果条件允许,打开“要求对数据集应用标签”之类的强制项。这样没有标签的数据集无法发布,等于从制度上把标签变成内容发布的前置动作。
这一步做完,Power BI里的标签能力才算真正激活。需要说明的是,标签在合规门户创建和发布策略更新后,传到Power BI通常不是秒级生效,我实测过不少时候需要等待一段时间才能看到新标签。如果刚建好标签在Power BI列表里找不到,先别怀疑配置,等一会儿再刷新看看。
4. 实操:在Power BI服务中应用敏感度标签的完整链路
4.1 服务端的手工打标路径
在Power BI服务中给内容打标签,操作本身不复杂。以数据集为例:进入工作区,找到目标数据集,点击“更多选项”进入设置,在敏感度标签字段里选择对应标签,保存即可。报表和仪表板的操作同理。新发布的内容可以单独打标,也可以依赖继承规则自动获得标签。
手工打标适合内容数量不多、更新频率低的团队。遇到几百个数据集、上千份报表时,纯手工打标效率太低,还有漏打的可能。这类规模下我会建议用管理API批量处理——Power BI的扫描与管理接口能拿到数据集元数据和标签字段,结合脚本做批量套用、批量修正。PowerShell模块里针对敏感度标签的原生cmdlet覆盖并不完整,想走批量路线多半要写脚本调接口。这个动手门槛稍高,但做一次能长期受益。
4.2 Desktop端的标签设置细节
在Power BI Desktop里设置标签,要求登录组织账号,并且账号在合规门户的标签发布策略范围内。Desktop端查看和设置标签的位置不在默认视图里,需要在“视图”相关功能区打开标签显示选项。标签字段会出现,选中即可赋予当前文件。
这里有一个容易踩的坑:Desktop端设置标签后,如果文件发布到服务端时选择的发布目标工作区不是同一套管理域,标签可能不会跟着过去。我在跨租户迁移数据资产时遇到过几次,源租户的标签策略和目标租户不一致,发布后内容变成“未标记”状态。凡是做跨租户迁移的项目,一定要在迁移清单里加一项“标签校验”。
4.3 从Excel数据源继承标签的真实场景
我把它当作一个“上游治理”案例讲给客户听:
某零售企业每月从财务系统导出一份标记为“机密”的Excel分析底稿,数据人员用Power BI Desktop连接该文件做建模。文件自带标签时,Desktop会识别到数据源密级,保存并发布数据集后,数据集自动继承了“机密”标签。下游报表发布到同一个工作区时,如果没有手动指定更低密级,同样会继承数据集标签。
这样一来,从原始底稿到数据集再到报表,密级声明保持一致。就算有人把报表导出成PPT发出去,PPT文件上也会因为标签保护而带水印或权限限制。数据资产的可追溯性就是这么一点点铺开来的。
4.4 打标后的双重验证
打完标,不要急着宣布完成。我会按这个清单做验证:
- 在服务端内容列表中确认目标内容旁边有标签标识,点击能看到标签名称和保护类型。
- 用有查看权限的账号打开报表,检查页面是否有水印或页眉页脚显示。
- 执行一次“导出到Excel”,再把导出的文件下载下来,查看文件标签信息和打开权限提示。
- 在合规门户审计日志中搜索相关操作事件,确认打标行为被记录。
这套验证链条走完,基本能确定标签配置确实生效。我见过不少团队只做了第一项验证,结果导出文件完全没带标签,后面内容发出去才被发现,补救成本就高了。
5. 标签生效后,权限、导出与分享行为会发生什么
5.1 带保护配置的标签怎么改变导出行为
如果标签配置了保护动作,导出行为会明显变化。典型场景是导出到Excel:Power BI生成的Excel文件会自动附带数据集的标签元数据,文件打开时会提示密级信息;如果标签有加密权限,打开文件还需要通过身份验证,并非任何人拿到文件就能读取内容。
导出到PDF时,水印和页眉页脚的保护效果最直观。在线查看报表时屏幕上有水印,导出到PDF后水印同样保留。这一点对“防止截屏转发”虽然没有绝对的物理拦截效果,但至少让泄密者无法抵赖“不知道这是机密文件”。
需要注意的是,标签保护在导出环节生效的前提是产品版本和客户端支持。有个客户曾经反馈“导出到Excel后标签丢了”,最后定位到是办公软件客户端版本过旧,不支持新的信息保护能力。升级后问题消失。这种环境兼容性问题在大型组织里很常见,部署前最好先在试点环境摸一遍。
5.2 标签不改变RLS的既定事实
标签上线后最容易被误解的是和RLS的关系。我多次遇到业务方问:“数据集打了机密标签,是不是普通用户即使有RLS规则也看不到了?”
这里必须说清楚:标签和RLS是两个不同平面。RLS决定用户在查询数据集时能看到哪些行;标签声明数据集的密级并附加保护动作。一个带“机密”标签的数据集,如果RLS规则允许某用户看到其中部分行,那么该用户在线查看报表时依然能看到被允许的行。标签的保护动作主要作用在“内容层”和“文件层”,不会替代RLS的行级过滤逻辑。
换句话说,想限制用户可见数据范围,该配RLS还是得配RLS;想控制数据被导出、转发后的处理和追踪,靠标签。两者配合的组合拳才是完整方案。
5.3 分享和订阅场景下的实际表现
在工作区内共享报表时,标签不会阻止有权限的成员访问。但使用“链接共享”分享给外部用户时,如果标签带了加密权限,外部用户没有对应授权就打不开。这比单纯依靠“链接是否有效”要更进一层——链接本身可能有效,但内容受标签保护,访问者必须通过权限校验。
订阅邮件发送的报表快照同样会带上标签信息。我建议在推动敏感度标签时,把“订阅报表”和“分享链接”这两个场景单独列出来做用户教育,因为很多内部员工对标签的感知不强,以为只是报表上多了个图标,不知道订阅邮件里附带的文件同样受保护策略约束。
5.4 审计追踪里的标签事件
标签的治理价值很大一部分落在审计上。Power BI的管理审计日志和合规域的审计日志里,会记录标签的应用、变更、移除事件。这意味着:
- 谁给哪个数据集打了“机密”标签,有记录。
- 谁把标签从“机密”改成了“内部”,有记录。
- 谁的导出操作触发了标签保护,也有对应的上下文线索。
有了这些记录,安全事件的事后追溯才不是一句空话。前文提到的那家制造企业,后来再做类似事故排查时,审计日志直接指向了具体操作人和导出时间,省去了扯皮过程。敏感标签在“事前防御”上的作用虽然有限,但“事后追溯”上的作用非常扎实。
6. 我在生产环境中踩过的几个坑
6.1 标签开了开关,但列表里还是空的
现象:租户设置已启用,合规门户发布了标签策略,Power BI里选标签时下拉列表仍是空。排查方向通常有两个:
- 发布策略的对象范围问题:标签策略没有包含当前操作用户所在的组,导致用户不在标签使用范围内。
- 同步延迟问题:新发布的标签需要等待一段时间才能出现在Power BI,等几分钟再刷新一般能解决。
我遇到过最隐蔽的一次是:策略发布到了“所有用户”,但公司有多个组织单元,用户所属的租户目录和目标策略目录不是同一个,标签就是过不来。这种多目录结构的排查要花些时间,建议先从当前登录账号的归属组织单元入手核对。
6.2 导出Excel后标签消失
排查时先确认Power BI侧生成的Excel是否真的带标签。如果Power BI侧带标签,但下载到本机后打开不显示,基本可以判断是办公软件客户端或标签基础设施的问题,而不是Power BI配置问题。另一个常见原因是导出的文件类型本身对标签支持不完整,比如旧版文件格式可能不携带标签元数据。解决方式一个是升级客户端,另一个是调整导出文件格式策略。
6.3 数据集刷新失败与Gateway服务账号权限冲突
有一类问题容易被忽略:数据集打了带加密权限的标签后,Gateway刷新时服务账号如果没有被授予读取该加密数据集的权限,刷新直接失败。初次遇到时很容易以为是数据库连接字符串变了,实际排查方向在标签加密的权限授予上。
处理办法是把Gateway服务账号加入标签加密权限的授权列表,或者为服务账号单独配置相应的访问权限。这个坑在企业级部署里很典型,涉及敏感度标签和本地数据网关两个模块配合时,必须在部署文档里提前写清楚服务账号的授权要求。
6.4 把标签当权限管理用,导致治理动作走形
最后一个坑不来自技术,来自认知。有些团队图省事,希望靠标签替代工作区权限或RLS,结果线上内容要么因为标签保护被误伤(有权限的人打不开),要么标签形同虚设(没有配置任何保护动作)。我通常给团队传递这样的实践经验:
- 标签的核心是密级声明、保护动作和审计追踪的组合,不是单一开关。
- 想要控制谁能看内容,回到工作区权限和RLS。
- 想要控制内容离开平台后仍可控、可追、可保护,用敏感度标签。
- 先在数据集层面跑通,再扩展到报表和仪表板。
底线的操作建议是先定好标签分类体系,是“公开/内部/机密/受限”四档,还是更细的九档制,一旦发布到全员,再调整密级体系会很折腾。
敏感度标签在Power BI数据安全体系里扮演的角色,用一句话概括:“它管不到你在哪里看的,但它能确保你带走的是什么。”我在做数据治理项目时,最看重的不是配了多少标签,而是团队在发布内容前有没有形成主动打标的习惯。把这个习惯固化下来,比任何单次技术配置的收益都大。如果后续项目里遇到标签下发策略、跨租户同步或者标签强制必填的问题,再单独展开聊。