Mondrian利用在Schema中的设置角色来实现行级权限控制数据
前言:之前有一篇專門描述Saiku如何利用schema中的角色控制來達到行級權限控制操作。
https://blog.csdn.net/Joe192/article/details/100043346
在這篇主要更深入的描述Mondrian中是如何利用schema中的角色結合saiku來實現行級權限操作。
首先得了解schema行級權限,角色涉及的標簽屬性
Role--》角色標簽
SchemaGrant--》schema授權標簽?SchemaGrant access: all, none, and all_dimensions
CubeGrant--》cube授權標簽??cube grant access: all or none
HierarchyGrant--》Hierarchy授權標簽?access: all, none, and custom
MemberGrant--》Member授權標簽??access: all and none.
DimensionGrant--》Dimension標簽授權?access: all or none
<Schema metamodelVersion='4.0' name='t_tests' quoteSql='false'><PhysicalSchema><Table name='t_tests'/></PhysicalSchema><Cube caption='t_tests' name='t_tests'><Dimensions><Dimension caption='t_tests' key='id' name='t_tests' table='t_tests'><Attributes><Attribute caption='area' datatype='String' hasHierarchy='true' keyColumn='area' name='area' table='t_tests' visible='true'/><Attribute caption='country' datatype='String' hasHierarchy='true' keyColumn='country' name='country' table='t_tests' visible='true'/><Attribute caption='province' datatype='String' hasHierarchy='true' keyColumn='province' name='province' table='t_tests' visible='true'/><Attribute caption='city' datatype='String' hasHierarchy='true' keyColumn='city' name='city' table='t_tests' visible='true'/><Attribute caption='street' datatype='String' hasHierarchy='true' keyColumn='street' name='street' table='t_tests' visible='true'/><Attribute caption='name' datatype='String' hasHierarchy='true' keyColumn='name' name='name' table='t_tests' visible='true'/><Attribute caption='id' datatype='String' hasHierarchy='true' keyColumn='id' name='id' table='t_tests' visible='false'/></Attributes><!--<Hierarchies><Hierarchy name='ts' allMemberName='All t_test'><Level attribute='country'/><Level attribute='province'/><Level attribute='city'/><Level attribute='street'/></Hierarchy></Hierarchies>--></Dimension></Dimensions><MeasureGroups><MeasureGroup name='t_tests' table='t_tests'><DimensionLinks><FactLink dimension='t_tests'/></DimensionLinks><Measures><Measure aggregator='sum' caption='age' column='age' datatype='Numeric' formatString='#,###.000' name='age' table='t_tests'/></Measures></MeasureGroup></MeasureGroups></Cube><Role name='ROLE_SA'><SchemaGrant access='none'><CubeGrant cube='t_tests' access='all'><!--<HierarchyGrant hierarchy='[ts]' access='custom' topLevel='[ts].[country]' bottomLevel="[ts].[city]"><MemberGrant member='[t_tests].[ts].[中國].[陜西省]' access='all'/><MemberGrant member='[ts].[country].[中國].[陜西省].[西安市]' access='all'/><MemberGrant member='[ts].[country].[中國].[廣東省].[廣州市]' access='all'/><MemberGrant member='[ts].[country].[美國].[加州].[加州市]' access='all'/></HierarchyGrant>--><!--<DimensionGrant dimension="[t_tests].[country].[中國]" access="all"/>--><!--<HierarchyGrant hierarchy='[Measures]' access='custom'><MemberGrant member='[Measures].[age]' access='none'/></HierarchyGrant>--><HierarchyGrant hierarchy='[t_tests].[city]' access='custom'><MemberGrant member='[t_tests].[city].[西安市]' access='all'/><MemberGrant member='[t_tests].[city].[廣州市]' access='all'/></HierarchyGrant></CubeGrant></SchemaGrant></Role></Schema>A、通過行級權限控制維度值
<HierarchyGrant hierarchy='[ts]' access='custom' topLevel='[ts].[country]' bottomLevel="[ts].[city]">
這行代碼,hierarchy='[ts]'指層級name='ts'的,access='custom'自定義,topLevel='[ts].[country]' bottomLevel="[ts].[city]"
范圍訪問的維度。
使用層級授權必須創建層級才能達到行級權限控制,否則不起作用。
B、如果不想使用層級卻想達到和層級一樣控制維度咋辦了,只要通過兩步設置就能搞定。
第一步:Attribute的hasHierarchy屬性必須為true
第二步:直接使用維表的name,t_tests.city,city為Attribute的name屬性,范圍屬性topLeve和bottomLevel就不起作用了
<HierarchyGrant hierarchy='[t_tests].[city]' access='custom'>
 ? ? ? ? ? <MemberGrant member='[t_tests].[city].[西安市]' access='all'/>
 ? ? ? ? ?<MemberGrant member='[t_tests].[city].[廣州市]' access='all'/>
 ?</HierarchyGrant>
C、通過行級權限控制度量,如何實現
<HierarchyGrant hierarchy='[Measures]' access='custom'>
 ? ? ? ? ? <MemberGrant member='[Measures].[age]' access='none'/>
 </HierarchyGrant>
這塊直接就不顯該度量。
D、如果控制整個維度的行級權限,直接使用DimensionGrant
<DimensionGrant dimension="[t_tests]" access="all"/>
其中dimension="[t_tests]",t_tests就是維表的name屬性。
總結
以上是生活随笔為你收集整理的Mondrian利用在Schema中的设置角色来实现行级权限控制数据的全部內容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: OWASP TOP 10 2017版本
 - 下一篇: GDAL下载