APP下载

一种灵活的小颗粒权限管理方法及其实践

2019-06-19王博郝羽

现代电子技术 2019年11期
关键词:细粒度角色

王博 郝羽

摘  要: 权限管理是应用软件的重要组成部分,它关系到应用系统安全性和可靠性。当前的软件管理者和用户的多样性为权限管理提出了挑战。传统粗粒度的权限管理系统权限粒度较粗,较难适用于用户复杂多样的管理系统,故提出一种基于“位示权限”和“权限矩阵”的细粒度权限管理的方法(Flex?RBAC),实现了相应的权限分配算法,减小了权限分配的粒度,增加了权限管理的灵活性。提出的细粒度、配置灵活的权限管理方法及设计的原型系统,为应用软件的细粒度权限管理提出一种切实可行的方法。Flex?RBAC方法的创新点在于权限管理的粒度细小、配置灵活、算法实现简单,具有较高的通用性。

关键词: Flex?RBAC; 细粒度; 权限管理; 角色; 位示权限; 权限矩阵

中图分类号: TN911?34                         文献标识码: A                          文章编号: 1004?373X(2019)11?0153?05

Abstract: Permission management as an important part of application software is critical to the security and reliability of the software system, which is challenged by diversity of software managers and users. The traditional coarse?grained permission management system is difficult to apply to the management system with complex and diverse users. Therefore, a flexible role?based access control (Flex?RBAC) method based on bit map for permission and permission matrix is proposed, which can realize the corresponding permission assignment algorithm, reduce the granularity of permission distribution, and increase the flexibility of permission management. A permission management method with fine granularity and flexible configuration, and its prototype system are proposed, which provides a feasible method for fine?grained permission management of application software. The Flex?RBAC method has the innovation points of fine granularity and flexible configuration of permission management, easy algorithm implementation, and high universality.

Keywords: flexible role?based access control; fine grit; permission management; role; bit map for permission; permission matrix

0  引  言

权限管理和访问控制是管理系统的重要组成部分,它关系到整个系统的安全性和资源访问的级别[1]。当前无处不在的软件应用,尤其是云计算[2]、Web系统[3?4]和移动应用系统[5]的大量涌现,使用者级别的多样性[6],为软件开发中的安全性和可靠性提出了更高的要求[7?8]。更进一步,随着社会的飞速发展,软件的开发周期要求非常短,因为若不如此,一个新的创新成果很快被复制。其次,软件开发成本也被急剧压缩。一个良好的权限管理系统应该可以独立于其他的功能需求和非功能需求。因此,提出一种非侵入式的、独立的权限管理框架,尤其是一种小粒度[9]、灵活的权限管理方法,对于提高软件开发的效率、降低软件的开发成本,提高软件的灵活性和安全性是非常有必要的。

针对这种情况,本文提出一种灵活可行的权限管理方法Flex?RBAC(Flexible Role?based Access Control),可以有效地解决上述问题,该方法的主要特点和创新点如下:

1) 灵活性。灵活性是本方法的主要特点,通过配置,可以非侵入原有系统,对操作和功能进行权限管理。

2) 小粒度[9]。针对某一功能块和某一事件的小粒度权限,该方法适用面广。

3) 高效简单。对权限可以采用一种位权限的方法标识该权限,对权限进行简单的位运算可以快速配置或者取得权限,方法简单有效。

4) 通用性[7]。可以适用各类软件,如果稍加修改可以适用各类CS、BS系统。

5) 安全性[1]。对用户的密码使用SHA加密,因此,即使后台工作人员看到了密码,也无法破解密码而侵入系统。

1  Flex?RBAC方法的设计思想

在应用系统的开发中,常见的访问控制方法有如下三种形式:自主访问控制(DAC)、强制访问控制(MAC)和基于角色的访问控制(RBAC)[10]。本文所提出的新的权限管理模型是在RBAC基础模型之上做的一种扩充和改进,并设计了一种原型。该方法具有较高的灵活性和较细的访问控制粒度,本文称之为Flex?RBAC。

1.1  Flex?RBAC设计思想

RBAC是基于角色的权限管理方法,RBAC基础权限具有如下三个核心元素:用户、角色和权限。这个基础模型可以用图1表示。

图1  RBAC基础权限模型

图1中RBAC基础权限模型的元素包括[5]:

1) URPS分别代表用户USER、角色ROLE、权限PERMISSION和会话SESSION;

2) PA?[P×R],多对多的权限指派关系;

3) UA?[U×R],多对多的用户角色指派关系;

4) User:[S→U],映射每一个用户到会话;

5) Role:[S→2R]映射每一个会话到一组角色。

上述权限设计和权限分配粒度较粗,在Flex?RBAC方法中,对权限的设计和分配做了较细粒度的调整,把权限分成两个部分:一部分是应用的基础权限BP(Base Permission),基础权限对系统的基础操作做了分离;另一部分是特殊操作权限SP(Specific Permission),特殊权限分配比如上传下载,邮件发送等功能。如图2所示。

