头图

本期的微软 MVP 实验室研究员 Davis Zhang,微软 MVP,MCSE,官方文档贡献者之一,专注于 Power Platform 及 Power BI 全局技术栈。下文将节选 Power BI 中涉及数据保护的几个核心技术点(BYOK, OLS 与 DLP)与大家进行分享。

前言

数据不仅是企业的资产,也是企业的命脉,其重要性不言而喻。而随着越来越多的企业采用了 Power BI 作为其商务智能解决方案之一,用户对微软BI体系中数据的安全与合规性的要求也愈加严格。因文章篇幅问题,下文将以 PBI 及 M365 管理员的角度,节选 Power BI 平台中较为核心的数据安全问题,即“数据寄存,数据呈现及数据导出”几个方面进行图文讲解。

PBI 数据安全之数据寄存

当 Power BI 数据集发布到 PBI Service 后,其数据实际上存储在 Azure Blob Storage, 在默认情况下,数据加密由 Microsoft 托管,而密钥的值,轮换规则以及加密方式则不受企业或组织的控制。尽管 Microsoft 使用了足够强大的256位 AES 加密算法,但在一些企业严苛的信息安全政策及合规部门严谨的审查工作面前,该说辞恐怕无济于事。为了使组织掌控密钥并使数据加密方式与轮换规则符合其政策,在 Power BI 实施BYOK(Bring your own Key)成为了唯一方案。

▌在 PBI 实施 BYOK

注意:

  • BYOK 目前仅适用于 PBI Premium (包括Capacity与Per User)
  • BYOK 主要支持以关系型数据库位数据源的 Import 数据集

1.登录 Azure 创建 Key Vault, 并分配 Unwrap Key 及 Wrap Key 权限

2.在 Access Policy 添加你要用于 BYOK 的 Power BI 工作区管理员账户以及 Power BI Service 服务主体

3.接下来按如下配置创建密钥

4.现在,将上一步创建好的密钥应用到PBI容量,目前没有界面可供设置,需要在 PowerShell 中键入命令


--安装 Cmdlets(已装跳过)
Install-Module -Name MicrosoftPowerBIMgmt
--登录
Connect-PowerBIServiceAccount 
--在整个PBI租户中启用BYOK
Add-PowerBIEncryptionKey -Name '<输入Key名称>' -KeyVaultKeyUri '<输入Key URI>'
--注:其中 Key URI可在 Azure Key Vault 中查询复制
--获取容量 ID
Get-PowerBICapacity -Scope Individual
--最后,为该容量设置 BYOK
Set-PowerBICapacityEncryptionKey -CapacityId <输入容量ID> -KeyName '<输入Key名称>'

至此,BYOK 即设置完成,输入以下命令检验:


Get-PowerBIEncryptionKey

如图显示即配置成功:

需要注意的点是,目前 BYOK 的实施是在整个容量层面的,而非 Workspace 层面的。一旦为容量设置了 BYOK,则该容量下所有的工作区都继承容量的 BYOK 设置。

5.秘钥轮换,可使用如下命令,若要实现定期轮换,可将其配置到已有应用程序,或直接使用 Azure Key Vault 中 “Rotation Policy” 预览功能


Switch-PowerBIEncryptionKey -Name '<输入Key名称>' -KeyVaultKeyUri '<输入新的Key URI>'

此处需要注意,无论是新版秘钥还是当前秘钥,都必须处于启用状态,否则将遇到如下报错。确保秘钥都启用后,问题解决,如图:

PBI 数据安全之数据呈现

数据呈现阶段的安全,顾名思义,是指用户在访问 PBI 报表时,如何基于不同的自定义角色,给予不同用户或不同组设置对数据不同的访问权限,虽然我们可以在工作区决定是否为某用户授予 Viewer 角色,但无法控制该用户能看哪些数据以及不能看哪些数据。

幸运的是,在 Power BI 导入模型中 ,微软提供了两种数据安全设置,RLS 和 OLS, 前者即 PBI 用户所熟悉的行级别安全性,其可以基于角色对不同表不同字段利用DAX定义过滤规则,也可以结合 USERPRINCIPALNAME() 动态定义访客权限(由于资料众多,此处不展开);而后者OLS (Object Level Security) 则是针对字段本身设置的安全性,它可基于角色控制不同字段(包括字段名)对特定用户是否可见,我们可以形象理解为“列级别安全性”。

▌在 PBI 实施 OLS

与 RLS 相同,OLS 同样要先在 PBID 创建角色,但具体表或字段可见性的安全控制则需要在外部工具 tabular editor 中完成。要对指定角色隐藏字段,只需使用该工具连接到模型后,选择需要设置的表或字段,将 OLS 中对应角色的值设置为 None 即可,如图:

以下是关于 OLS 需要注意的点:

  1. 如果对某角色隐藏的表或字段在前端报表中有使用,则该角色查看报表时,与之相关的所有可视化都不可用。
  2. 虽然无法针对特定度量值实施 OLS,但若度量值所引用的字段包含隐藏的字段,则该度量值对指定角色依然不可见。

