PowerBI开发 第十五篇:Power BI的行级安全
Power BI支持行级安全(Row-Level Security,RLS)的权限控制,用于限制用户对Dashboard、报表和DataSet的访问。用户浏览的报表是相同的,但是看到的数据却是不同的。
RLS内部通过DAX函数 username() 和 userprincipalname()来实现,RLS使得PowerBI能够在行级别上对用户访问的数据进行限制。这两个函数在PowerBI Desktop中返回的都是用户的信息,只不过格式不同:
- username() :返回 domain\user_name
- userprincipalname() :返回 user_name@domain.com
这两个函数在PowerBI Service中返回的格式是相同的:user_name@domain.com。如果需要发布到PowerBI Service中,建议使用 userprincipalname()函数来创建过滤规则。
一,实现RLS的组件
RLS的主要组件是:Users、Roles和Rules。用户访问数据时,RLS按照角色中定义的规则对用户的访问进行控制。

- Users:浏览报表的用户,使用user name 或 email address 来唯一标识。
- Roles:用户属于Role,一个角色是一个Rule的容器。
- Rules:规则(Rule)是过滤数据的断言(Predicate)。
在PowerBI Desktop中创建角色和规则,当发布到PowerBI Service中时,角色和规则也会发布到PowerBI Service中,报表开发人员需要在PowerBI Service中对DataSet的Security进行配置。
二,创建用户权限表和关系
实现RLS的关键一步是配置用户权限表,用户权限表用于指定用户有权限访问的数据,而关系是RLS能够起作用的基础,通过关系的交叉过滤功能实现用户访问数据的行级控制。
举个例子,有如下用户权限表:

在本例中,我们在规则中使用userprincipalname()函数,UserName列是用户的邮件地址,Product列是用户可以访问的产品类型,一个User可以访问多个Product。该表和DimProductCategory创建关系时,设置为“many to 1”的双向关系,通过UserName来过滤用户可以访问的Product。

三,创建角色和规则
有了用户权限配置表之后,接下来就是创建角色和规则,角色是用户的集合,角色中的所有用户遵守相同的规则;规则是定义用户是否有访问数据的权限。
在Modeling 选项卡中,选择“Manager Roles”:

点击“Create”按钮,创建一个Role,并命名角色。从Tables列表中添加Filter,在“Table filter DAX expression” 中输入DAX表达式,也就是创建规则,用于对用户进行过滤:

为了确保规则的正常运行,点击“View as Roles”,查看规则运行的情况:

也可以选择Other user,输入一个用户名称,检查规则对该用户产生的效果。
四,管理角色和规则
在创建角色时,可以创建一个admin的角色,可以访问所有的数据,设置DAX表达式:
UserName='admin@domain.com'
对于其他用户,其访问数据的权限受到限制,创建常规的角色,设置DAX表达式:
UserName = userprincipalname()
把PowerBI发布到PowerBI Service中,需要在数据模型中管理RLS。在PowerBI Service的Datasets中,点击Security,把用户添加到角色中:

把用户或用户组添加到角色中,用户组中的用户有权限访问报表。在访问报表时,userprincipalname()函数返回的是用户的邮件地址,而不是用户组的邮件地址,从而实现用户的权限控制:

报表管理人员,可以创建一个用户组,把用户组添加到角色中,并通过用户组来管理User对报表的访问,以实现RLS。
参考文档:
Row-level security (RLS) with Power B
USERPRINCIPALNAME – show user name and use it in RLS (DAX – Power Pivot, Power BI)
PowerBI开发 第十五篇:Power BI的行级安全的更多相关文章
- PowerBI开发 第十五篇:DAX 表达式(时间+过滤+关系)
DAX表达式中包含时间关系(Time Intelligence)相关的函数,用于对日期维度进行累加.同比和环比等分析.PowerBI能够创建关系,通过过滤器来对影响计算的上下文. 一,时间关系 DAX ...
- 数据可视化之powerBI基础(十五)Power BI同步切片器,你知道怎么用吗?
https://zhuanlan.zhihu.com/p/67932754 在PowerBI报表中,切片器绝对是最常用的控件了,利用它可以进行各种维度的动态切换,同一个页面中的所有图表可以同步响应:利 ...
- PowerBI开发 第十六篇:PowerBI Service基本概念
从总体上来看,PowerBI Service 有4个主要的构建模块,分别是dashboards.reports.workbooks 和 datasets,这四个模块都是目录,位于workspaces目 ...
- PowerBI开发 第十四篇:使用M公式添加列
PowerBI的查询编辑器使用Power Query M公式语言来定义查询模型,它是一种富有表现力的数据糅合(Mashup)语言,一个M查询可以计算(Evalute)一个表达式,得到一个值. 对于开发 ...
- PowerBI开发 第十二篇:钻取
钻取是指沿着层次结构(维度的层次)查看数据,钻取可以变换分析数据的粒度.钻取分为下钻(Drill-down)和上钻(Drill-up),上钻是沿着数据的维度结构向上聚合数据,在更大的粒度上查看数据的统 ...
- PowerBI开发 第十八篇:行级安全(RLS)
PowerBI可以通过RLS(Row-level security)限制用户对数据的访问,过滤器在行级别限制数据的访问,用户可以在角色中定义过滤器,通过角色来限制数据的访问.在PowerBI Serv ...
- 数据可视化之powerBI入门(十)认识Power BI的核心概念:度量值
https://zhuanlan.zhihu.com/p/64150720 本文学习PowerBI最重要的概念:度量值 初学Power BI一般都会对度量值比较困惑,毕竟对长期接触Excel的人来说, ...
- 数据可视化之powerBI基础(十八)Power BI度量值的格式如何修改?这里有三种方式
https://zhuanlan.zhihu.com/p/99818030 在知识星球遇到的问题中,有不少朋友问如何修改数值型度量值的格式,比如,新建的度量值如何显示为百分比或者千分位等等,这篇文章 ...
- PowerBI开发 第十九篇:基于Page创建Tooltip
在PowerBI 报表中,常规的Tooltip是一段文本,当光标悬停在Visual上,Visual上方会自动显示Tooltip的文本.PowerBI 支持用户自定义内容丰富的Tooltip,用户通过创 ...
随机推荐
- Tomcat 报错 The APR based Apache Tomcat Native library which allows optimal performance in production environmen
这个问题在我一次重新装了tomcat和myeclipse时出现 说实话 出现这个问题头大 但是好在解决了 美滋滋 最开始到处寻找各种解决方案 最后直接注释了server.xml中的一行 直接解决这个报 ...
- 品Spring:SpringBoot轻松取胜bean定义注册的“第一阶段”
上一篇文章强调了bean定义注册占Spring应用的半壁江山.而且详细介绍了两个重量级的注册bean定义的类. 今天就以SpringBoot为例,来看看整个SpringBoot应用的bean定义是如何 ...
- 用Python怎么telnet到网络设备
0.前言 Telnet协议属于TCP/IP协议族里的一种,对于我们这些网络攻城狮来说,再熟悉不过了,常用于远程登陆到网络设备进行操作,但是,它的缺陷太明显了,就是不安全,信息明文传送,极容易被攻击窃取 ...
- layer.open打开一个新的jsp页面,如何关闭并刷新父页面问题
layer.open打开一个新的jsp页面弹框,如何关闭呢? 在新的页面提交完毕之后,关闭并刷新父页面列表. layer.closeAll(); parent.layer.closeAll(); wi ...
- 【爬虫小程序:爬取斗鱼所有房间信息】Xpath(线程池版)
# 本程序亲测有效,用于理解爬虫相关的基础知识,不足之处希望大家批评指正 from queue import Queue import requests from lxml import etree ...
- plsql导入导出表结构和数据对象
一.Tools的导出表结构:export User objects 二.Tools的Export Tables选项 导出表数据:export tables (选择:exp.exe) 三. 导入表结构: ...
- react redux 二次开发流程
在一个大项目中如何引入redux及其相关技术栈(react-redux redux-thunk redux-immutable ),已经成为react前端工程师不可或缺的技能,下面通过实现一个简单的t ...
- Shell之Xargs命令
目录 Shell之Xargs命令 参考 xargs命令简介 xargs命令格式 xargs实例说明 Shell之Xargs命令
- 服务网关Spring Cloud Zuul
Spring Cloud Zuul 开发环境 idea 2019.1.2 jdk1.8.0_201 Spring Boot 2.1.9.RELEASE Spring Cloud Greenwich S ...
- 前端深入之css篇丨2020年前,彻底掌握css动画【transition】
写在前面 马上就2020年了,不知道小伙伴们今年学习了css3动画了吗? 说起来css动画是一个很尬的事,一方面因为公司用css动画比较少,另一方面大部分开发者习惯了用JavaScript来做动画,所 ...