图2  细粒度权限分配方案

这种权限的设计思想是:基础权限在访问控制的粒度上更小,游离于整个系统中,特殊共有功能权限被独立分离提取,可以总体上被配置和控制。通过这种方法,使得总的权限控制粒度变得比较细小,权限分配更加灵活。

1.2  权限分配

下面Flex?RBAC从权限分配的几个难点和重点上给出设计思路和方案。这几个重难点包括细粒度基础权限分配、特殊功能权限分配和加密策略。

1.2.1  Flex?RBAC细粒度基础权限分配

Flex?RBAC的权限分配包括两部分,即基础权限分配和特殊权限分配。在这两个权限分配中采用不同的方法,前者采用“位示权限”,所谓“位示权限”,就是用一个二进制数的每一位来表示每一种角色是否具有该权限,0和1分别表示具有和不具有该访问权限;后者采用“权限矩阵”的分配方式,所谓“权限矩阵”就是用二维矩阵表示角色和特殊功能之间的具有关系,二维矩阵中的值true和false分别代表该角色是否具有该权限。

为了灵活简单地表示基础权限,在这里,把每一个权限用[0~n]的整数来表示,不同的整数表示一种不同的权限,在该位上设置1或者0分别表示具有该基础操作的访问权限或者不具有访问权限。那么所有的权限就可以用一个大整数表示该角色拥有的权限。再结合该角色是否拥有“分离的细粒度操作”[ζ]来确定是否具有细粒度的操作。如图3所示。

图3  基础权限分配的“位示权限”

1.2.2  特殊功能权限矩阵

在一个系统中有众多的共有功能,比如邮件发送、上传下载、短消息发送等子功能,这些功能需要根据不同的角色权限,分配不同的功能权限。由于这些功能离散在应用系统的各部分,因此在设计时,需要通盘考虑,把这些功能权限剥离出来,设计成角色功能矩阵[?]。FunRight[=?(i,j)],[?]为权限功能矩阵,见表1。

表1  特殊功能权限矩阵

2  Flex?RBAC的系统设计

前面给出了Flex?RBAC的设计思想,微小粒度的基础权限和特殊权限划分的方案和设计思想。采用何种数据结构、如何建模是在Flex?RBAC微小粒度權限管理系统中实现的关键问题。下面从Flex_RBAC的功能结构、数据库设计和算法实现方面一一阐述。

2.1  Flex?RBAC系统功能结构

Flex?RBAC权限管理中,主要包含如下功能:系统用户管理、角色管理、功能管理、基础权限分配、功能权限分配。其中,用户管理负责对不同用户的注册、删除、更新和用户基本信息管理,为用户分配角色;角色管理负责建立不同的角色,并对角色进行基本管理;基础权限管理负责创建基础权限;基础权限分配功能通过位示权限为角色分配基础权限功能和微小权限控制权限;功能权限分配通过权限矩阵为用户角色分配功能权限。图4是Flex?RBAC的功能结构图。

图4  Flex?RBAC的功能结构图

2.2  Flex?RBAC数据库设计

图5是Flex?RBAC的实体关系图,主要涉及系统用户sys_user,系统角色表sys_role,基础权限表sys_baseRight,特殊权限表sys_specificRight,角色?特殊功能权限表sys_role_specificRight。

图5  Flex?RBAC的实体关系图

2.3  Flex?RBAC权限分配算法

表2  系统用户表sys_user

表3  角色表sys_role

表4  基础功能表sys_baseRight

表5  特殊功能表sys_specificRight

表6  角色?特殊功能权限表sys_role_specificRight

3  Flex?RBAC的系统实现

根据上述设计思想和设计方案,本节给出Flex?RBAC的一种设计实现原型。本方案采用Web方式的Apache Shiro框架[11]。Apache Shiro是一个强大且易用的Java安全框架,执行身份验证、授权、密码学和会话管理[12]。

3.1  总体Shiro配置

此部分配置了ShiroRealm的实现类和访问路径的配置。其中,在Shiro Filter中配置的Shiro Filter的filterChainDefinitions取值有两种,分别是anno和authc。anno代表不需要授权即可访问,对于静态资源,访问权限都设置为anno,authc表示需要授权才可访问。

3.2  基础权限实现

基础权限的分配由基础功能和微小控制权限构成。权限分配的截图如图6所示。

图6  基础权限分配

在选择功能权限中,是一个树形的功能权限截图,如图7所示。

图7  基础功能权限树

3.3  特殊功能权限实现

特殊功能权限是对离散于整个系统中的特殊功能的一种提取。图8的矩阵是设计的角色?特殊功能权限矩阵,其中,横向是特殊功能,纵向是用户角色。图中的按钮是一种开关按钮,点击该按钮,该特殊功能权限可以在设置和取消间反转。

