在嵌入的分页报表中实现行级别安全性

适用范围:️ 应用拥有数据 用户拥有数据

本文介绍如何将使用 RLS(行级别安全性)的分页报表嵌入到应用拥有数据应用程序中。

注意

本文仅适用于应用拥有数据客户。

若要对分页报表使用 RLS,请执行以下操作:

  1. 设置环境以筛选报表
  2. 在报表或查询级别筛选数据
  3. 使用嵌入令牌传递配置的参数

先决条件

  • 本文假定你知道如何嵌入 Power BI 分页报表。 它介绍了如何生成嵌入令牌,以便报表仅显示用户有权访问的内容。

  • 使用 SQL Server 报告服务引擎而不是 Power BI(分析服务)引擎创建分页报表,因此在 Power BI 报表生成器中设置 RLS 筛选。

设置环境

若要将行级别安全性应用于 Power BI 分页报表,请使用内置字段 UserID 分配参数。 此参数将用于筛选或查询数据

然后,将 UserID 传递给嵌入令牌 - 生成令牌 API 以获取嵌入令牌

在报表或查询级别使用 UderID 作为筛选器

可以使用 UserId 作为筛选器,也可将其用于对数据源的查询。

筛选数据

  1. 在“语义模型属性”窗口的左窗格中,选择“筛选器”

    Screenshot of the Power BI Report Builder filter.

  2. 从“表达式”下拉菜单中,选择要用于筛选数据的参数。

    Screenshot shows the value Color selected from the Expression menu.

  3. 单击“值”函数按钮。

    Power BI Report Builder value

  4. 在“表达式”窗口的“类别”列表中,选择“内置字段” 。

    Screenshot shows the Expression window with Built-in Fields selected as Category and ExecutionTime selected as Item.

  5. 从“项”列表中,选择 UserID,然后单击“确定” 。

    Power BI Report Builder UserID

  6. 在“语义模型属性”窗口中,验证表达式是否是“所选参数 = UserID”,然后单击“确定”

    Power BI Report Builder semantic model properties

使用查询

  1. 在“语义模型属性”窗口中,从左侧导航窗格中,选择“参数”并单击“添加”

    Power BI Report Builder parameters

  2. 在“参数名称”字段中中输入“@UserID”,然后在“参数值”中添加“[&UserID]”

    Power BI Report Builder parameter name

  3. 在左侧窗格中,选择“查询”,在“查询”中添加 UserID 参数作为查询的一部分,然后单击“确定”。

    注意

    在下方的屏幕截图中,使用 color 参数作为示例(其中,FinalTable.Color = @UserID))。 如果需要,可以创建更复杂的查询。

    Power BI Report Builder queries edit

生成嵌入令牌

为客户嵌入分页报表时,请使用 Reports GenerateTokenInGroup API 获取嵌入令牌。 此令牌还可用于从分页报表中筛选出某些数据。

只能使用服务主体生成令牌。 不能以主用户身份生成令牌。 服务主体必须至少对 Power BI 服务中的工作区具有成员权限。 (如果服务主体是参与者或观看者,则无法生成令牌)。

若要生成令牌,请将要显示的信息分配给 username 字段。 例如,在使用 color 参数的分页报表中,如果在 username 字段中输入 green,则嵌入令牌会限制嵌入的数据,仅显示颜色列中具有 green 值的数据。

{
 "reports": [
 {
  "id": "8d57615e-cfed-4d60-bd21-7dc05727193c"
 }
 ],
 "identities": [
 {
  "username": "green",
  "reports": [
  "8d57615e-cfed-4d60-bd21-7dc05727193c"
  ]
 }
 ]
}

注意

如果在未指定 user-id 的情况下生成嵌入令牌,将使用服务主体的 object-id。

注意事项和限制

  • 主用户不支持为客户嵌入分页报表。 主用户支持为组织嵌入分页报表。
  • 服务主体必须具有成员或更高的工作区权限(而不是观看者或参与者)。

生成嵌入令牌