首页  ·  知识 ·  大数据
OLAP安全访问的层次化设计与实现
网友  E-Works  实践应用  编辑:德仔   图片来源:网络
联机分析处理(On-Line Analytical Processing,OLAP)的安全性,是指控制对分析服务器(Analysis Services)管理的数据进行访问。对于获许通过分析管理
 联机分析处理(On-Line Analytical Processing,OLAP)的安全性,是指控制对分析服务器(Analysis Services)管理的数据进行访问。对于获许通过分析管理人员(Analysis Manager)访问分析服务器数据和执行管理功能的管理员,可以对其加以限制。对于那些通过客户应用程序访问分析服务器上数据的最终用户,同样可以进行限制,可以指定哪些最终用户能访问数据,以及他们能执行哪些类型的操作。另外,可以控制最终用户在各种分析服务器数据级别上的访问,包括多维数据集、维度和多维数据集单元。文中以网上评教及OLAP分析系统为例,对用户可进行的OLAP操作作了分层、分级别的设定。

1 层次化安全体系的实现技术

    本系统OLAP安全性的级别与提供的OLAP操作和操作人员,如表1所示。一般情况下,可通过分析管理人员设置数据库角色或多维数据集角色,直接实现用户访问数据视图权限的分层分级限制,但是在本系统中,分析客户端的登录用户并不等同与角色所对应的用户,而出于对Web服务器安全性的考虑,又不可能允许一般管理用户直接在浏览器端对服务器进行操作。因此,方法缺少灵活性,尤其是无法在客户端进行增加或删除管理用户,必须要由系统管理员在分析服务器上进行操作。利用OWC组件,通过Web编程,建立客户端浏览器登录用户与OLAP服务器角色之间的映射关系,直接在浏览器中为管理用户提供角色权限指定的界面及操作。具体有如下5个步骤:(1)根据用户的分析级别,创建分析服务器上的用户帐号和指定相应的角色。分析服务器根据Windows用户帐户实现多维数据集的安全角色,在服务器上创建1个或多个本地Windows NT用户帐户,并将它们分配给1个SQL server数据库角色,然后,将该数据库角色分配给多维数据集角色,并为其分配特定的多维数据集。(2) 将客户分析端登录的用户根据分析级别进行归组,建立用户到用户组的映射表。(3)建立客户端用户组与分析服务器用户之间的映射表,实现浏览器端到服务器端的用户转换。(4)客户端浏览器登录用户与OLAP服务器角色之间的绑定。由于多维数据集角色本质上继承了Windows NT用户ID与密码凭据,将上面得到的用户ID与密码凭据添加到OLAP数据源连接字符串中,就实现了客户端浏览器登录用户与OLAP服务器角色之间的绑定。1个OLAP数据源可能包含多个多维数据集,通过将OWC组件中的PivotTable控件的XML标记值设置为有效的多维数据集名称,可以连接到特定的多维数据集,给该多维数据集分配的角色必须对应于OLAP数据源连接字符申中的凭据。以表1中的维度级别为例,人事处的教师管理人员需要对各教师的评教情况进行分析,因此,必须保证最后绑定的角色对以教师职称、教龄等为维度的多维数据集具有访问权限,同时将OWC的PivotTable控件的XML标记值设置为相应的多维数据集名称,相关代码如下:

    Dim strOLAPConn As String=_
    Configuration Settings.AppSettings(“OLAPConnectionString”)
    objPT.ConnectionString=strOLAPConn
    objPT.DataMember=“teacher”
    //指定要访问的多维数据集


