大型集团用户BI系统权限设计方案
1.背景需求
某连锁酒店集团使用.NET开发了一套报表分析平台,随着管理及业务发展的需要,原平台开发报表的难度较大、易用性低和数据权限管理较弱,现管理层级上需增加大区总监角色及其它数据权限控制,原平台权限体系修改工作量巨大,为了增强报表分析平台的易维护性和易开发性,集团高层决定废弃原系统,引入Smartbi作为其报表分析平台。
其中,权限管理想要达到的效果是酒店经理、店长、大区总监、经营总监和集团总部人员等不同角色的人员看到不同的数据和报表。
2.权限设计
Smartbi 具有非常完善的安全管理体系,它可以控制用户操作功能权限、数据访问权限、资源访问权限。支持按用户、用户组、角色进行管理;支持多套应用系统共用同一套用户管理系统;支持多级用户管理体系。权限控制的粒度非常细,最小可控制到报表按钮,数据字段等权限。
不同人员查看不同的报表和数据对应的是Smartbi系统中的资源权限和数据权限控制,所以使用Smartbi进行开发和管理是非常容易实现的。
新建用户
新建角色
将角色授权给相应的用户,对应关系如下
2.1.资源权限
编辑分店角色,打开资源授权管理页面:
将F_分店报表授权给分店角色:
使用店长用户登录Smartbi系统后,店长会获取到分店角色的权限,效果如下,店长只能看到已授权的F_分店报表
类似的编辑大区总监角色和集团管理角色,授权后的效果如下:
大区总监角色,所能看到的报表比分店角色多
集团管理角色,所能看到的报表是最多的
2.2.数据权限
以其中一个报表为例,有以下5个参数:分店类型,区域,省份,城市,分店,参数之间相互关联,分店的值由前4个参数决定,城市的值由前3个参数决定,省份的值由前2个参数决定,区域的值由分店类型决定。
1.分店信息表Store_info
2.建立用户和分店的权限控制表User_store:
3.建立用户属性
系统自带函数CurrentUserName的作用是获取当前登录用户的名称
新建用户属性的作用是当用户登录系统后即可获取当前用户所能查看哪几家酒店数据
4.由权限控制表User_store和用户分店属性建立参数
a)分店类型参数由用户分店属性决定
b)区域参数由用户分店属性和分店类型参数决定
c)省份参数由用户分店属性、分店类型和区域参数决定
d)城市参数由用户分店属性、分店类型、区域和省份参数决定
e)分店参数由用户分店属性、分店类型、区域、省份和城市决定
3.案例实际效果
实际用户:分店角色用户4000人、总监角色用户200人和集团管理角色用户15人,只需简单操作授权即完成权限管理。除此之外,用户还可随意根据自身需求增加角色,如按部门管理,极大的增加了权限管理的自由度和可扩展性。
店长用户登录后的效果如下,只能查看到北京大成店的数据。
大区总监用户登录后的效果如下,只能查看到深圳宝安新安地铁站店,深圳东门湖贝地铁站店和深圳蛇口工业七路四海公园店这3个酒店的数据。
最终集团总部人员登录后的效果如下,可以查看6家已经授权的酒店数据。
4.Smartbi权限体系
Smartbi 具有完善的安全管理体系,它可以控制用户功能权限、数据访问权限、资源访问权限。支持按用户、用户组、角色进行管理;支持多套应用系统共用同一套用户管理系统;支持多级用户管理体系。权限分类如下。
操作权限主要是从更高层面对用户权限进行划分,决定被授权用户可以使用系统的哪些功能,可以执行哪些操作。如:管理员可以查看并设置数据源、用户等信息,普通用户只有查看报表的权限,IT人员有设计和开发报表的权限等等;其原理是在生成sql语句时添加响应的过滤条件,对于各类资源设置数据权限,应该是对其依赖的资源进行设置,比如组合分析如来源于业务主题,则应该对其业务主题进行数据权限设置。
资源权限是对平台具体资源的控制,可以限制被授权用户到具体的某一张报表或某一个图形资源,如:创建的某张报表只允许本部门的所有人查看,本部门以外的人不允许看到;或者某些报表只能被被领导查看,普通员工不允许查看等等。
在系统中,我们可以利用数据权限功能实现不同区域的用户登录 Smartbi 后只能看到其所属区域及子区域的数据,如:北京分行和广州分行只能看到本分行自己的数据,而总行可以看到所有分行的数据和总行数据等等。
相关联的,这些权限的授予对象为角色、用户及用户组,关系如下:
用户为最终的授权者,所有的权限最终会体现在用户身上;授权对象之间存在着一定关系,从用户角度分析看,一个用户可以有多个角色,可以同时属于多个用户组,并且一个用户组也可以有多个角色,如此角色和用户组的权限最终都将传递到用户上面。
软件支持:Smartbi