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

时间:2018-11-05 10:02:45

标签: powerbi-embedded

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

1 个答案:

答案 0 :(得分:1)

如果修改JS代码可以覆盖报告的编辑,但是该用户将无法保存或修改报告本身,因为授予的EmbedToken应该没有写许可。

在创建EmbedToken时,您作为报告所有者,声明您要在该特定报告上授予用户哪些功能。如果您不授予用户“写”访问权限,则他们只能通过修改JS在本地进行操作。

这在https://docs.microsoft.com/en-us/rest/api/power-bi/embedtoken/reports_generatetoken

中定义为accessLevel

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

在“建模”下(在Power BI Desktop中),选择“管理角色”

  1. 选择要过滤的表,然后键入DAX表达式以进行过滤,例如[City State] = "Sparta"
  2. 给角色起个名字,例如Spartan,然后添加您需要的任何其他过滤器。单击保存。您可以选择“查看为角色”以确保适当地过滤了数据。
  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语句过滤掉的数据。