BI数据级权限解决方案--.docBI数据级权限解决方案>>
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的组织结构分为部门、区域;部门和区域是相互交叉的;某个部门的总部人员能够看到全国所有区域的数据;而区域员工则只能看到该区域的数据了。用户能够查看的数据权限,需要在网页上可以进行配置。这就是客户对数据级权限的要求。
针对这些需求,数据级权限解决方案采用如下架构:
报表查看流程说明:
用户查看报表
报表从Cube中获取数据
Cube从数据库中(记录用户的数据权限配置)获得访问用户的权限配置,根据配置返回相应的数据
报表显示结果数据
数据权限配置流程说明:
用户访问数据权限配置页面(由于基于Sharepoint,因此是内嵌数据权限DX字符串我们看看如下的主要代码(这个类库也就只需要这样一个CS文件):
namespace BI
{
public class DataSecurity
{
public static string GetDimensionSet(string ount, string dimension)
// 方法的名字无所谓,参数比较重要
// ount:访问用户的帐号,后面我们会知道是从角色的设置中传入
// dimension:是获取哪个维度的数据。在角色里,需要对每一个维度进行设置
{
//return {[Location].[City].[Seattle]}, 返回的结果示例
SqlConnection connection = neand mand = neand(ount, connection);
= ;
SqlPara
BI数据级权限解决方案-- 来自淘豆网m.daumloan.com转载请标明出处.