下图展示的简单例子很好反映了上述两点。由于对角色“User”在字段“OrderQty”的 OLS 值设为了 None,因此左侧的可视化完全不可用,右侧的表由于未使用该字段,也未使用任何引用该字段的度量值,因此显示不受影响。

由于受底层技术限制,当前 PBID 还无法做到在同一个可视化内,在隐藏特定字段或值的同时不影响其他字段或值的展现,因此,OLS 的应用价值主要体现在了用户自助分析方面。

PBI 数据安全之数据防护

通过在工作区指定角色配合 RLS 以及 OLS,我们已经实现了对 PBI 数据内容的权限控制,但我们无法控制的是当数据从 Power BI 导出后,如何持续地保护数据,以及,如何对 PBI 数据进行监控以使得每当探测到敏感数据时,可以及时向管理员发出警报。

应对此情况的解决方案是对 Power BI 实施 DLP(Data Lose Prevention) 。它包括以下两个阶段:

1.Microsoft 365 管理员可以为 Power BI 创建和定义敏感度标签,不同的敏感度标签可以设置不同的权限定义,PBI 各工作区的管理员可以据情况为不同的数据集,数据流以及报表设置对应敏感度标签,以实现敏感数据即使离开了 Power BI,也能得到保护。引用 MS 文档的话讲:

When labeled data leaves Power BI, either via export toExcel, PowerPoint, PDF, or .pbix files, or via other supported export scenariossuch as Analyze in Excel or live connection PivotTables in Excel, Power BIautomatically applies the label to the exported file and protects it accordingto the label’s file encryption settings. This way your sensitive data canremain protected, even when it leaves Power BI.

2.Microsoft 365 管理员可以为 Power BI 创建 DLP 策略,该策略可以基于 PBI 内容的敏感度标签对敏感数据进行监控(该功能尚处于预览阶段)。

注:实施 DLP 需要 Microsoft 365 E5 订阅

▌在 PBI 实施 DLP

◇ 创建并发布敏感度标签

1.在 M365 合规中心按下图创建标签。

注:如果 Information protection 选项卡不可见,则需要检查下你的账户权限以及M365 Lisence

2.选择 Files & emails

3.此步骤,即是决定敏感度标签应用后的权限设置,可以添加用户,安全组甚至域,为他们分配不同的角色。

下图明确了不同角色的权限范围,也可以通过勾选具体项自定义角色的权限

4.标签创建完成后,发布标签:

注:可以在已有敏感度标签创建子标签,子标签可以在继承父级的权限范围的基础上对权限进行进一步定义,这将对大型组织十分有用。

在发布标签过程中,可以勾选此项,这将强制 Power BI 开发者在发布数据集与报表前对其应用敏感度标签,下文“PBI 敏感度标签强制实施验证”部分将展示其效果:

回到 Power BI Service, 发布的标签已经可用:

注意:

1.敏感度标签发布后,通常不会立即在各个应用中显示。如下图1已经说明“It can take up to 24 hours…”,因此,如果没有在 PBI 看到发布的标签,并不一定代表你的设置不成功,只需耐心等待。

2.Power BI 管理员需要在租户设置中启用敏感度标签(见图2)

                                    (图1)

                                    (图2)

◇ 验证

1.PBI 敏感度标签强制实施验证

如下用户必须先为 PBIX 应用敏感度标签,才可发布报表。

2.数据导出保护效果验证

如图,我已为数据集,报表以及分页报表指定了敏感度标签,其中 HIGH SENSITIVE 只有特定用户才能查看导出的数据。

        【示例1-1】Power BI 报表导出验证(使用有权限的账户)

        【示例1-2】Power BI 报表导出验证(使用无权限的账户)

        【示例2】Power BI 分页报表(Paginated Report)导出验证

◇ 创建 DLP 策略

DLP 策略在 Power BI 尚为预览功能,部分特性暂时不支持,如果公测在今年四月,那么 GA 可能又要往后推,下文仅就策略的创建部分做部分说明。

1.在 M365 合规中心,从 Custom Policy 开始创建:

  1. 选择 Power BI,DLP 默认应用到整个容量。如果仅希望 DLP 应用在个别工作区,可以输入对应的 Workspace ID:

  1. 创建 DLP 策略警报触发规则,可以仅就标记了某特定敏感度标签的 PBI 内容实施:

  1. 管理员可在此处进行数据监控:

总结

除上述内容外,有关 Power BI 安全性的技术点还有很多,如网关安全性,私有链接集成,Azure Log Analytics 集成等等,要逐一讲清这些内容,足够成书了,而国内外关于该领域的研究极少,一些坑,一些 bug,即使搜遍谷歌也难有解决办法,因此还是要依赖于读者的耐心探索,并在必要时获取微软技术人员的支持。

点击获取 Power BI 安全性白皮书


微软技术栈
418 声望994 粉丝

微软技术生态官方平台。予力众生,成就不凡!微软致力于用技术改变世界,助力企业实现数字化转型。