设为首页 收藏本站
查看: 548|回复: 0

[经验分享] 《Expert Cube Development with Microsoft SQL Server 2008 Analysis Services》读书笔记第九

[复制链接]

尚未签到

发表于 2015-6-29 17:58:45 | 显示全部楼层 |阅读模式
  SQL Server 2008中SQL应用系列及BI学习笔记系列--目录索引
  在上文中,我们简单回顾了Analysis Services(以下简称AS,邀月注)的角色和windows用户组等有关管理安全的基础知识,本文将继续关注数据安全(Data Security)。
  
  二、Analysis Services安全功能(续一)
  5、数据安全(Data Security)
  可以实现三种不同类型的数据安全性:我们可以授予角色以访问整个cube的成员的权限;我们可以授予对一个Cube数据的访问,可以拒绝访问单个Cell(Cell安全),或者维度结构层次上的个别成员(Dimension安全)。
  (1)对Cube授予读权限
  用户访问一个Cube中的任何数据之前,他们必须是一个对该Cube具有读取权限的角色成员。通过如下界面授予读权限。
http://onexin.iyunv.com/source/plugin/onexin_bigdata/https://public.sn2.livefilestore.com/y1pRMK60eTKt_XGpjCT8EX16qeMENxbVahnOXeF1IAqPKL74cQL3aMCMfFiySEn-Xyb6qplKF4kndt6EOsIpiwerg/2012-5-3%2010-00-40.png?psid=1
  如果设置了Cube上的写回(WriteBack),我们还可以控制角色是否可以写回Cube的授予读/写权限。最后,如果我们想要角色成员,能够运行钻取查询和创建本地Cube,我们可以授予权限“Local Cube/Drillthrough Access”。
http://onexin.iyunv.com/source/plugin/onexin_bigdata/https://public.sn2.livefilestore.com/y1pxuRwVMDP1FpZShWZsIv8xao937ZtSVk0d8eNiQNh33_4EuLWWDwfLdEKuCgcJlq_gGaDPvVNY-ekJzR7EyZUnA/2012-5-3%2010-05-59.png?psid=1
  (2)Cell安全
  Cell的安全性配置使用三个MDX表达式返回布尔值。这三个表达式,让我们定义哪些Cube的Cell可以被读或写回。Cube中的每一个Cell被评估,如果返回true,那么我们可以读取或写入cell,如果返回false,则不。
  我们看一个例子,如果,我们在Role编辑界面,检查Cell数据选项卡是否启用“read”权限,输入如下表达式:
  [Sales Territory].[Sales Territory Country].CurrentMember IS [Sales Territory].[Sales Territory Country].&[Canada]
http://onexin.iyunv.com/source/plugin/onexin_bigdata/https://public.sn2.livefilestore.com/y1p22qnEJh7miqylyQjHOXFj5o8o6sF-o5qo-aRklnBaM2YM-ME1iPyqQIEgXmwiS4jEHtl_4ycdDLcQZeEcvgeZA/2012-5-3%2010-16-41.png?psid=1
  这样,用户将只能看到Sales Territory维度中Sales Territory Country层次的当前成员是Canada的Cell。在该角色下,我们查询Cube,如下:
http://onexin.iyunv.com/source/plugin/onexin_bigdata/https://public.sn2.livefilestore.com/y1pRMK60eTKt_UpxJaVrjJVdxJ4jIup4NXqSrYRtN4KLpGqk64wXXsHpnPfVpS-lDrl_s0sZWhLGZNU_K3gN_yO8A/2012-5-3%2012-47-56.png?psid=1
  这个结果表明:
A:即便角色只能访问加拿大的数据,但还是看到了其他国家,只是不能访问的数据用Null代替,当然也可以用#N/A。这可以在"Secured Cell Value"中设置。
  
  B:授予访问一个国家也授予访问该该国的所有地区。这是因为国家和地区之间有一个定义的属性关系,所以,当选择一个国家的CurrentMember在查询时因为地区的变化引起地区所在的国家的变化。授予属性的成员访问权限,将会同时授予与该属性有直接或间接的关系的低颗粒度属性,但不会发生在更高的颗粒度属性,所以North American成员和总计(这是在层次结构中的所有成员),不能访问。
  最后这一点引发了另一个问题:如果该角色的用户从Sales Territory没有选择任何选项而查询Cube会发生什么?
