摘要:针对电网业务中的不断增加的权限需求,结合现有基于RBAC的系统权限控制机制,研究并实现了一种通用的业务授权机制,提供统一的业务对象权限配置界面及接口,支持列表和树结构的业务对象源数据,结合已有对页面及按钮的权限控制策略,能够满足现有电网业务中各类权限需求。该类机制具有较强的通用性,只要设置好相应的业务对象源数据,能适用于其他WEB系统中的权限需求。
关键词:RBAC;角色;权限控制;业务对象;通用性;
引言
随着电网业务及信息化的不断发展,越来越多B/S模式系统开发并部署于III/IV区,该类系统不需要客户端安装任何软件,通过浏览器即可使用系统,简单方便。与此同时,系统对信息安全提出了更高的要求,因此需要一系列安全手段来保证系统信息的机密性、可靠性和完整性[1],比如信息加密、数字签名、系统权限控制等。而其中最基本的权限控制则需要根据不同人员授权使用不同系统功能,尤其电网系统涉及敏感业务,有些功能只能部门高级别权限人员才能操作使用,因此需要提供完善的权限控制机制。而该类系统需求变化频繁,如果对权限的控制每次都要开发对应的授权功能,且要改动已有业务代码,费时费力,大大降低开发效率。因此需要研究并开发一套通用的权限控制机制,当用户系统权限需求变更后,通过统一权限管理界面配置后,只需修改少量业务代码,即可完成用户的业务相关权限控制。
1 权限管理现状
目前比较成熟的权限管理系统大都是基于角色的访问控制,即RBAC(Role-based Access Control)[2-4],该机制主要包含角色,用户和资源对象三大部分。其中资源对象可理解为需要权限控制的对象,比如系统功能菜单,按钮等,这类资源的访问控制与角色关联,特定角色访问特定资源,而用户可以分配角色,从而使用户具备了访问对应资源的权限。一个用户可以拥有多个角色,同样一个角色可以分配给多个用户。基于该思想,已经开发实现了基本的权限管理功能,能够对页面菜单以及页面内的按钮进行控制。
已有的权限系统对于菜单及按钮的权限已具备了很好的实现,而对于涉及业务的访问控制,已有的权限管理系统无法很好满足,只能针对特定的需求开发特定的权限控制模块,比如接线图浏览,不同区局用户可查看的图形不同,需要对图形进行授权;业务中多次用到的子控制区也是如此,根据登陆人员身份不同,显示不同的子控制区;还有CIM树权限控制等,诸如此类需求,若每类需求都开发对应功能模块,增加开发人员工作量,影响项目进度。
2 通用业务授权的分析与设计
在已有权限管理系统基础上,结合业务实际需求,设计一个通用的业务授权系统,满足不同结构类型(列表,树,目录文件)业务对象数据相关权限需求,提供统一授权界面及权限数据接口,能够在少量修改业务代码情况下实现权限控制,提高效率。
2.1 数据库表设计
根据功能需求,设计需要授权的业务对象类型表、业务对象数据源表、记录授权结果的业务对象授权表三个表,具体如下:
(1)业务对象类型表
用于记录要授权的对象类型描述及结构,如子控制区域、SVG图形,供电所、变电站、责任区等,结构如图1所示。
图1 业务对象类型表
TYPE,业务对象类型代码,如2,5,6,7,10;
NAME,业务对象名称,与代码对应,如SVG图,变电站,责任区,CIM树等;
FLAG,当对象全部未授权时,默认有访问权限设置1,默认无访问权限设置为0;
ISTREE,是否为树形结构,1:是,0:否;
SELECT_MODE,树节点选择方式,只针对树形结构起作用,1:子节点选中时父节点自动选中;父节点选中时子节点不自动选中;2:父节点选中时子节点自动全选中,子节点选中时,父节点不自动选中; 3:父子级联选中,父节点选中自动选中子节点,子节点选中也自动选中父节点;4:多选,父子无关联;5:单选;
REMARK,备注信息;
(2)业务对象数据源表
用于存放需要进行授权的各类型业务对象数据源,如子控制区域数据,各类变电站,责任区等,结构如图2所示。
图2 业务对象数据源表
TYPE,业务对象类型代码,如2,5,6,7,10;
CODE,业务对象代码,如大塘站.svg,AR-1;
NAME,业务对象名称,应用名称,如大塘站.svg,顺德;
UPPER_CODE,父节点业务对象代码,记录父子节点关系,依此形成树;
APP_LEVEL, 树形结构层级,非树结构默认为0,树结构时记录树每一层的数据,如1-子控制区,2-供电所;
(3)业务对象授权结果表
用于记录角色与控制对象授权结果,表结构如图3所示。
图3 业务对象授权结果表
ROLE_CODE,角色代码
APP_CODE,业务对象代码,如大塘站.svg,AR-1
APP_NAME,业务对象名称,应用名称,如大塘站.svg,顺德
APP_TYPE,业务对象类型代码,如10,2,5,6,7
APP_LEVEL,树形结构层级,非树结构默认为0,树结构时记录树每一层的数据,如1-子控制区,2-供电所
另外还有系统原有的角色表,用户表,角色用户关系表。
2.2 业务流程
要实现对业务对象的权限控制,需要三个步骤:数据准备、界面授权、业务控制。
1)数据准备
系统初始化时,根据实际应用,初始化业务对象类型表数据;基于业务对象类型,将各类型对应的业务对象数据插入到业务对象数据源表中,可手工插入,或者编写sql(从现有表中抽取数据)自动执行插入,因为涉及到源数据更新问题,推荐sql方式插入。
2)界面授权
数据设置完成后,到界面进行授权。根据角色,选择业务对象类型,自动显示对应源数据,根据业务需要,从源数据中选择可访问的内容进行授权。
3)业务应用
各个业务模块实现中,对于有权限要求的业务对象数据调用统一权限访问接口,获取当前登陆人员对应权限,控制数据显示,如对于子控制区,只显示用户可访问的子控制区列表,或者判断是否有权限操作某子控制区。
界面中权限处理流程如图4所示。
图4 界面权限处理流程
2系统实现
3.1实现技术
通用业务授权系统部署在Tomcat服务器,实现使用eclipse开发工具,基于Spring+iBatis+DWR+Ext整合框架进行开发,数据库采用Oracle。
Spring是一个广为流行的开源的Java应用程序开发框架,是为解决企业应用程序开发复杂性而创建的轻量级、一站式解决方案。通过依赖注入模式,将依赖关系从编码中脱离出来,可以用简单的组件组装复杂的应用,同时,大大降低了组件之间的耦合,极大改善了代码的可重用性,实现了组件真正意义上的即插即用。iBatis是一个O/R Mapping解决方案,实现了POJO(Plain Ordinary Java Objects,即简单的普通Java对象)与关系库SQL之间的映射。通过iBatis,可以实现数据库表与代码之间的松耦合的。DWR(Direct Web Remoting),是一个WEB远程调用框架。根据Java类来动态生成JavaScrip代码。利用这个框架,可以在客户端利用JavaScript直接调用服务端的Java方法并将返回值给前台JS,就好像直接在客户端本地调用一样。
ExtJS是一个Javascript编写的用于创建前台用户界面的AJAX框架,提供了RIA开发所需的所有常用界面组件。通过ExtJS,可以快速、轻松地创建丰富多彩的客户端应用,并大大降低开发的前台工作量。
3.2 授权界面
进入系统角色管理界面,选择角色,点击工具按钮进入应用授权窗口。在窗口中选择业务对象类型,根据类型表判断使用列表还是树形结构显示源数据,授权界面如图5.
图5 业务授权界面
根据业务需要,选择对应角色有权限的业务对象添加到权限列表中,点击确定完成授权。拥有该角色的用户登陆系统后即可访问所授权的业务对象。
3.3 对外接口
系统封装多个DWR接口,供业务模块调用,开发人员可根据实际权限需求,调用对应接口获取权限控制信息,下面列出几个典型接口描述:
1)获取当前用户可访问的应用列表
输入:应用类型或应用类型_层级,字符串格式,如5
输出:当前登录人员可访问的对象列表,对象数据格式
2)获取某个用户可访问的应用列表
输入:用户代码,字符串格式
应用类型或应用类型_层级,字符串格式
输出:用户可访问的对象列表,对象数据格式
3)检查某用户是否有权限访问某应用
输入:用户代码,字符串格式
业务对象类型,字符串格式
业务对象代码,字符串格式
输出:true/false
3结论
本文在已有权限系统基础上,结合业务实际需求,开发一套通用的业务对象授权系统,解决现有电网业务中如子控制区域、变电站等多种业务对象权限控制需求。该系统同样适用于其他web权限业务相关权限管理,具有较高的推广性。
目前业务对象源数据通过人工或sql方式维护,下一步考虑实现源数据维护界面,加强其通用性。
参考文献:
[1] ISO/IEC27001: 2005. Information Technology- Security Techniques - Information Security Management Systems -Requirements[S]. Geneva: International Organization for Standardization,2005
[2] Sandhu R,Coyne E J. Role-based access control models[J]. IEEE Computer,1996,29( 2) : 38-47.
[3]鲁 柯, 周保群, 王惠芳. 基于带时间特性 RBAC 的使用控制模 型及其管理[J]. 计算机工程, 2008, 34(6): 170-172 .
[4] 欧阳星明,张华哲. 大型网络 MIS 系统中基于角色的权限 管理[J]. 计算机工程与应用,2000,36( 4) : 138-140.
[5]Ahn G-J,Sandhu R. Role-based authorzation constraints specification[J]. ACM Transactions on Information and System Security,2000,3( 4) : 207-226.
论文作者:单婧婧,王志强,刘海林,辛海滨,张汉之
论文发表刊物:《电力设备》2019年第8期
论文发表时间:2019/9/18
标签:业务论文; 对象论文; 权限论文; 系统论文; 节点论文; 数据论文; 角色论文; 《电力设备》2019年第8期论文;