HZERO企业级数字PaaS平台 (二)| 企业级权限体系

图片

汉得企业级 PaaS 平台 HZERO之权限体系

权限是资源的集合,这里的资源指的是软件中所有的内容,包括模块、菜单、页面、字段、操作功能(增删改查)、数据信息等等。具体的权限配置上,目前形式多种多样,可以将权限分为:页面权限、操作权限和数据权限。

页面权限:所有系统都是由一个个的页面组成,页面再组成模块,用户是否能看到这个页面的菜单、是否能进入这个页面就称为页面权限。

操作权限:用户凡是在操作系统中的任何动作、交互都是操作权限,如增删改查等。

数据权限:一般业务管理系统,都有数据私密性的要求:哪些人可以看到哪些数据,不可以看到哪些数据。比如公司广东地区的负责人,他可以看到广东地区的仓库信息,但他看不到北京地区的仓库信息,因为这不是他的数据权限范围。

RBAC权限体系

RBAC实际上就是针对产品去挖掘需求时所用到的WHO(角色)、WHAT(拥有什么资源)、HOW(有哪些操作)的方式。
RBAC主要包含四个子模型:RBAC0、RBAC1、RBAC2和RBAC3,整体又叫做RBAC96。

图片

RBAC0

RBAC0是RBAC96模型家族中的基础,也称作核心部分,RBAC1、RBAC2和RBAC3是在此基础之上发展演变而来的。

RBAC支持的安全原则

RBAC支持三个著名的安全原则:最小权限原则、责任分离原则和数据抽象原则。

●   最小权限原则:RBAC可以将角色配置成其完成任务所需的最小权限集合。

扫描二维码关注公众号,回复: 14405594 查看本文章

●   责任分离原则:可以通过调用相互独立互斥的角色来共同完成敏感的任务,例如要求一个计账员和财务管理员共同参与统一过账操作。

●   数据抽象原则:可以通过权限的抽象来体现,例如财务操作用借款、存款等抽象权限,而不是使用典型的读、写、执行权限。

 

H0在RBAC基础上的扩展

更适合复杂场景下的企业级应用管理

H0中以RBAC为基础理论来控制访问权限。实现了页面权限和操作权限的隔离,在此基础之上自研了数据权限和单据权限两个功能,实现了数据的访问控制。

图片

用户管理

●   子账户管理

用于管理系统用户,为用户分配角色等。

按照类型划分:内部用户、外部用户。

●   用户组管理

当平台用户基数增大,角色类型增多时,如果直接给用户配角色,管理员的工作量就会很大。这时候我们可以引入一个概念“用户组”,就是将相同属性的用户归类到一起。 

 

角色管理

对系统角色相关功能进行统筹和管理。用于维护系统角色,并为角色分配权限集、安全组、工作台、数据权限等,最终将角色分配给用户,用户便拥有了角色的权限。主要包括多级角色管理、多级安全组管理、单级角色管理、单级安全组管理。

 

多级角色

分创建体系和继承体系,创建体系表现在父、子角色关系上,继承体系表现在继承角色关系上,区别表现在分配权限时,例如给租户模板角色分配权限,所有继承自租户模板角色的角色(租户管理员)将自动拥有分配的这些权限,可以一键往下分配权限,创建体系则不会。在回收权限时,会回收整个创建体系、继承体系的权限。

 

多级管理员

图片

角色复制及继承

图片

 

单级角色

用于维护系统角色,并为角色分配权限集、安全组、工作台、数据权限等,最终将角色分配给用户用户便有了角色的权限。

是对多级角色功能的简化,去除了多级角色功能繁琐的继承体系,使用平级角色的方式来实现角色管理的功能。

适用于角色体系简单的系统。

 

角色层级说明

虽然角色管理(单级)功能去掉了继承体系,但权限终究需要一个来源,因此设计以下结构的层级体系,即管理员角色层分离,普通角色层平级的方式来实现角色管理。

管理员角色层的角色同多级角色,普通角色层的继承角色为0,即没有继承角色。

图片

 

多级安全组

安全组用于将系统权限数据进行汇总配置,主要包括访问权限、字段权限、工作台配置、数据权限维度和数据权限。

在完成安全组的配置之后,可以将安全组分配给角色,在分配给角色之后,角色就拥有了安全组所配置的权限。

安全组配置的权限信息与角色配置的权限信息是平行的,权限在生效时使用的是安全组与角色本身所具有的权限。

安全组的访问权限具有继承关系,其他类型的权限是相互独立的。也就是说角色安全组的访问权限是受到上级分配的安全组的控制的,具有层级关系的安全组之间的访问权限是相互影响的,其他几种权限为每个安全组单独维护。

