雷诺阅读
扫描关注天津网站建设微信公众账号

扫一扫关注微信

从SiteServer CMS管理员权限浅析权限系统的设计思路

雷诺网络2018-01-22 09:13:56雷诺干货

企业信息化软件的权限设计一直是个非常棘手的工作,因为在企业信息化软件中,业务需求总是千变万化的,很难有一个统一的标准解决方案,既能够满足复杂的权限需求,又能够保证优秀的系统性能和用户体验。

在设计权限系统时,一般有两种做法,一种是大而全的“全能解决方案”,可以对每一条具体的内容进行权限分配,甚至可以对每一个字段进行权限划分;另外一种是“通用型解决方案”,即基于角色的访问控制(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管理员是不能直接拥有权限的,必须要分配一个角色,通过角色再关联权限。

在为具体某个管理员关联角色,只需要在对应的管理员后面点击“权限设置”就可以进入关联角色界面,如下图所示:

如果某个管理员拥有管理某个站点的所有权限,那么在关联角色时可以直接设置成为某个站点的站点管理员,如下图所示:

如果某个用户权限比较特殊,可以为他专门建一个角色来应用解决,因为如果用户也可以分配权限系统就会复杂很多。

文章关键词