禁用Power BI Embedded报告的编辑模式



我创建了一个本机应用程序,并将Azure Active Directory中的权限设置为仅查看,我使用它来公开带有Power BI Embedded的报告(使用C#SDK(。然而,编辑JavaScript以将报告置于编辑模式相对简单,从而暴露底层数据。在使用Power BI Embedded时,是否有任何方法可以防止编辑报告,或者确保只共享允许的数据?

虽然修改JS代码时可以覆盖对报告的编辑,但该用户将无法保存或修改报告本身,因为授予的EmbeddToken应该没有写入权限。

在创建EmbeddToken时,您作为报表所有者,声明您在该特定报表上授予用户的功能。如果你没有给用户Write访问权限,他们所能做的就是通过修改JS来进行纯本地操作。

这在以下内容中被定义为accessLevel:https://learn.microsoft.com/en-us/rest/api/power-bi/embedtoken/reports_generatetoken

如果问题是数据访问,您可以通过使用嵌入式行级安全性(RLS(来实现这一点。步骤如下:https://learn.microsoft.com/en-gb/power-bi/developer/embedded-row-level-security

在建模(在Power BI桌面中(下,选择管理角色

  1. 选择要筛选的表,然后键入要筛选的DAX表达式,例如[City State] = "Sparta"
  2. 斯巴达人说,给这个角色起个名字,然后添加你需要的任何其他过滤器。单击"保存"。您可以选择"作为角色查看"以确保数据得到适当筛选
  3. 在代码中,修改令牌请求以包含用户名、角色和数据集。您可以将其从类似var generateTokenRequestParameters = new GenerateTokenRequest(accessLevel: "view");的内容更改为类似var generateTokenRequestParameters = new GenerateTokenRequest("view", null, identities: new List<EffectiveIdentity> { new EffectiveIdentity(username: "Spartacus", roles: new List<string> { "Spartan" }, datasets: new List<string> { "datasetId" }) });的内容

请注意,用户名、角色和数据集都是必需的。

使用这种方法,即使用户在编辑模式下操作JavaScript来获取报告,他们也无法访问DAX语句过滤掉的数据。

最新更新