BI数据权限解决方案.doc

BI数据权限解决方案.doc

ID:55631019

大小:101.50 KB

页数:8页

时间:2020-05-21

BI数据权限解决方案.doc_第1页
BI数据权限解决方案.doc_第2页
BI数据权限解决方案.doc_第3页
BI数据权限解决方案.doc_第4页
BI数据权限解决方案.doc_第5页
资源描述:

《BI数据权限解决方案.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、BI数据分析是目前企业的热门应用,而对企业来说,权限控制是非常重要的,尤其是作为决策用的企业报表。目前基于微软SQLServer体系的BI架构为IntegrationServices+AnalysisService+ReportingServices,IntegrationServices和Analysis都属于应用后台的服务,不会在用户前端展现,其权限控制体系不在我们这篇文章的讨论范围内(但是实现数据级权限控制,需要AnalysisServices的参与)。而对于前端展示用的企业报表,权限控制

2、体系分为2种:报表级权限和数据级权限。报表级权限较为简单,主要用于控制谁能够看这个报表;数据级权限则比较复杂了,任何人看同一张报表,报表上的数据只能是他有权限查看的数据。简单说,就是总经理看到的数据和经理看到的数据是不一样的,虽然他们在看同一张报表。比较报表级权限和数据级权限,会发现如果实现了数据级权限的控制,那么企业报表是否需要进行权限控制已经不再重要(当然,为了界面友好性,还是应该控制下的)。这篇文章主要就是讲述基于SQLServer架构的BI数据级权限的解决方案,这也是我给一个德国大型跨国

3、企业客户实施其BI项目中,对方非常重视的一个功能。这里先简单介绍下这个客户和项目,出于保密要求,我把该客户叫做CustomerS(简称CS,呵呵,不是那个游戏哦)。CS项目前端采用Sharepoint,后台采用SQLServer,主要分析客户S的销售数据。CS的组织结构分为部门、区域;部门和区域是相互交叉的;某个部门的总部人员能够看到全国所有区域的数据;而区域员工则只能看到该区域的数据了。用户能够查看的数据权限,需要在网页上可以进行配置。这就是客户对数据级权限的要求。针对这些需求,数据级权限解决

4、方案采用如下架构:-报表查看流程说明:用户查看报表报表从Cube中获取数据Cube从数据库中(记录用户的数据权限配置)获得访问用户的权限配置,根据配置返回相应的数据报表显示结果数据数据权限配置流程说明:用户访问数据权限配置页面(由于基于Sharepoint,因此是内嵌数据权限Webpart的Sharepoint页面)页面获取Cube结构(由于Cube的结构内容很庞大,为了避免网页响应慢,一般通过ajax树状来展示其结构)用户修改数据权限设置,并且保存到数据库中说明:这里面进行数据权限控制的对象为

5、域帐号(可以为域用户或者组)。纵览数据权限实现的这个流程,我们提取出中间几个重要的实现具体讲解解决方案,他们是:Cube中如何进行权限控制设置数据权限时,如何读取Cube结构Cube中如何进行权限控制SQLServerAnalysisServices本身提供了一种设置Cube数据数据权限的机制。打开AnalysisServices,我们可以看到“程序集”和“角色”2个条目,他们就是和数据权限设置紧密相关的内容了。如下图所示:程序集:这是一个DLL类库,通过VisualStudio中新建一个Cla

6、ssLibrary(类库)来实现。主要作用是返回用户能够访问的Cube数据。角色:这是访问用户的角色。在这里面可以设置角色的用户,更重要的是设置Cube调用哪个程序集来获取用户能够访问的数据。我们先来看DataSecurity.dll程序集。这个程序集的代码其实很简单,不会超过30行。其主要流程如下:1.   读取访问用户的数据权限设置2.   根据数据权限设置,返回一个能够访问的Dimension数据集MDX字符串我们看看如下的主要代码(这个类库也就只需要这样一个CS文件):namespace

7、BI{  publicclassDataSecurity  {    publicstaticstringGetDimensionSet(stringdomain_account,stringdimension)    //方法的名字无所谓,参数比较重要       //domain_account:访问用户的帐号,后面我们会知道是从角色的设置中传入       //dimension:是获取哪个维度的数据。在角色里,需要对每一个维度进行设置    {//return"{[Location].[

8、City].&[Seattle]}",返回的结果示例      SqlConnectionconnection=newSqlConnection(connection_string);        connection.Open();        SqlCommandcommand=newSqlCommand("SP_Security_GetDimensionSetByLoginAccount",connection);        command.CommandType=System.D

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。