在嵌入的分页报表中实现行级别安全性
适用范围:️ 应用拥有数据 用户拥有数据
本文介绍如何将使用 RLS(行级别安全性)的分页报表嵌入到应用拥有数据应用程序中。
注意
本文仅适用于应用拥有数据客户。
若要对分页报表使用 RLS,请执行以下操作:
先决条件
本文假定你知道如何嵌入 Power BI 分页报表。 它介绍了如何生成嵌入令牌,以便报表仅显示用户有权访问的内容。
使用 SQL Server 报告服务引擎而不是 Power BI(分析服务)引擎创建分页报表,因此在 Power BI 报表生成器中设置 RLS 筛选。
设置环境
若要将行级别安全性应用于 Power BI 分页报表,请使用内置字段 UserID 分配参数。 此参数用于筛选或查询数据。
然后,将 UserID 传递给嵌入令牌 - 生成令牌 API 以获取嵌入令牌。
在报表或查询级别使用 UderID 作为筛选器
可以使用 UserId 作为筛选器,也可将其用于对数据源的查询。
筛选数据
在“语义模型属性”窗口的左窗格中,选择“筛选器”。
从“表达式”下拉菜单中,选择要用于筛选数据的参数。
选择“值”函数按钮。
在“表达式”窗口的“类别”列表中,选择“内置字段” 。
从“项”列表中,选择 UserID,然后选择“确定”。
在“语义模型属性”窗口中,验证表达式是否是“所选参数 = UserID”,然后选择“确定”。
使用查询
在“语义模型属性”窗口中,从左侧导航窗格中选择“参数”,然后选择“添加”。
在“参数名称”字段中中输入“@UserID”,然后在“参数值”中添加“[&UserID]”。
在左侧窗格中,选择“查询”,在“查询”中添加 UserID 参数作为查询的一部分,然后选择“确定”。
注意
在下方的屏幕截图中,使用 color 参数作为示例(其中,FinalTable.Color = @UserID))。 如果需要,可以创建更复杂的查询。
生成嵌入令牌
为客户嵌入分页报表时,请使用 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。
注意事项和限制
- 主用户不支持为客户嵌入分页报表。 主用户支持为组织嵌入分页报表。
- 服务主体必须至少具有成员(而不是观看者或参与者)的工作区权限。