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

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

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

注意

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

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

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

先决条件

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

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

设置环境

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

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

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

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

筛选数据

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

    Power BI 报表生成器筛选器的屏幕截图。

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

    屏幕截图展示了从“表达式”菜单中选择了值“Color”。

  3. 选择“值”函数按钮。

    Power BI 报表生成器值

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

    屏幕截图展示了“表达式”窗口,其中“内置字段”被选作“类别”,“ExecutionTime”被选作“项”。

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

    Power BI 报表生成器 UserID

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

    Power BI Report Builder 语义模型属性

使用查询

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

    Power BI 报表生成器参数

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

    Power BI 报表生成器参数名

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

    注意

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

    Power BI 报表生成器查询编辑

生成嵌入令牌

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

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

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

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

注意

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

注意事项和限制

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

生成嵌入令牌