图8  特殊功能权限矩阵可视化

4  结  语

本文针对应用系统中的权限管理做了仔细分析,提出一种细粒度的权限管理方案,并给出设计原型。在基础功能权限和特殊功能权限上给出权限设计的思路和算法,相比其他的权限管理方案,具有粒度细小、配置灵活和功能简单高效的特点。在多种应用软件中已经实践了该方案,同时也证明了Flex?RBAC是一种行之有效的细粒度权限管理方法。

该方法尚有一些不足之处,对特殊功能权限没有做进一步的细分。比如,资源上传和下载的功能,该用户可以对某些资源具有上传和下载的权限,但对另外的一些资源不具备该权限。对这类特殊权限的超细粒度尚未做深入的考虑。希望能在后续的研究和开发中,进一步完善这部分的工作。

参考文献

[1] CHEN A, XING H, SHE K, et al. A dynamic risk?based access control model for cloud computing [C]// 2016 IEEE International Conferences on Big Data and Cloud Computing. Atlanta: IEEE, 2016: 579?584.

[2] HAN D J, ZHUO H K, XIA L T, et al. Permission and role automatic assigning of user in role?based access control [J]. Journal of Central South University, 2012, 19(4): 1049?1056.

[3] JIANG L, ZHU A. The permission management of access and control based on role in monitoring platform [C]// 2016 International Conference on Advances in Mechanical Engineering and Industrial Informatics. [S.l.]: Atlantis, 2016: 2219?2226.

[4] 陈宫浩,卿粼波,滕奇志,等.RBAC权限管理模型在油田管理系统中的应用[J].微型机与应用,2017,36(2):87?89.

CHEN Gonghao, QING Linbo, TENG Qizhi, et al. Application of RBAC authority management model in oilfield management system [J]. Microcomputer and its applications, 2017, 36(2): 87?89.

[5] 邓盛源,卢建朱,杨菁菁,等.一种基于角色的WSN访问控制改进方案[J].计算机工程,2014,40(5):129?133.

DENG Shengyuan, LU Jianzhu, YANG Jingjing, et al. An improved role?based access control scheme in wireless sensor network [J]. Computer engineering, 2014, 40(5): 129?133.

[6] 汤文亮,李科.基于RBAC模型的权限管理改进研究与实现[J].计算机工程与设计,2015(5):1181?1186.

TANG Wenliang, LI Ke. Research and implementation of improved authority management based on RBAC model [J]. Computer engineering and design, 2015(5): 1181?1186.

[7] 赵君,熊燕妮.基于角色和颗粒操作的自定义通用权限管理模型研究[J].软件导刊,2016,15(12):14?16.

ZHAO Jun, XIONG Yanni. Research on custom universal permission management model based on role and particle operation [J]. Software guide, 2016, 15(12): 14?16.

[8] 卜质琼,郑波尽.一种改进的云存储平台权限管理机制设计[J].现代电子技术,2016,39(21):1?6.

BU Zhiqiong, ZHENG Bojin. Design of an improved privilege management mechanism for cloud storage platform [J]. Modern electronics technique, 2016, 39(21): 1?6.

[9] 涂小琴,吴晟.基于细粒度权限质检管理系统的研究与设计[J].软件,2017(12):87?89.

TU Xiaoqin, WU Sheng. Research and design of fine grained permission based quality inspection management system [J]. Computer engineering & software, 2017(12): 87?89.

[10] 郭巍.基于RBAC的测井数据权限管理模块的设计与实现[D].北京:北京大学,2008.

GUO Wei. Design and implementation of RBAC based access management module for logging data [D]. Beijing: Peking University, 2008.

[11] 许滔.基于Shiro的移动应用权限控制系统的设计与实现[J].现代计算机,2016(6):97?100.

XU Tao. Design and implementation of mobile permission control system based on Shiro [J]. Modern computer, 2016(6): 97?100.

[12] 刘全飞,周相兵.基于Apache Shiro的站群角色管理[J].计算机系统应用,2015,24(6):177?182.

LIU Quanfei, ZHOU Xiangbing. Station group role management based on Apache Shiro [J]. Computer system & applications, 2015, 24(6): 177?182.

猜你喜欢

细粒度角色
细粒度云数据自适应去重方法研究
融合判别性与细粒度特征的抗遮挡红外目标跟踪算法
细粒度的流计算执行效率优化方法
基于SVM多分类的超分辨图像细粒度分类方法
基于双线性卷积网络的细粒度图像定位
支持细粒度权限控制且可搜索的PHR云服务系统
小议戏曲中角色的发展趋势
《冰雪奇缘》开启迪士尼剧本角色新模式
人力资源开发与智力资本提升的关系探析
普通高等学校思想政治教育辅导员角色问题研究