我们看下图:
http://onexin.iyunv.com/source/plugin/onexin_bigdata/https://public.sn2.livefilestore.com/y1pT8_Na3snnPHTy51RMZ_FJhkH7FuVXVBrcd7iWLyMYXnVpbKmAyERdo6B89n0PL1jjc0kxeBS2TvYtXlrAIbBgg/2012-5-3%2015-53-40.png?psid=1
  这是因为:默认成员是All Members,无权限访问,而选择"Canada"时可以读取。
http://onexin.iyunv.com/source/plugin/onexin_bigdata/https://public.sn2.livefilestore.com/y1pT8_Na3snnPH4pn4eoO4UsL5ecIucpoBo27eq0plbLYHcheoM2Khn_kkm8nUUQliBpJhqLMFQqZUAh2uYrIiYQg/2012-5-3%2015-56-27.png?psid=1

  Cell级别的安全控制也可用于度量。例如,读权限使用这个表达式:
  ([Measures].CurrentMember IS [Measures].[Sales Amount])
OR
([Measures].CurrentMember IS [Measures].[Tax Amount])
  该条件过滤后的效果如下:
http://onexin.iyunv.com/source/plugin/onexin_bigdata/https://public.sn2.livefilestore.com/y1pei6L9QAXi-xRAH7Pnbxvhv_1oP5YwlQNs7Vc7iakpPE3IzKnkzR_U2pfz7XFsd6JrPsLf2qKESrIvBOU8LNP3Q/2012-5-3%2015-59-50.png?psid=1
  如果我们希望进一步,用户能够看到所有的国家的Sales Amount,但Total Product Cost仅限于加拿大,我们可以使用:
  [Measures].CurrentMember IS [Measures].[Sales Amount]
OR (
[Measures].CurrentMember IS [Measures].[Total Product Cost]
AND
[Sales Territory].[Sales Territory Country].CurrentMember
IS [Sales Territory].[Sales Territory Country].&[Canada]
) OR
[Measures].CurrentMember IS [Measures].[Gross Profit]
http://onexin.iyunv.com/source/plugin/onexin_bigdata/https://public.sn2.livefilestore.com/y1pzdFF2uN1n9_5pIrH4wJ-FDH6gNDy0aMIZXye71VVuGzip4X2YisGxVAUyxB-L6gAD8XYLcyiHekT_TKExTsl7g/2012-5-3%2018-47-41.png?psid=1
  注意因为Gross Profit=Sales Amount-Total Product Cost这个计算关系,所以实际上这三个字段都是可见的。
  http://onexin.iyunv.com/source/plugin/onexin_bigdata/https://public.sn2.livefilestore.com/y1p7bQZvMdfKOYIO40oYyT9dg7vBrdaiw9SzZ9VHwERsLUpW30CB-iB6Y-dOFFoGJGblDL84WzCZU4cnbmgYJiCTw/2012-5-3%2018-40-16.png?psid=1
  那么如何真正控制,让Gross Profit的读取权限完全符合我们的预期呢?关键的一步在于上述的表达式不应写在"Read Permissions",而应该写在"Read-Contigent Permissions"中
http://onexin.iyunv.com/source/plugin/onexin_bigdata/https://public.sn2.livefilestore.com/y1p7bQZvMdfKOYn2D-wtlYygsWBuQ5A1dH1sV2NNEFrb3Hwc5FxdPBLJEIwex0S9VHEZcUUnw909EB185JzX9igRA/2012-5-3%2018-41-36.png?psid=1
http://onexin.iyunv.com/source/plugin/onexin_bigdata/https://public.sn2.livefilestore.com/y1pzdFF2uN1n98BAC_OM_nvLfpyCq_FAhQH4keuBCJ2BLWVtiWqmrUaOW60HgquSCKlKDT8tIS_99XUtdX8OMFGKQ/2012-5-3%2018-01-18.png?psid=1
  
  本文主要学习Cube的读取和Cell安全,下节将继续了解数据安全(Data Security)中的维度安全和如何应用安全到度量,欢迎关注。
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-81693-1-1.html 上篇帖子: SQL server的一道入门面试题背后的思考 下篇帖子: sql server 2008收缩数据库日志
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表