如何用Hzero的标准功能实现数据权限隔离
H0权限控制实现方式_RBAC模型
H0权限控制标准功能的设计主要基于角色的访问控制(Role-Based Access Control,简称RBAC)模型。
RBAC模型三大特点:
RBAC模型引入角色,取消用户直接与权限关联,而是权限与角色相关联,用户通过成为适当角色的成员而得到这些角色的权限:简化权限管理,使得权限分配和调整更加灵活和高效
用户可分配多角色,角色可赋予多权限,构造层次化权限体系:实现权限的集中管理和动态调整
通过修改配置文件,可直接调整权限,使得系统在运行过程中能够灵活地进行权限管理:提高了系统的可扩展性和灵活性,还能有效地应对不断变化的业务需求
H0在RBAC基础上的扩展
H0 中以 RBAC 为基础理论来控制访问权限。实现了页面权限和操作权限的隔离,在此基础之上自研了数据权限和单据权限两个功能,实现了数据的隔离和访问控制。
单据权限实现方式
系统逻辑
单据权限主要用于配置业务单据类型以及可控制的权限维度基础数据,配合角色、子账户、安全组的权限管理,进行单据数据权限的限制,为 HZERO 平台提供一种可选的基础数据权限屏蔽功能。通过配置单据维度、单据权限灵活的生成数据权限屏蔽规则。
系统实现
这里以库存模块待入库数据查询页面为例,通过定义一个主数据仓库维度的单据维度加上待入库查询的单据权限。实现效果为给不同的角色或者子账户分配不同的仓库主数据,就能入库执行页面查询到对应仓库的待入库信息。
定义单据维度:
■ 维度编码和名称
■ 维度类型:(业务分配范围或用户上下文)
■ 值来源类型:值集或本地编码,一般是值集
■ 值来源:选择具体的值集视图,支持选择独立值集、自定义SQL或请求的URL
■ 排序号
定义单据权限
■ 单据权限编码和名称
■ 作用层级、租户:多租户层级一般选择平台,并选择平台租户
■ 来源微服务:作用领域
■ 权限控制类型:黑名单或白名单
■ 分配菜单:作用菜单或页面
分配单据维度至单据权限
■ 限定分配用户范围或上下文:取决于选择单据维度的维度类型
■ 来源类型
■ 来源匹配表:作用表
■ 规则类型
■ 来源匹配字段:作用具体字段
给子账户或者角色维护数据权限
■ 勾选权限维度
■ 勾选权限数据
实现效果
在仓管员_有色金属角色下只能查询出该角色维护主数据仓库的待入库数据。
数据权限实现方式
系统逻辑
数据权限功能主要分为两个模块,一个是数据权限规则,一个是数据权限范围。数据权限提供在系统使用过程中,能够实时、动态、灵活的调整用户、角色或者其他维度的可访问数据。数据权限基于表来进行权限控制,可以添加其他更细的条件来控制权限控制范围,例如可以通过菜单、服务、租户等条件来做过滤,最终实现对用户的数据访问权限做控制。
系统实现
这里以入库单查询页面为例,通过定义数据权限规则,限定数据源,并分配给指定的数据权限范围,分配给对应的菜单或页面。实现效果为可以查询出当前用户创建和所有单据和对应账户或角色指定部门的所有单据。
定义数据权限规则
■ 数据权限规则编码和名称
■ 规则类型:(一般是SQL,用于在数据库查询操作中对数据进行筛选和过滤。这确保用户只能获取其被授权访问的数据)
■ 限制了数据的可见范围。)
■ 应用租户:多租户选择平台租户
■ 作用域表:作用表
定义数据权限范围
■ 选择作用表、租户、服务名称
■ 添加维护好的数据权限屏蔽规则
■ 选择作用菜单
维护指定部门权限数据
■ 勾选部门信息
实现效果
在仓管员_有色金属角色下只能查询出对应当前账户创建的和入库单部门与该角色维护的权限数据下部门一致的入库单。
单据权限和数据权限应用总结
E.N.D
作者:邹鹏程
审核:熊旭东
编辑:朱思聪