问题:
在有些场景下,数据中心会分为不同的服务器场:数据库场和应用程序场。服务器场间有严格的防火墙控制,其中数据库场只能建立从应用程序场的防火墙穿越,也就是说不允许任何客户端直接连接到防火墙。
这种策略对于数据库引擎来说没什么问题,但是对于分析服务来说就被完全限制住了,通常我们都是通过Excel直接连接分析服务数据库的,并且通过分析服务的角色来控制对数据的访问权限。那么是否有什么方法可以解决这个问题呢?
解决思路:
我们知道SSAS是可以通过http的方式来访问的,那么我们只要让这个站点接受windows方式的身份验证就可以简介的实现excel客户端到分析服务数据库的连接。
实验环境:
Windows 8.1 + IIS
SQL Server 2012
Adveuture Works微软官方示例数据库,这里用到的是分析服务数据库。
实验步骤:
首先,确保IIS已经被填加,然后windows身份模式已经被安装。
分别在操作系统下建立测试账户aaa和bbb依次填加到这两个组中。
在分析服务数据库下,建立两个角色, Team1和Team2。
找到维度数据的设置,分别指定第一个角色拥有Department维度下的前两个成员,另一个角色拥有这个维度下的后三个成员。
填加完毕,确认两个组都被填加到分析服务数据库中。
接下来测试一下角色权限控制的结果,用管理员身份登录,可以看到Department下的所有维度成员。
用aaa账户登录Management Studio(提示,按住Shift右键单击),可以看到其隶属的Team1角色只能看到前两个成员。
打开IIS,配置站点,打开Windows身份验证模式。
浏览数据,可以看到返回的xml结果页面。
用这个URL地址连接分析服务,用aaa账户连接,可以看到通过http的方式识别出了当前客户端的账户。
并且里面的数据接受了分析服务数据库的权限控制。
接下来在Excel中实验下,右键单击Excel.exe,选择使用指定的账户运行。
数据账户aaa的信息,使Excel以这个身份运行。
在Excel下新建透视表。
选择连接到分析服务数据库。
在服务器名称下输入URL。
选择连接到Adventure Works多维数据集。在微软的这个示例数据库下,这个是最全的多维数据集,其它能看到的数据集实际上都是出自这个数据集的一个透视。
在Excel的透视表下,拖拽Department维度,可以看到已经接受了分析服务的角色权限控制。
保存这个Excel文件,再用管理员帐号打开这个文件,刷新透视表,可以看到根据分析服务数据库的权限设定,返回了Department下的全部维度成员数据。
结论:
通过http的方式连接到分析服务数据库,可以看到通过站点的windows身份验证模式,是可以接受分析服务数据库的角色权限控制的。通过这种方法,就可以通过应用程序服务器间接的实现对于服务器场中的分析服务数据库的访问,并且跟直接连接到分析服务数据库的效果是一样的。