您好, 访客   登录/注册

基于PBAC的统一权限管理平台设计与实现

来源:用户上传      作者:郭甜莉 谢晶 龙海辉

  摘   要:为了解决高校院系信息化过程中出现的问题,文章基于RBAC的权限控制体系,提出了PBAC的设计理念,引入岗位和部门概念,给出了一整套权限管理解决方案。文章阐述了授权系统总体架构和详细设计,同时将授权功能细化,建设统一授权系统和分级授权系统。用户可以从两条路径获取应用系统的操作权限,通过为应用和岗位设置管理岗,实现了岗位和角色的再分级。
  关键词:角色;岗位;部门;统一权限管理;分级授权
  中图分类号:TP311.1 文献标志码:A 文章编号:1673-8454(2020)09-0040-04
  一、背景和需求
  为了进一步提高院系管理信息化程度,更好地实现“院为实体”的理念,为学校“双一流”建设提供有力支撑,上海交通大学网络信息中心为校内业务系统提供接入上海交通大学统一身份认证服务(以下简称“jAccount服务”),允许校内新开发业务系统通过jAccount进行身份认证。当前各个业务系统为了实现对登录用户的访问控制,各自开发独立的访问控制模块,这带来了以下两个问题:
  1.访问控制模块重复开发,安全性无法保障
  访问控制是业务系统的基本组成之一,且校内各业务系统用户访问权限需求存在共性,是可以作为公共逻辑模块使用的。而且由于各个开发团队经验差异,访问控制模块开发安全性没有保障。这不但增加了业务系统开发成本,也增加了校内安全小组监控风险。
  2.用户的访问权限分散管理,增加运维难度
  各个业务使用独立的访问控制模块,则无法共享一些用户的访问权限。而各个院系作为交大的组成部分,用户权限关联性是全校性的,重复配置增加了管理成本。同时,分散的访问权限管理,让在全校范围管理一个用户访问权限无法实现。
  随着院系信息化的继续推进,上述问题越发突出,已经成为校内信息化安全问题主要隐患。为了解决上述问题,加快推进院系信息化,设计和实现一个高性能、高可用的统一权限管理平台势在必行。
  二、设计与实现
  为了增强各个业务系统用户访问权限管理的安全性,提高用户权限管理效率和降低业务系统开发成本,本文提出了构建校内统一权限管理平台,为校内各个业务系统提供权限管理服务支持。
  1.关联系统
  jAccount统一认证服务。jAccount是上海交通大学网络信息中心开发的用户认证体系。通过就Account认证体系,可以在Web应用中实现单点登陆,同时也可以为校内第三方应用提供统一身份认证和单点登陆服务[1]。
  2.基于PBAC(policy-based access control)的权限管理架构
  高校业务系统常用的授权系统是基于角色的权限访问控制(Role-Based Access Control),简称RBAC。在RBAC中,权限与角色相关联,用户通过成为适当角色的成员而得到这些角色的权限。但是在实际应用中,仅仅对可以执行的操作进行限制是不够的,比如在校级系统/应用中,不同院系的用户,同一个操作可操作的对象是有不同的,而这种限制往往是基于用户所处的院系部门的不同而存在差异的。RBAC访问控制体系是无法满足此需求的。
  因此本方案采用了基于PBAC体系的权限架构,使用院系部门(以下简称部门)作为权限的策略,限制权限可以访问的数据范围。
  (1)术语定义
  ①权限(Rights)
  权限管理的最小单位,定义了业务系统/应用的最小需要管理的操作集合,比如删除信息操作,指定菜单查看权限等[2]。
  ②角色(Roles)
  权限的集合,是权限分配的最小单位[2]。比如系统管理员。角色是系统/应用隔离的,即本系统/应用的角色仅本系统内可用。
  ③岗位(Posts)
  跨系统/应用的角色,即允许多个系统/应用共用一个岗位配置。在我们的实践中,“岗位”和现实高校中实际的岗位概念通常也是对应的,比如,我们可以定义一个“岗位”为“教务员”或者“设备管理员”等[3]。目前岗位的常用应用场景为“一门式”流程平台中各类流程应用的审批人配置。
  ④部门(Department)
  权限管理采用部门限制策略,以实现权限可以操作的数据范围限定。部门是树形层级关系,限定数据最小范围依赖于部门树叶子节点。
  ⑤全局角色(GlobalRoles)[3]
  岗位往往是有部门限制的,本文将岗位、组织机构的二维映射关系称为全局角色。当组织机构为空时,二维的全局角色退化为一维的岗位,在实际情况中,表示为不属于任何组织机构的全局性岗位[3]。
  ⑥用户(User)
  业务系统的用户。通过给用户分配角色/岗位来实现用户的访问权限配置。
  (2)权限管理设计
  本文提出的权限管理框架采用角色、部门、用户三元组结构来管理权限。如图1所示,岗位和部门的关系称为全局角色,是二元组关系(岗位,部门);角色和全局角色的关系称为角色的全局角色,是三元组关系(角色,岗位,部门);我们通过给用户设置岗位,即设置(用户,岗位,部门)三元组关系,从而使用户拥有相关角色。
  3.系统架构和实现
  (1)系统总体架构和数据库设计
  Spring Boot开源框架可以简化Spring 开发框架的开发、配置、调试、部署工作,同时在项目内集成了大量易于使用且实用的基础框架[4-5]。授权系统后端基于Spring Boot和Spring Data JPA框架来实现,前端使用了Vue.js,采用前后端分离的开发模式。后端系统包括应用层、服务层、持久层和公共服务类等。应用层包括控制器和视图模型等内容,服务层包括服务接口和实现类,持久层包括Dao接口和实现类。除此之外,还有统一登录、权限检查、统一异常处理、日志服务、拦截器、工具包等公共类。授权系统代码保管到git倉库,可以多人同时开发系统,方便检查代码质量和控制项目版本。测试环境和生产环境采用Jenkins持续部署,简化发布流程。   授权系统选择SqlServer数据库。如图2所示,数据库表主要包括两类:一类是基础资源表,有用户表、组织机构表、岗位表、应用表、权限表、角色表等,主要是保存资源的基本信息;一类是关系表,保存资源之间的关系。在做删除操作的时候,要注意级联删除关系表的数据,以保持数据的一致性。
  (2)权限管理实现
  ①用户权限设置
  用户对业务系统的访问权限有两个来源,一是来源于角色,二是来源于岗位,如图3所示。从用户到权限有两条配置的路径,给用户直接设置角色更为简单,但是没法限制岗位和部门信息;给用户设置三元组关系的方法更为复杂,但是更为细致了限制了用户的全局角色,保障了权限不被过度使用。
  以院系信息化平台为例,管理员需要给每个学院的人事干事设置院系人事管理角色,不同学院的人事干事拥有的权限类似,但是可以访问的数据范围是不同的,每个人只能访问到自己学院的人事信息。基于这个需求,管理员选择通过第二条路径来给用户授权。具体实现的步骤如图4所示。第一步,建立人事干事角色,设置角色的权限,同时将角色与全局角色做映射;第二步,建立院系人事管理岗位,将岗位与部门做映射,即设置全局角色。在此基础之上,为用户设置岗位,指定可以管理的院系,即为用户设置全局角色。
  ②应用管理模块
  权限系统为每个信任应用提供应用权限管理功能,主要结构见图5。用户通过应用信息管理模块维护应用基本信息,权限管理模块维护应用的权限定义。权限按照功能可以分为操作型权限和菜单型权限。操作型权限定义应用的一个原子操作,常用于定义按钮权限。菜单型权限用于定义应用菜单,支持菜单路径,菜单顺序等属性设置。角色管理用于定义应用角色,定义的角色将通过分级授权模块授权给应用运维人员,以维护角色内用户的调整。全局角色映射管理模块用于管理岗位与角色的关联关系,允许指定岗位用户共享指定角色权限。
  ③岗位管理模块
  岗位在授权系统中主要有两个作用:一是通过岗位来管理应用系统的权限,实现角色的分级授权;二是通过设置岗位的管理关系,实现岗位的分级授权。除此之外,崗位在其他的业务系统中也起到非常重要的作用。因此在授权系统中设计了查询岗位详情的功能。如图6所示,授权系统从不同维度列出了和岗位相关联的业务内容。
  (3)授权功能细化
  前面章节提到,需要从整体上控制所有应用的授权,本文把负责这个过程的管理员称为一级管理员。如果把上述所有资源的维护和关系的建立都交给一级管理员负责,可以预见工作量之大和维护的困难。因此在实际构建系统时,将授权系统细化为两个应用:统一授权系统和分级授权系统。统一授权系统集中管理岗位、应用、组织机构等基础资源,同时可以设置岗位的管理岗、应用的管理岗。分级授权系统负责管理应用的权限和角色,为用户赋予角色、分配岗位,管理员通过指派管理岗来给用户授权,岗位和角色都可以再分级。本文将分级授权系统的管理员称为二级管理员。
  ①统一授权系统
  如图7所示,统一授权系统由五个功能模块组成。组织机构管理包括组织机构同步和修改信息等功能;岗位管理包括设置岗位和岗位分类、设置全局角色、设置管理岗等功能;应用管理包括应用系统同步、设置管理岗等功能;用户查询包括查询用户两个权限来源信息、查询用户已设置岗位和岗位详情等功能;日志查询则是查询管理员对基础资源的操作记录。
  ②分级授权系统
  分级授权系统设计了四个模块的功能,如图8所示。权限管理包括权限的新增、删除、修改、查询等操作;角色管理包括角色的新增、删除、修改、查询等操作;赋予角色包括为用户赋予角色和为角色分配用户等功能;指派岗位包括为用户指派岗位、为岗位分配用户和查询岗位详情等功能。其中赋予角色模块,为用户赋予角色功能适用于为一个用户同时赋予多个角色的场景;为角色分配用户则适用于为一个角色分配多个用户的场景。指派岗位的两个功能设计与此类似,不再赘述。
  ③分级授权实例
  二级管理员登录分级授权系统之后,系统会根据当前登陆用户拥有的岗位权限来判断可以管理的应用和可以指派的岗位。图9展示了二级管理员管理权限的获取过程:一级管理员为应用A设置管理岗1,同时设置管理岗1可以管理业务岗1和业务岗2。之后,一级管理员为二级管理员指派管理岗1,指定可以管理所有院系。那么,此二级管理员就可以在分级授权系统中管理应用A的权限和角色,可以对角色和可以管理的岗位实现再分级。
  三、结束语
  本文阐述的授权系统采用了基于PBAC体系的权限架构,使用院系部门作为权限的策略,限制权限可以访问的数据范围。同时将授权功能细化,建设统一授权系统和分级授权系统。其中前者集中管理岗位、应用等基础资源,后者管理应用的权限和角色,同时实现了岗位和角色的再分级。我们引入管理岗的概念,通过建设应用的管理岗和岗位的管理岗将两个系统紧密联系在一起。统一授权系统和分级授权系统联合使用,可以很好地解决应用系统权限管理问题。希望本文的内容,可以给其他高校和企业的权限管理带来一定的启发和帮助。
  参考文献:
  [1]白雪松,茅维华.身份与权限体系关键技术的总体设计与实践[J].中山大学学报(自然科学版),2009,48(S1):260-263.
  [2]Ramzi A. Haraty,Mirna Naous. Role-Based Access Control modeling and validation[C]. 2013 IEEE Symposium on Computers and Communications (ISCC).
  [3]白雪松,蒋磊宏,茅维华.全局角色在统一授权体系中的应用[J].实验技术与管理,2011,28(6):116-118,141.
  [4]王永和,张劲松,邓安明等.Spring Boot研究和应用[J].信息通信,2016(10):91-94.
  [5]Phillip Webb,Dave Syer, Josh Long et al. Spring Boot Reference Guide [DB/OL]. https://docs.spring.io/spring-boot/docs/2.1.3.RELEASE/reference/html/.
  (编辑:王晓明)
转载注明来源:https://www.xzbu.com/9/view-15282326.htm