●   角色安全组是指当前角色创建的安全组

●   上级分配的安全组是指由当前角色父级角色分配给当前角色的安全组

●   下级创建的安全组是指当前角色的子级角色创建的安全组

 

单级安全组

主要用于维护可分配给单级角色的安全组数据。

 

菜单管理

可以维护平台标准菜单或租户定制化菜单,常见的菜单有 目录、菜单、链接、窗口 等类型,这些菜单将展示在菜单导航栏中。如果某些菜单不想展示到导航栏,还可以将菜单设置为虚拟菜单。如果想不同前端展示不同的菜单,可以为菜单设置标签,不同前端查询对应标签的菜单即可。

每个功能菜单下可以继续维护权限集,权限集可以看做是页面API的一个集合。菜单、权限集维护好之后,就可以在角色管理中将菜单权限集分配给角色,这个角色就拥有了这些菜单以及菜单下的权限集,当用户通过这个角色访问平台时,就可以在导航栏访问到这个角色所拥有的菜单。

权限集中还可以维护按钮类型的权限集,当角色没有分配这个按钮权限集时,页面上的按钮就会隐藏或禁用掉,达到控制页面按钮权限的目的。

图片

 

H0整体权限体系

图片

 

水平越权问题

在RBAC这种“基于角色的访问控制”模型下,解决了垂直越权的问题,即角色RoleA不能访问角色RoleB中的权限b。但是系统只会验证用户A是否属于角色RoleX,而不会判断用户A是否能访问只属于用户B的数据DataB,因此,发生了越权访问。这种问题,我们就称之为“水平权限管理问题”。

图片

 

相对于垂直权限管理来说,水平权限问题出在同一个角色上。系统只是验证了能访问数据的角色,即没有对角色内的用户做细分,也没有对数据的子集做细分,因此缺乏一个用户到数据的对应关系。由于水平权限管理缺乏一个数据级的访问控制所造成的,因此水平权限管理有可有称之为"基于数据的访问控制"

为了解决水平越权问题,H0自研了数据权限和单据权限功能。

 

数据权限

数据权限的目的是为了控制用户的可访问数据的功能。
数据权限提供在系统使用过程中,能够实时、动态、灵活的调整用户、角色或者其他维度的可访问数据。
数据权限基于表来进行权限控制,可以添加其他更细的条件来控制权限控制范围,例如可以通过菜单、服务、租户等条件来做过滤。数据权限功能主要分为两个模块,一个是权限控制范围,一个是权限控制规则。

图片

 

单据权限

已经有了数据权限功能,为什么还要开发一套单据权限的功能?

假设系统中存在一张订单表,订单表中有来源公司,创建人,业务类型,订单金额等字段,此时有需求说需要让不同的角色或者用户能够查看的订单按照多种维度动态控制,比如管理员可以查看所有订单,某个销售员仅能查看部分负责公司的订单,客户业务人员仅能查看自己创建的订单,采购员仅能查看某些类型的订单。

在面对这种多个维度进行限制时,数据权限功能就不好实现了,可以在数据规则中写SQL时写很多IF判断,但是能取到的参数有限,单据权限只能取到用户上下文中的参数。针对这种复杂的场景单据权限便诞生了。

单据权限主要用于配置业务单据类型以及可控制的权限维度基础数据,配合角色、子账户、安全组的权限管理,进行单据数据权限的限制,为HZERO平台提供一种可选的基础数据权限屏蔽功能。通过配置单据维度、单据权限灵活的生成数据权限屏蔽规则,免去了手动配置权限规则大量SQL代码。

图片

如何理解单据和维度。

●   单据:业务功能的抽象,通常是一张表或者某个查询的结果集,例如上述的订单表,或者一个订单查询SQL

●   维度:单据控制的维度,例如上述订单中的来源公司、创建人、业务类型。

 

HZERO 开源代码获取

GitHub :https://github.com/open-hand/hzero

Gitee :https://gitee.com/open-hand/hzero

      可以通过上述链接下载 HZERO 源代码。

      同时,HZERO 开源详情及汉得其他开源产品的最新情况,可以进入【汉得开放平台】( https://open.hand-china.com)了解更多并直达代码下载地址。

 

签约客户(部分统计,持续更新)

图片

 

联系我们

产品试用请登录开放平台。请在 PC 端打开:https://open.hand-china.com/market-home/trial-center/

产品详情请登录开放平台:https://open.hand-china.com/document-center/

如有疑问登录开放平台提单反馈https://open.hand-china.com/

更多精彩内容,扫码关注 “四海汉得” 公众号

图片

{{o.name}}
{{m.name}}

猜你喜欢

转载自my.oschina.net/u/4580203/blog/5549425