表1 OLAP安全性级别与提供的OLAP操作和操作人员


    (5)通过创建定制分组屏蔽其他数据访同,通常当报表按照college字段来对评教各指标得分分组时,院系依照各成员分组。如果在定制的报表中限制用户只能访问与自己相关的数据,可以使用OWC的V10控件中的定制分组功能,其实现方法是,通过调用一个JavaScript函数,使用Use Custom Grouping Web方法,输入参数为当前加载的项目的XMLData,此Web方法将加载一个PivotTable控件并调用UseCustomGroupField方法定义定制分组。

    现以某院系教学管理人员的分析为例在这里,只允许访问本院系和其他院系平均综合指标的数据,即添加一个到两个成员(“mycollege”,“othexconege”)的定制分组以涵盖全部的院系成员。调用Add Custom Group Member方法以添加上述的定制成员,当Web页面上的函数执行时,ChartSpace控件可以自动将定制分组功能反映到条形图表中——这也是使用OWC的优点,即将其他院系作为一个成员本院系作为一个成员,相关代码如下:

    Public Function Usecustomgroup(ByVal_
    strReportXMLData As Strlng,collegename as string) As String
    Dim m_xml As String
    Dim objPT As PivotTableClass=New PiovtTableClass
    Dim objPTView As PiovtView
    Dim fscollege As PivotFieldset
    Dim fscollegegroup AsPivotFleld
Try
    objPT.XMLData=strReportXMLData
    objPTView=objPT.ActiveView\设置学院变量
    fsTime=objPTView.Fleldsets(“college”)\将组‘groupl’添加到学院字段中
    fscollege.AddCustomGroupField(“CustomGorupl”,“CustomGorupl”,“college”)
    fscollegegroup.AddCustomGroupMember(fscollege.Member.Name,_
    New Object() {“collegeanme”},{“mycollege”}
    fscollegegroup.AddCustomGorupMember(fscollege.Member.Name,_
    New Object() {“collegel”,…,“collegem”},“othercollege”)\不允许用户展开‘学院’的组成员
    fscollegegroup.Expanded=False
    m_xml=objPT.XMLData
    objPT=Nothing
    … 
    End Function

2 OWC组件的安全漏洞和预防措施

    OWC的安全漏洞主要包括以下3方面:(1)能够让黑客读取受害用户的本地文件。(2)即使脚本功能被禁用的情况下也能运行脚本,同时还能让黑客看到剪帖板的内容。(3)在处理.xls和.xla文件组合时存在问题,其饰read比et组件的Host()函数中存在1个漏洞可用以写任意文件,通过嵌入包含=host().saveas(“arbitraryfilename”)形式的代码到Spreadsheet对象,远程攻击者可以利用这个漏洞在目标用户系统中建立任意文件的,而上述3方面的恶意攻击,都要求攻击者必须直接登录服务器。

    由于目前还无法得到微软关于这几个安全漏洞的补丁,暂时可以从以下两方面来进行防范:(1)在Web服务器端加强Web服务的身份认证,拒绝攻击者直接登录服务器,使恶意脚本无法在浏览器端因为运行OWC组件而读取分析用户的本地文件,防止攻击者在分析用户的系统中建立任意文件。(2) 由于OWC组件的安全漏洞主要集中在Spreadsheet组件的Host(),Copytext,List等函数中,因此在分析页面中,尽量避免运行该组件,将Pivottable中的分析报表通过分析日志文件动态生成分析表,绑定到其他数据库服务器控件,如Datagrid,Datalist等,实现分析报表的显示和输出,从而降低其组件运行带来的安全威胁。

3 结束语

    本文以网上评教及OLAP分析系统为例,通过建立浏览器端到OLAP服务器端的用户映射关系,提出了基于Web的OLAP安全访问的层次化设计方案,并结合运用OWC组件,实现了各分析用户按其功能级别与相应的多维数据集的捆绑。通过采用上述安全性措施,在保证分析服务器及评教数据源安全性的前提下,可以更加灵活地对用户指派角色,同时,对OWC组件的安全漏洞采取了一定的预防措施,减少了系统的安全隐患,从而达到提高基于Web的OLAP访问安全性的目的。
 
本文作者:网友 来源:E-Works
CIO之家 www.ciozj.com 微信公众号:imciow
   
免责声明:本站转载此文章旨在分享信息,不代表对其内容的完全认同。文章来源已尽可能注明,若涉及版权问题,请及时与我们联系,我们将积极配合处理。同时,我们无法对文章内容的真实性、准确性及完整性进行完全保证,对于因文章内容而产生的任何后果,本账号不承担法律责任。转载仅出于传播目的,读者应自行对内容进行核实与判断。请谨慎参考文章信息,一切责任由读者自行承担。
延伸阅读