企业信息化软件的权限设计一直是个非常棘手的工作,因为在企业信息化软件中,业务需求总是千变万化的,很难有一个统一的标准解决方案,既能够满足复杂的权限需求,又能够保证优秀的系统性能和用户体验。
在设计权限系统时,一般有两种做法,一种是大而全的“全能解决方案”,可以对每一条具体的内容进行权限分配,甚至可以对每一个字段进行权限划分;另外一种是“通用型解决方案”,即基于角色的访问控制(RBAC)设计的解决方案。
第一种大而全的“全能解决方案”问题在于使用了抽象化的概念描述权限,从而使用户很难理解和操作复杂烦琐,而且必然带来系统性能的下降,更重要的是一般情形下权限也用不着精确到字段级别。所以现在大部分系统都采用第二种基于角色的访问控制(RBAC)的“通用型解决方案”。
一、RBAC的基本原理
RBAC又叫基于角色的权限访问控制,英文全称是Role-Based Access Control。核心思想就是用户通过角色与权限进行关联。一个用户可以拥有多个角色,每一个角色又可以拥有多个权限。通过角色构造成“用户--角色--权限”的授权模型。在这种模型中,用户与角色之间,角色与权限之间,一般者是多对多的关系。其对应关系如下:
RBAC是基于不断实践之后形成的一个比较成熟的访问控制方案。具有以下优势:
相比于角色和用户之间的变化,角色和权限之间的变化要慢得多,从而减小了授权管理的复杂性,降低了管理开销;
而且能够灵活地支持应用系统的安全策略,并对应用系统的变化有很大的伸缩性;
易用和高效的授权方式 :权限分配直观、容易理解;用户在进行授权时只需对角色进行授权,之后将相应的角色分配给用户即可;
同时RBAC也有自身的一些缺陷:
复杂的权限校验 :在进行权限校验时需要不断的遍历和递规,造成了性能的影响;
对于数据权限的不够支持 :没有明确的数据权限模型,经过重构的数据权限模型和 RBAC 模型有一定的出入,而且在数据权限的校验上实现起来是非常的低效;
二、RBAC在SiteServer CMS中的实现
1、资源权限
SiteServer CMS作为一个知名的CMS内容管理系统,主要是用于网站建设和业务系统定制开发。它的的权限资源主要分成两大类:
通用资源权限
站点类资源权限
当然,作为一个企业级CMS内容管理系统,尤其是主打站群管理系统,权限仅仅精确到站点远远是不够的。
所以在具体到每个站点之后,SiteServer CMS系统又把权限资源细分为:
站点相关资源权限
栏目相关资源权限
从上图可以看到,SiteServer CMS系统的权限不仅仅可以精确到站点,还可以精确到某个站点下的具体一个或多个栏目,而且还精确到增、删、改、查等动作。比如是否有某个站点下某个栏目的添加内容的权限、修改内容的权限等。
2、角色
为了对许多拥有相似权限的用户进行分类管理,定义了角色的概念,以上所有的资源权限都可以分配给角色,角色和资源是多对多的关系。下图是SiteServer CMS系统角色列表管理界面:
在添加角色时,需要把相应的资源权限给分配好。如下图所示:
3、用户
这里的用户指的是SiteServer CMS后台管理员,也就是后台站点管理的具体操作者。SiteServer CMS管理员是不能直接拥有权限的,必须要分配一个角色,通过角色再关联权限。
在为具体某个管理员关联角色,只需要在对应的管理员后面点击“权限设置”就可以进入关联角色界面,如下图所示:
如果某个管理员拥有管理某个站点的所有权限,那么在关联角色时可以直接设置成为某个站点的站点管理员,如下图所示:
如果某个用户权限比较特殊,可以为他专门建一个角色来应用解决,因为如果用户也可以分配权限系统就会复杂很多。
建站咨询热线
135-1615-8738