分级数据权限设计方案研究
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
分级数据权限设计方案研究作者:***
来源:《计算机应用文摘》2022年第24期
關键词:数据权限;分级授权;角色控制;访问控制
1引言
在信息系统的运维中,权限管理是必不可少的。为了达到对权限细粒度的控制,同时兼顾未来权限的可拓展性,便于在信息系统运维过程中对权限的控制以达到对数据的精确地控制,从而避免因权限控制缺失或者操作不当引发的风险问题和系统安全性问题,提出分级数据权限设计方案。
权限管理是所有系统都会涉及的一个重要组成部分,主要目的是对不同的人访问资源进行权限的控制。权限可分为功能权限和数据权限。功能权限用于控制用户菜单、界面、操作等权限。数据权限用于控制用户可视的数据范围。功能权限与数据权限需要分开配置.充分解耦。
功能权限主要从用户可以操作的范围来实现,目前行业较为认可的一种解决方案是基于RBAC的权限控制模型。数据权限更多的是从安全性角度思考,如何控制用户可视的数据范围,如何灵活把控数据范围,成了权限管理的一道难题。基于“组织架构+RBAC”的权限控制模型的设计方案,以分级授权的形式,可以准确控制行级别的数据,可以很好地解决相应的问题。
2数据权限设计
功能权限是各个信息系统必不可少的一个模块,但数据权限并不是每个业务系统都要求的,具体要看实际的业务需求。假设所有的信息都是公开透明的,数据权限控制也就变得多
余。可是,当前世界错综复杂,每个人的身份也不尽相同,不可能每个人可视的数据范围是相同的。所以,数据权限控制也就成为信息系统不可或缺的一部分。
数据权限以功能权限为基础,不同的用户,浏览同一个页面显示的数据是不同的,即用户可以查看并处理哪些数据。出于灵活性、可拓展性、可维护性,本系统方案拟采用多级数据切割方案,具体如下。
一级数据规则(默认),也称全局数据规则,它以组织架构为核心。组织架构一般为树状结构,每一个部门对应于树上的一个节点,每个节点可绑定任意用户。基于以组织架构为基础的模型划分的数据,可以实现上级浏览下级数据,但下级不能浏览上级数据。
父结点可以管理所有子结点的数据,结点只能管理自己所在结点的数据。如图1所示,一级机构用户可以管理二级机构1下的用户b、用户c数据以及二级机构2下的用户d的数据,用户b仅可以管理二级机构1下用户的数据。
二级数据规则。需引入功能权限的【角色】,可以给角色配置预先定义的数据规则,从而实现跨部门的数据访问以及同一部门下的数据切割。这类数据规则统称为基于角色数据范围,有如下三个范围:全局级;部门级;个人级。
角色表(Role):存储角色信息,即权限组。如表1所列。
角色数据范围表(RoleDataRange):存储角色数据范围。如表3所列。
基于角色数据范围,可以让系统数据权限配置更加灵活,也弥补了一级数据规则的不足。通过这种方式配置的权限,属于此角色的所有用户都将获得相应的数据权限。基于角色的数据规则,可以解决绝大多数的数据权限问题。但是,它的配置是基于现有的范围,不能自定义数据规则。
三级数据规则,是二级数据规则的一个补充,可实现自定义数据规则。二级数据规则的实现是基于角色的,而三级数据规则的实现是基于用户的,换言之,三级数据规则是粒度更细的数据权限控制。系统管理员可以根据具体的业务逻辑,给任意用户添加任意的数据规则。
用户数据范围表(UserDataRange):存储用户数据范围。如表4所列。
如图2所示,用户d是特殊人员,有权限访问二级机构1下所有的数据,但是并没有权限访问他的上级数据。显然,现有的数据规则并不能满足此类需求。此时需要使用三级数据规则,这类数据规则统称为基于用户的数据范围。针对特殊人员d,可以单独赋予其访问二级机构1的权限,即可解决此类问题。
若业务系统规模较为庞大,不建议数据权限与角色进行深度捆绑。由于角色和用户以及角色和功能权限是多对多的关系,若把数据权限强加进来进行绑定,业务系统就会变得繁杂、琐碎,难以区分权限之间的界限。特别是在后期维护中,很难做到准确控制权限的范围,造成权限的溢出。为了解决这一现象,只要把数据权限从角色中抽离出来,使角色与功能权限单独捆绑,使用户组与数据权限单独捆绑,通过用户组的形式,可以实现一对多的用户管理,通过上述的二级数据权限设计方案,进而控制多个用户的数据权限。通过上述的三级数据权限设计方案,即可达到对用户更加细粒度、更加个性化的权限控制。总而言之,功能权限的控制具有通用性,在市场上也有较为成熟的方案。但是数据权限的控制,一般而言,都是需要定制化开发,针对不同的业务系统,数据权限的概念是不一样的,很多业务系统根本就不需要数据权限,数据权限的增加无疑会加大业务系统的建设难度,但数据权限也是不可缺少的。读者可根据以上数据权限设计方案,结合业务系统的实际情况,自行设计出满足业务系统的数据权限。但是,在设计过程中需要把握一个原则,确定用户与角色捆绑还是与用户组捆绑,进而设计出相应的数据权限。
通过以上三级数据权限的设计,可以实现对数据横向控制,即控制用户可以查看同一张表不同行的数据。行级别的数据权限控制基本上可以满足绝大多数业务系统的需求。但是,有的业务系统信息比较敏感,如财务收费系统、人事管理系统等。不同身份的人,看到同一张表的数据是不一样的。如财务总监可以看到工资总额,一般人员是看不到这个字段的。针对这种级别的数据权限控制,显然以上的数据权限设计方案可能不太适用,为了实现对数据的纵向控制,对此提出了字段授权的设计理念,读者可根据实际情况自行设计。
3字段授权
同属一个角色或者用户组的用户,所拥有的数据权限是一致的,不同角色或用户组用户所看到的数据是不一致的。这里所指的数据,指的是数据表中的“行”数据。然而,在实际场景中,不同角色或用户组的用户,对于同一张表,即使所拥有的权限一致,看到的内容可能有所不同。针对敏感信息,不能直接暴露给非授权用户。三级数据权限可以做到横向切割数据,而字段授权可实现纵向切割数据。换言之,字段授权切割的对象对应于数据的数据,即数据表里的字段。
字段授权可采用基于角色进行授权,也可采用基于用户组或者用户进行授权。一般而言,从数据库获取而来的数据,需要与授权字段相匹配,进而过滤非授权字段,从而切割数据的数据。具体如图3所示。
4结束语
基于“组织架构+RBAC”的权限控制模型的设计方案,以分级授权的形式解决传统信息系统难以解决的问题。通过个人、角色、部门、权限等对象的组合达到对数据权限细粒度的控制,从而实现对数据的“行”控制。在此基础上,提出了基于字段授权的理念,以实现对数据的