PowerBI Report Server 集成,自定义身份验证,数据权限控制
AD认证的集成模式
AD(或者Windows)认证是PBI的默认认证方式。在这种方式下,需要第三方应用也采用了AD的认证方式才可以正常的和PBI RS做集成。注意,这种方式要求第三方系统采用了AD的认证方式,并且用户在使用AD账户登录了操作系统,才能正常的不用输入登录用户名和密码去访问PBI RS或第三方系统。不用登陆的原因是用户在登陆操作系统时,已经输入了用户名和密码经过了AD的认证。这里不做第三方系统和AD集成的探讨,如果有需求,请参考微软官方的文档。
在第三方系统做好了AD的集成后,与PBI RS的集成,官方给出了通过URL的方式在第三方做iframe的嵌入。即通过将报表的地址,然后增加后缀 ?rs:embed=true的方式来实现集成。如果在浏览器直接输入,其对比效果如下:
访问/reports/powerbi/test/RLS?rs:embed=true的效果,只有报表区域。
访问/reports/powerbi/test/RLS的效果,包含了PBI RS的一些固有元素。
如果你还想在URL里传入参数,控制PBI报表的显示内容,还可以通过这样的参数组合来实现:reports/powerbi/[report_path]?rs:Embed=true&filter=[table_name]/[column_name or measure_name] eq 'value' [and [table_name]/[column_name or measure_name] eq 'value']
【对自定义制作报表场景有硬需求的用户一定要注意这段】
在AD认证模式下,用户使用PBI Desktop(本地版本)编辑完报表后,可以直接另存到PBI RS上。因为运行PBI Desktop的账户是AD账户,因此PBI Desktop和PBI RS之间是有认证关系的。那如果用户在非域的windows上访问系统并且编辑报表,然后也想将报表直接另存到PBI RS上怎么办?一个解决方案是,使用runas命令(runas /netonly /user:username "exefilepath")。有需求的童鞋可以查一下这个命令的用法,然后给这类用户一个bat批处理文件(或其他形式的可以使用runas命令或类似命令的交付物),用bat文件来代替原来的pbi desktop的启用方式。
此外,如果对安全性要求不是很高,用户也可以通过js里的xmlhttprequet对象,使用get方法将用户名和密码传递给PBI RS然后再请求iframe中的报表地址。这种方式需要注意两点,第一是用户名和密码实际是明文get请求到PBI RS的;第二需要考虑不同浏览器对脚本的支持情况。
很多时候,用户的环境不是纯AD的环境,或者使用了其他的SSO方案,这时候怎么做呢?我们可以使用PBI RS的Form认证方式。
在AD认证中的权限控制
PBI RS中如果想实现不同用户访问同一张报表时,看到的数据只能是这个用户权限范围之内的数据,则需要通过结合SSAS(SQL Server Analysis Service)来实现。具体步骤如下:
在AD中创建user1和user2。
使用SSDT(SQL Server Data Tools,请通过搜索引擎从微软官网下载),创建一个SSAS的tabular模型,然后部署到SSAS中。具体操作步骤,请参考官方教程:https://docs.microsoft.com/zh-cn/sql/analysis-services/tutorial-tabular-1400/as-adventure-works-tutorial?view=sql-analysis-services-2017,教程内容比较丰富,如果仅需要快速了解权限相关,请直接跳转到教程列表的“补充课程-动态安全性”部分。这个步骤的重点是,在模型中额外创建user1和user2对应的数据权限映射表,然后在这个权限映射表中,使用USERNAME()函数来做过滤。
使用PBI Desktop直连(Direct Query而非Import)到SSAS中对应的模型,制作报表,然后将报表发布到PBIRS。
user1和user2在PBI RS中都被管理员授予报表的浏览权限。
使用user1和user2在访问这张报表时,数据会按不同的用户做对应的呈现。
有些时候,用户可能会遇到下面的错误:
一般这种情况是由于服务器采用了k8s认证模式,而服务器却没有做好对应的配置,遇到这种情况,请参考: https://docs.microsoft.com/zh-cn/power-bi/report-server/configure-kerberos-powerbi-reports
Form认证的集成模式
PBI RS本身是一个.Net Web应用,实现其Form认证和.Net Web程序的Form认证基本原理一样。PBI RS提供了接口让用户可以实现自定义的Form认证。所谓的自定义就是,你可以选择实现你希望的PBI RS认证逻辑,是通过账号密码,还是SSO服务器的某种标准(比如SAML),只要用户在PBIRS的扩展模块实现了IAuthenticationExtension2接口。微软给出了示例代码,并放到了github上。示例代码下载地址:https://github.com/Microsoft/Reporting-Services/tree/master/CustomSecuritySample。完成Form认证的设置需要的步骤比较多,而且需要比较多的.net web相关知识,为了让大家可以更快上手,微软在github上的示例代码的最近更新中,添加了一个powershell脚本,可以实现一键部署,方便了大家体验Form认证。
在Form认证模式下,第三方系统可以非常方便的和PBI RS做集成。比较推荐的方式还是使用官方介绍的embed的URL方式。但是在Form认证下,目前存在一个问题是,PBI Destkop在制作完报表后,无法直接另存到PBI RS中。用户尝试在另存为的时候 ,会得到服务器返回的一个错误。目前这个错误是由于PBI Desktop在当前版本还不支持Form认证,根据PBI社区的信息,产品组已经在制作相关的功能,下个版本可能会解决。目前的一个解决办法是,用户编辑完pbix报表后,不要另存为,而是选择先存到本地,然后再登陆到PBI RS,利用上传功能,将pbix文件上传到PBI RS上。这种模式下,为了安全性考虑,上传的pbix的数据源连接的信息会丢失(如果不丢失就需要PBIRS保存用户指定的数据源的用户名和密码,这点会有比较大的安全隐患),需要用户在PBI RS站点上再编辑一下上传的pbi报表的数据源信息,pbi报表才可以正常显示。而每次上传报表后还要再次做一次数据源的编辑对用户来说,操作过于繁琐。因此,我们可以做一个简单的页面,这个页面使用PBI RS提供的RESTAPI来实现pbix文件的上传,在上传完毕后,调用相关RESTAPI,将这个报表的数据源信息自动重写。关于RESTAPI的功能,不在这里详述了,有兴趣的童鞋可以去PBI官网的文档中查看更多信息。
在Form认证中的权限控制
在Form认证中,PBI RS的用户不再是AD用户,而SSAS不支持非AD用户(或windows用户)之外的认证方式。这种情况下怎么控制不同用户的数据权限呢?答案是,还是通过SSAS来完成。具体思路如下:
在PBI RS里创建user1和user2
使用SSDT创建SSAS模型,然后发布到SSAS,注意,在创建模型时,依然需要一张用户和数据权限的映射表。此时暂时先不处理权限的映射。
使用PBI Desktop通过直连的方式直连到SSAS,然后创建报表,并将pbix文件上传到PBI RS上。
在PBI RS上编辑这张报表的数据源成以下格式:
Data Source=[server name or server ip];Initial Catalog=[model name];customdata={{UserID}}
注意,红色部分是核心。customdata是SSAS的连接字符串的扩展参数;{{userid}}是PBI RS的内置通配符,会将这个通配符的值替换成当前PBI RS登陆用户,然后传递给SSAS。
同时报表数据源的凭据使用Windows,但是要指定账户,并且要勾选使用当前凭据,模拟用户访问报表单选框。
在SSAS中,增加一个角色,在这个角色的数据过滤条件中,输入类似于下面的格式的公式:
=Mapping_table[username]=CUSTOMDATA()
使用user1和user2登陆报表,查看到这张报表的数据已经根据用户做了过滤。
PowerBI Report Server 集成,自定义身份验证,数据权限控制相关推荐
- PowerBI Report Server 自定义视图无法显示故障解决
PowerBI Report Server 自定义视图无法显示故障解决 很久不写blog,搞开源,搞AKS,K8S .但是最近出现了PBI故障,研究一番,记录下情况,为大家某个福利. 如下图,红线内, ...
- ISA server的常见身份验证方式
ISA 2006的几种常用验证方式: 1. 基本验证: 此验证方式不会被加密,只是以明文的方式来传递信息,不安全.如果在"网络"的"内部"属性中将"域 ...
- SQL Server 数据库之身份验证和访问控制
身份验证和访问控制 1. 身份验证模式 1.1 Window 身份验证模式 1.2 混合身份验证模式 2. 管理登录名 2.1 创建 Windows 登录名 2.2 创建 SQL Server 登录名 ...
- 微软SQL服务器登录,Microsoft SQL Server 【Windows 身份验证】和 【sa】都无法登录的解决方案...
1.修改启动参数:打开[SQL Server 配置管理器(SQL Server Configuration Manager)]→右键[SQL Server(MSSQLSERVER)]属性→高级(Adv ...
- 134_Power BI Report Server之某消费品运营数据监控
博客:www.jiaopengzi.com 焦棚子的文章目录 请点击下载附件 一背景 最近很久都没有更新文章了,研究了下Power BI Report Server(下文简称pbirs). 今天把pb ...
- 万众期待的PowerBI Report Server与PowerBI Premium
2017年5月3日,微软宣布了发布了PowerBI的重要更新,其中最重要的事情是发布了:Power BI Premium Power BIPremium是为专有客户提供的高性能的独享PowerB ...
- 怎样更改SQL Server 2008的身份验证方式
大家都知道sql server 有两种登录验证方式,即sql server验证方式和windows验证方式,但是sql server默认的是windows登录验证方式,我们如何启用sql server ...
- 如何更改SQL Server 2005的身份验证模式
安装MS SQL Server 2005时,缺省为Windows身份验证模式,刚开始不知道怎么修改为SQL Server和Windows混合身份验证模式,只好重装,然后选择为混合模式,后来发现,原来装 ...
- SQL Server 2005的身份验证模式修改步骤
安装MS SQL Server 2005时,缺省为Windows身份验证模式,刚开始不知道怎么修改为SQL Server和Windows混合身份验证模式,只好重装,然后选择为混合模式,后来发现,原来装 ...
最新文章
- link-time version is older than compile-time version
- 可简单图化算法(Havel算法)
- 大学计算机等级培训卷子,大学计算机期中考试试卷示例.doc
- JavaScript 创建类/对象的几种方式
- 泰康人寿信息化三大核心战略:移动优先、数据驱动和云计算
- arch linux arm下载_linux系统下编译给android JNI调用的Gmssl库
- 深入理解PHP之foreach
- STL中map与hash_map容器的选择
- html5均线图源码,通达信导航家之成本均线主图指标 源码(图文)
- luogu P2706 巧克力
- 组装计算机主机算固定资产吗,​购买电脑配件组装电脑属于固定资产吗
- css动画效果制作正方体旋转相册
- MaaS一体化绿色出行服务,实现城市交通出行碳中和
- 武汉关谷职业学院计算机中心,武汉光谷职业学院2021年宿舍条件
- Vue安装element ui踩坑
- poj1125Stockbroker Grapevine(最短路floyd)
- 中行安全控件可致 Win8 笔记本键盘失灵
- Knight On the Chessboard
- 中国人工晶状体行业运行态势分析及发展战略规划建议报告2022-2028年版
- 基于PHP+MySQL的家居装修主题网站