首页 > 技术文章 > Power BI行级别安全性(数据权限管理)

Evan-fanfan 2019-04-21 11:53 原文

自从PowerBI 的DAX 函数 支持username() 或 userprincipalname()的函数后,我们就可以在Power BI中实现根据用户的行级数据权限的控制。

username() 将返回采用域\用户格式的用户. ReportServer 的PowerBI上有坑,username()返回的还是 user@contoso.com 格式。

userprincipalname() 将返回采用 user@contoso.com 格式的用户

实现方式

1、权限的表的定义

  权限表结构定义如下,如下图所以a用户可看ABC的数据,b用户可看CD的数据。另外增加所有客户与admin的关联关系。

  其中LoginID是AD用户名 格式为【域\用户】

        

2、Power BI Desktop 中的处理

  a)可以访问所有数据的用户。

    针对此类用户,我们添加一个admin的角色。

    设置DAX表达式 :LogonID] = "admin"

  b) 带有数据控制的用户。

    针对此类用户,我们添加一个right_conrtl的角色。

    设置DAX表达式:[LogonID] = username()

3、Power BI Report Server 中将用户添加进角色中。

 

 4、筛选器数据控制

多对多关系

 

 

[dept_id] IN SELECTCOLUMNS( GENERATE(FILTER(OLAP_Dim_Task_Right,OLAP_Dim_Task_Right[UserPrincipalName]=USERPRINCIPALNAME()),RELATEDTABLE (OLAP_Dim_Dept)),"OLAP_Dim_Dept",OLAP_Dim_Dept[dept_id])

 

 

 

 

  

 

推荐阅读