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

Disable edit mode for Power BI Embedded report

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

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

创建 EmbedToken 时,作为报告所有者,您声明您授予用户关于该特定报告的能力。如果你没有给用户写入权限,他们所能做的就是通过修改 JS 来纯本地。

这被定义为 accessLevel 中的:https://docs.microsoft.com/en-us/rest/api/power-bi/embedtoken/reports_generatetoken

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

在建模(在 Power BI Desktop 中)下,select 管理角色

  1. Select 您要筛选的 table,然后键入要筛选的 DAX 表达式,例如[City State] = "Sparta".
  2. 为角色命名,例如 Spartan,然后添加您需要的任何其他过滤器。单击保存。您可以 select 作为角色查看以确保数据得到适当过滤。
  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" }) });.
  4. 之类的内容

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

使用这种方法,即使用户确实操纵 JavaScript 以在编辑模式下获取报表,他们也将无法访问您的 DAX 语句过滤掉的数据。