月归档:2012 年二月

reporting service数据级权限解决方案

注:内容来源于网络。 BI数据分析是目前企业的热门应用,而对企业来说,权限控制是非常重要的,尤其是作为决策用的企业报表。目前基于微软SQL Server体系的BI架构为Integration Services + Analysis Service + Reporting Services,Integration Services和Analysis都属于应用后台的服务,不会在用户前端展现,其权限控制体系不在我们这篇文章的讨论范围内(但是实现数据级权限控制,需要Analysis Services的参与)。而对于前端展示用的企业报表,权限控制体系分为2种:报表级权限和数据级权限。报表级权限较为简单,主要用于控制谁能够看这个报表;数据级权限则比较复杂了,任何人看同一张报表,报表上的数据只能是他有权限查看的数据。简单说,就是总经理看到的数据和经理看到的数据是不一样的,虽然他们在看同一张报表。比较报表级权限和数据级权限,会发现如果实现了数据级权限的控制,那么企业报表是否需要进行权限控制已经不再重要(当然,为了界面友好性,还是应该控制下的)。 这篇文章主要就是讲述基于SQL Server架构的BI数据级权限的解决方案,这也是我给一个德国大型跨国企业客户实施其BI项目中,对方非常重视的一个功能。这里先简单介绍下这个客户和项目,出于保密要求,我把该客户叫做Customer S(简称CS,呵呵,不是那个游戏哦)。 CS项目前端采用Sharepoint,后台采用SQL Server,主要分析客户S的销售数据。CS的组织结构分为部门、区域;部门和区域是相互交叉的;某个部门的总部人员能够看到全国所有区域的数据;而区域员工则只能看到该区域的数据了。用户能够查看的数据权限,需要在网页上可以进行配置。这就是客户对数据级权限的要求。 针对这些需求,数据级权限解决方案采用如下架构: javascript:window.open(this.src);” style=”cursor:pointer;”/> 报表查看流程说明: 用户查看报表 报表从Cube中获取数据 Cube从数据库中(记录用户的数据权限配置)获得访问用户的权限配置,根据配置返回相应的数据 报表显示结果数据 数据权限配置流程说明: 用户访问数据权限配置页面(由于基于Sharepoint,因此是内嵌数据权限Webpart的Sharepoint页面) 页面获取Cube结构(由于Cube的结构内容很庞大,为了避免网页响应慢,一般通过ajax树状来展示其结构) 用户修改数据权限设置,并且保存到数据库中 说明:这里面进行数据权限控制的对象为域帐号(可以为域用户或者组)。 纵览数据权限实现的这个流程,我们提取出中间几个重要的实现具体讲解解决方案,他们是: Cube中如何进行权限控制 设置数据权限时,如何读取Cube结构 Cube中如何进行权限控制 SQL Server Analysis Services本身提供了一种设置Cube数据数据权限的机制。打开Analysis Services,我们可以看到“程序集”和“角色”2个条目,他们就是和数据权限设置紧密相关的内容了。如下图所示: javascript:window.open(this.src);” … 继续阅读

发表在 代码人生 | 标签为 , | 14 条评论