电网设备监测系统访问控制模型研究
2013-10-31曾礼琼李秦伟
曾礼琼,李秦伟
(贵州大学 计算机科学与信息学院,贵州 贵阳 550025)
0 引言
电网设备[1-2]是电网公司的重要资产,随着电网公司的建设发展,大批技术先进、运行可靠的新设备投入运行,电网设备不断增多,且新设备比重不断加大。电网设备监测系统的功能也越来越多,面对的用户群体逐步增加。电网设备监测系统的资源数据安全有效的管理,成为了电网行业关注的问题。如何将用户进行合理的分类,并且有效的授予相应的权限,使得用户可以在自己的权限内操作设备监测数据,又能保护系统监测数据的安全性[3],为系统设计访问控制模型[4]显得尤为重要。
为了解决这些问题,文中采用Dorado软件,根据传统的RBAC的原理以及电网公司实际需求,设计出了一种改进的角色访问控制模型,在此基础上,开发出了一套非常实用灵活的用户权限控制模块。希望通过该实例的研究,总结出一般性的方法,为类似的企业系统的权限设计提供参考意见。
1 访问控制模型
1.1 基于角色的访问控制模型
基于角色的访问控制[5](RBAC,Role Based Access Control)中引入了“角色”的概念。
如图1所示,RBAC实现了用户和访问权限的分离,这样极大的方便了资源权限的管理。例如:如今企业人事调动频繁,当今资源信息结构也越来越复杂。如果一个用户的职位发生了变化,改变“用户—资源”的关系及其复杂。使用RBAC模型后,管理员只需要修改当前用户的角色即可,而“角色—资源”这一块则不需要改动。并且,“用户—角色”的分配不需要太多的技术,由人事人员就可以完成,而资源的分配比较复杂,需要通过技术人员以及高层管理人员承担。
图1 RBAC基本思想
由此可见,RBAC 主要有两个优点:第一、降低资源分配的复杂性,减小管理开销。第二、灵活的支持企业现行的人事管理模式,增大了企业的资源信息安全性。
1.2 改进的基于角色的访问控制模型
上面所述,传统的RBAC模型中通过引入“角色”实现了用户与权限的逻辑分离,这样的模型机制虽然很大程度上增加了灵活性,但是仍然存在以下一些问题需要补充:
在大型的系统中,如该电网公司的设备监测系统,用户数量大、部门职位多、需要控制的资源也多,并且随着该系统的逐步完善,资源数据会不断增多。利用传统的RBAC模型虽然可以减轻授权管理的负担,但是为用户分配角色,再给角色赋予权限的工作量仍然很大;因此传统的RBAC仍然不能很好的满足类似于该系统的大型企业系统的需求。
传统的RBAC模型中,权限的管理功能比较单一,一旦用户通过角色获得了资源的访问权限,该用户就可以对相应资源进行“增删改查”的工作,这样容易导致资源数据的无故缺失或更改,不利于系统的维护。例如:某地方局的系统管理员只能对自己局里内部资源进行管理修改,而不能修改其他局的资源数据。这就需要访问控制模型对权限的控制具有多重功能,而不是单一的赋予权限。然而传统的RBAC模型并不具备这种多重功能。
于是,根据电网公司设备监测系统的实际情况抽象出一种改进的基于角色的访问控制模型,即改进的RBAC模型,如图2所示。
图2和图3中,可以先给该用户分配一个角色组,比如该用户属于某地方供电局R2,由于各个地方供电局也有其上层机构供电局和在其管辖之内的下级供电局,所以各个地方供电局,也就是这里所说的“角色组”是“树形”结构存放于数据库中。
图2 改进的RBAC模型——角色分配
图3 改进的RBAC模型——权限分配
由于每一个供电局的规模不同,因此R1的系统管理员就只有R的副系统管理员的权限,R21的系统管理员只有R2副系统管理员的权限,以此类推。这样,每一个角色组就需要有一组“树形”角色级别[6],该系统中的角色级别可以是根据角色组的层次依次向下递减一个级别。其他系统移植时可以根据实际情况进行改变。
这样一来,当为一用户创建角色的时候,首先分清他是属于哪个“角色组”即可,其他的任务可以移交给下层工作人员完成。在图2中,R2这一角色组的角色级别中该用户属于级别P12。
由此可见,这种“角色组—角色级别”的角色分配方法,不仅仅只是单一的为用户分配角色,而是根据用户的各个不同的地区,先分配到各个“角色组”,再由“角色组”分配各自的角色级别。这样既提高了角色分配的效率,又增加了权限控制的安全系数,防止用户越权查看资源数据。
改进的RBAC中,将传统的权限配置划分为三个部分,使之具有多重功能。
第一部分:模块(Module)权限。控制不同角色是否有进入该模块的权限。比如:“系统管理”模块只有系统管理员可以进入,“标准管理”模块用于高级用户[7]上传下载设备数据标准,“系统集成”模块用于中级用户进入卫星云图系统、输电GIS系统、雷电定位系统等集成系统进行查看,“数据采集[7]”模块用于数据采集人员上传实时数据,“设备统计”与“设备监测”模块用于普通用户查看数据。
第二部分:功能(Function)操作权限。即该角色进入模块以后,对此模块内项目是否有操作的权限。在此系统中,就是各个功能按钮,比如“添加”“修改”“删除”“查询”等。
第三部分:数据(Data)权限。是控制角色是否有访问模块中的数据实例的权限。比如在“数据采集”模块中,有用户上传的各个数据文件,用户只能修改删除自己上传的文件,而不能修改删除别人的文件。这样就需要数据权限,将用户的权限分配到各个数据项目中去。
2 应用实例
2.1 总体设计规划
如图4所示,将外部资源信息导入“用户对应”的模块,并制作“查询用户”的功能按钮。在“角色管理”模块,则是对用户的“角色组”以及“角色级别”的增删改查的工作,方便公司对角色的管理。“权限分配”模块包括“用户—角色组—角色级别”分配、“角色级别—模块权限/功能操作权限/数据权限”的分配,是权限管理的具体实现。最后,“资源对应”再与外界资源建立连接,同时设置查询资源的功能。
图4 权限管理模块的具体实现
2.2 权限管理数据库实现
系统数据库采用Oracle[8],开发软件是PLSQL+Developer。根据改进的RBAC模型的基本原理以及系统的具体技术要求,在数据库中设计了一些表,他们之间的关系为图5所示。
图5 数据库表格关系——用户表、角色组表、角色关系表对应关系
图5和图 6中的表分别为用户信息表(T_USERS)、角色组信息表(T_GROUP)、角色信息表(T_ROLE)、用户—角色组关系表(T_USERANDGROUP)、角色组—角色关系表(T_ROLEANDGROUP)。模块信息表(T_MODULE)、功能信息表(T_FUNCTION)、数据对象信息表(T_DATA)、模块权限配置表(T_ROLEMOD)、功能权限配置表(T_ROLEFUN)、数据权限配置表(T_ROLEDATA)。
其中User_password采用MD5方式进行加密处理,MD5加密后的字节数组,再使用base64对其进行编码,以保证用户信息的安全性。角色与角色组在表、模块信息表都是“树状”层次存放的,便于实现系统权限的分级授权[8]。其中Mylevel字段,用来记录角色的层次信息;Parent用来记录角色的上一级,主要是用来权限的分配。当Parent为空时,该角色或角色组是顶层位置。permission为权限标志。
图6 数据库表格关系——模块信息表、功能信息表、数据权限配置表对应关系
3 结语
文中介绍了权限管理中的常用控制方法——RBAC,并且根据设备监测系统的实际要求,设计出了一种改进的RBAC模型。在此改进的RBAC模型的基础上通过合理的“角色组—角色级别”设计、权限配置模型设计以及数据库设计,开发出了符合电网公司设备监测系统要求的角色权限分配方案,使该系统的资源分配更加灵活、方便。该系统的权限分配以及登陆访问流程,环环相扣,增加了访问控制的安全性。目前该系统已应用于该电网公司的设备监测系统中,管理人员可以有效率地进行用户的权限分配,增加了生产设备数据访问的安全性,用户反映较好。
[1]于晶,郭航,张欣宇.电力系统故障实时记录系统通信设计[J].通信技术,2012,45(09):79-81.
[2]易振宇.电力信息系统等级保护实施浅谈[J].信息安全与通信保密,2011(12):97-99.
[3]许玲.企业信息系统中Web service安全[J].通信技术,2011,44(05):48-51.
[4]鲁剑锋,刘华文,王多强.访问控制策略的分类方法研究[J].武汉理工大学学报·信息与管理工程版,2011,33(06):879-881.
[5]韩若飞,汪厚祥.基于任务-角色的访问控制模型研究[J].计算机工程与设计,2007,28(04):800-802.
[6]李东,施懿闻,郝艳妮,等.科学基金管理系统的用户权限管理模式研究[J].计算机技术与发展,2012,22(02):160-165.
[7]夏明超,吴俊勇,吴命利.基于角色访问控制在电力监控系统中的应用[J].电力系统及其自动化学报,2008,20(02):46-50
[8]侯有利.数据库三层安全结构设计[J].通信技术,2011,44(04):118-120.