[译]SQL Server分析服务的权限配置

简介:

本文介绍如何配置SSAS数据库和cube相关维度的安全设置。

相对数据引擎来说,在Management Studio中配置分析服务的安全设置基本没什么区别。但是也会有一些限制,比如SSAS的权限配置都是围绕角色进行的,其次,角色的成员必须是基于windows或者ad环境的,SQL Server用户(比如sa)是无法使用的。还有,权限是无法直接授予给windows或者ad用户或者组的,这些用户或者组必须填加到角色中才可以。另外,如果UAC处于打开的状态,那么比如要以"Run as Administrator"管理员身份的方式来运行BIDS才可以使配置生效。

 

翻译笔记:

此篇来自MSSQLTIPS,是我目前见过介绍的最全的一篇,一直以来就想写一些关于SSAS安全方面的东西,于是就决定直接拿过来翻译,原文地址:

http://www.mssqltips.com/sqlservertip/2776/configuring-permissions-for-sql-server-analysis-services/?utm_source=dailynewsletter&utm_medium=email&utm_content=headline&utm_campaign=20140421

在翻译的过程中,对于Cell Data部分由于没有具体使用过,所以这部分是基本是直译过来的。有兴趣的朋友可以一起来研究探讨下这部分的话题。

维度部分感觉原文所阐述的方式有点绕(最起码我是这么理解),所以这部分我根据自己的理解直接写,没有直译。

文中DWA的概念我也是头一次看到,Data warehouse administrator,搞BI的兄弟们终于也可以有一个跟DBA一样类似的称谓了。

 

 

 

 

在安装SQL Server的时候配置管理员权限:

配置SSAS安全的第一步是在安装SQL Server的时候。在安装SQL Server的过程当中,有些DBA或者DWA总是习惯一顿下一步。然而,在这个过程中的有些配置界面还是会影响到安装的结果的。其中的一个步骤就是配置SSAS的管理员账户,这个账户被配置好了之后,配置其它用户就不会显得那么麻烦。SSAS的管理员账户将拥有完整的权限,包括所有的SSAS数据库,多维数据集,维度等。

同样在安装完毕后,在SSMS里也可以填加其它的管理员账户。首先打开SSMS,连接到分析服务。

连接成功后,右键单击分析服务实例,选择属性。

如下图所示,点击"安全"选项,在右侧的界面就可以继续填加其它管理员账户。

 

数据库以及Cube层面的安全配置:

数据库和Cube层面的配置可以在BIDS和Management Studio中进行,当然在BIDS中的话,如果项目是在版本管理工具中管理的话,需要留意每次部署都可能会覆盖掉目标分析服务数据库上的权限配置,这种情况下可以借助部署向导(详细)来完成。所以这里建议在BIDS中进行配置,而且,无论在哪里配置,配置的方法是一样的。

右键分析服务数据库下的角色文件夹,选择新角色:

如下图所示,这里首先要配置角色的名称,以及这个角色的描述信息(可选)。然后就是三个复选框角色这个角色的权限:

Full Control: 顾名思义,就是完全控制。差不多跟上面配置的管理员权限对这个分析服务数据库的所有权限,也就是说这个角色的配置只局限在当前的分析服务数据库,而不是所有的其它此分析服务实例下的数据库。完全控制将赋予成员配置其它用户的权限以及处理和维护数据库,多维数据集以及维度的权限。

Process database: 这个权限允许成员处理分析服务数据库以及跟它关联的多维数据集和维度的信息。

Read definitions: 这个权限允许用户读取分析服务数据库的元数据信息。然后,赋予这个权限不代表就拥有了其下的多维数据集或者维度的元数据信息,这个层面的权限控制将在后面讨论。

通常来说,对于普通的浏览用户是不需要勾选这三条权限的。

切换到成员选项卡,管理员可以在这里填加用户或者组到这个角色中。请留意,SQL Server账户(比如sa)是无法填加到这里的。为了维护的方便,这里建议只填加组到角色中。

切换到数据源选项卡中,虽然看上去这里是配置数据源的访问权限,除非角色是要在数据挖掘结构中处理数据或者链接外部数据,这里不建议做单独的配置。

切换到多维数据集选项卡,这里将配置角色对于哪些多维数据集拥有访问权限。对于多维数据集的配置主要有以下三项:

Access:

    None: 指定角色成员没有访问此cube的权限。

    Read: 指定角色有读取多维数据集的权限,但是没有回写的权限。这是大多数配置所考虑的情况。

    Read/Write: 对应上一个选项,这个组的用户拥有回写权限。关于回写可以参考这篇文章

Local Cube/Drillthrough Access

    None: 不授予钻取或者本地cube创建的权限。

    Drill through: 授予角色的钻取权限。(对应Cube下的Action选显卡下的设置)

    Drill through and Local Cube: 授予钻取以及本地cube创建的权限。

Process:

    指定角色是否可以处理指定的多维数据集。

需要注意的是,如果Access权限没有赋予给角色,那么这个角色下的用户是无法在客户端工具中看到多维数据集的。

切换到单元数据,这里允许管理员设置角色的读取,选择性读取以及读写权限。当每一个部分前面的复选框被选中之后,下面的MDX表达式才可用。

导航到维度选项卡,这里允许管理员配置维度级别的权限。首先,在维度层次上有两个选项,读取或者读取读取写入。在维度选项卡的下一个选项卡是对维度数据的权限配置,比如,可以给销售部门配置若干的角色,每个角色只允许访问维度中对应的几个成员数据。同时你可以选择是通过勾选的方式来配置还是通过写MDX表达式的方式来配置。

针对维度设置的一个细节,默认对维度成员的数据做限制之后,向上汇总的数据默认还是全部的数据。比如配置一个销售角色组只能看到东区和南区的数字,但是向上汇总的时候能看到东南西北四个区的所有数据,这显然不是我们需要的结果。这个时候就需要勾选界面下方的"Visual Totals"复选框,这样向上汇总就只能看到配置好的东区和南区的数据(北区和西区的数字是不会被汇总的)。但有一点需要留意,就是勾选这个会降低性能。

 

结语:

同对组织数据的管理一样,SSAS的安全管理也同样重要。对于DBA或者DWA来说,通常我们需要快速准确地提供数据,同样也有责任提供数据在安全以及权限上的控制,所以SSAS允许我们做如下的权限设置:

  • 谁是数据库的管理员
  • 谁能处理数据库,多维数据集或者维度
  • 谁能浏览多维数据集和维度的元数据信息
  • 谁能读取SSAS数据库的:
    • 钻取
    • 维度以及维度成员数据

 

 

posted @ 2014-05-01 21:37  哥本哈士奇(aspnetx)  阅读(2206)  评论(2编辑  收藏  举报