掌桥专利:专业的专利平台
掌桥专利
首页

一种适用于大数据平台的租户权限管理系统

文献发布时间:2023-06-19 10:11:51


一种适用于大数据平台的租户权限管理系统

技术领域

本发明涉及计算机技术领域,尤其涉及软件用户权限管理技术领域。

背景技术

随着互联网技术的快速发展,基于WEB的数据平台应用越来越多,为了保护公司数据的安全性,明确每个用户的职责、控制用户对系统的访问权限变得非常重要。权限管理的一个重要方面是访问控制,基于角色的访问控制是目前应用最普遍的一种访问控制模型。系统为每个用户分配角色,每个角色拥有属于自己的功能权限,对用户和角色,角色和权限的管控,从而能够更加灵活地实现用户对系统资源的管理和使用。通用权限系统的另一重要方面是通用性。不同的应用系统对系统功能的要求不一样,对用户的权限设定也不一样,通用权限系统需要发掘出他们的共性,设计出一种通用的方法,从而被不同的应用系统所复用。

目前针对系统的权限管理通常基于系统本身进行开发,权限管理浮于系统表面,不具备良好的扩展性与通用性,软件工程师在进行系统权限改造的时候费时费力。权限系统一直以来是我们应用系统不可缺少的一个部分,若每个应用系统都重新对系统的权限进行设计,以满足不同系统用户的需求,将会浪费我们不少宝贵时间,所以花时间来设计一个相对通用的权限系统是很有意义的。

此外,应用一旦成熟,为了给公司创造利益,就会面临应用市场推广的需求,多家公司多套系统的部署当然可以解决问题,但是后期维护的成本较高,而如何做到只部署一套系统,实现多家公司的复用就迫在眉睫了。

发明内容

本发明就是基于目前的现状设计开发了一套通用的用户权限管理系统,并引入租户的概念,实现系统共享的同时,保障应用数据的安全。

为解决上述技术问题,本发明采用的技术方案是:

本发明提供一种适用于大数据平台的租户权限管理系统,包括,租户平台模块:超级管理员实现公司信息的创建、用户信息的录入、应用信息的创建和应用权限的下发;

租户后台模块:公司管理员根据第一部分超级管理员分配给自己的应用、菜单与API权限,给不同应用创建不同的角色,不同角色之上进行菜单与API的授权,然后将角色分配给普通用户;公司管理员创建分组,将普通用户根据分配的角色加入到各个组中,同组下的数据可见共享,不同组不可见不共享;租户后台模块还用于定制数据源权限的管理,其中,公司管理员在租户后台可以创建数据源连接,通过与组绑定,实现数据源的分组管理;

系统应用模块:将租户后台权限接入到权限管控的应用系统中,实现应用权限的管理。

进一步地,所述的租户权限管理系统中,所述的租户平台模块包含:

公司信息单元(sys-company):实现公司基本信息的管理,包括公司名称、邮箱后缀等信息;支持用户登录应用系统账号的邮箱后缀进行公司的区分,从而实现不同公司用户的区分;

用户信息单元(sys_tenant):实现用户基本信息的管理,包括用户账号、用户类型(可以用tenant_type字段做区分)、所属公司与租户标志(例如tenant_Key字段)等信息;其中,用户类型包括公司管理员、普通用户;

应用信息单元(sys_app):实现管理应用信息的管理,包括应用的名称、描述等信息;

应用菜单单元(sys_menu):实现应用菜单信息的管理,包括菜单名称、描述、图标、所属应用等基本信息;

应用API单元(sys_api):实现应用API信息,包括API名称,描述,所属应用等信息;

角色信息单元(tenant_role):实现应用角色信息管理,包含角色名称、角色描述、所属应用等信息。

进一步地,所述的租户权限管理系统,所述的租户平台模块中,公司信息模块(sys-company)与用户信息单元(sys_tenant)两个单元通过公司信息模块(sys-company)的主键id进行关联(例如,公司信息模块的主键id通过tenant_company字段进行存储)。

进一步地,所述的流程管理平台,在模型设计步骤中:流程引擎组件支持事件配置及监听配置,节点监听包括:发起人信息初始化监听、流程信息同步监听、自动跳过节点监听、保存节点参与人且发送通知监听、判断发起人是否是某个部门监听,执行监听包括:发起人信息初始化中的任意一种或更多种。

进一步地,所述的租户权限管理系统,所述的租户平台模块中应用信息单元(sys_app)与应用菜单单元(sys_menu)两个单元通过应用信息模块(sys_app)的主键id进行关联(例如,应用信息模块的主键id通过app_id字段存储);应用菜单单元(sys_menu)与应用API单元(sys_api)两个单元通过应用信息模块(sys_app)的主键id进行关联(例如应用信息模块的主键id通过app_id字段存储);API单元(sys_api)与角色信息单元(tenant_role)两个单元应用信息模块(sys_app)的主键id进行关联(例如应用信息模块的主键id通过app_id字段存储)。

进一步地,所述的租户权限管理系统,所述的租户后台模块包含:

综合权限管理单元(sys_auth):维护超级管理员分配给租户管理员的应用,菜单与API相关的权限关系,同时维护租户管理员分配给普通用户的应用,菜单与API相关的权限关系;

分组信息单元(tenant_group):实现用户分组信息的管理,包含分组名称,分组描述等信息;

用户分组关系单元(tenant_group_user_rel):实现用户分组关系的管理;

数据源信息单元(ds_datasource):实现数据源基本信息的管理,主要包含数据源名称、类型、链接等信息;

数据源分组关系单元(tenant_group_datasource):定义数据源分组关系。

进一步地,所述的租户权限管理系统,所述的综合权限管理单元通过角色类型来对此进行区分用户权限(例如角色类型可以通过role_type定义);用户角色分为普通用户和组合管理员;当角色类型为租户管理员的时候,综合权限管理单元(例如通过字段role_id)存储用户信息模块(sys_tenant)的租户标志tenant_Key的值;当角色类型为普通用户的时候,综合权限管理单元(例如通过字段role_id)存储角色信息模块(tenant_role)的主键id的值。

进一步地,所述的租户权限管理系统,所述的综合权限管理单元通过relation_type字段定义关系类型;关系类型包括App应用、Menu菜单、API、User。例如,relation_type为“1、2、3”时表示item_id字段分别存储对应应用信息模块(sys_app)、应用菜单模块(sys_menu)与应用API模块(sys_api)的主键id;当relation_type为4的时候,此时,表示对普通用户进行角色的分配,item_id字段存储的是角色信息模块(tenant_role)的主键id。

进一步地,所述的租户权限管理系统,所述的用户分组关系单元(例如通过user_id)存储用户信息模块(sys_tenant)的主键id,所述的用户分组关系单元(例如通过group_id)存储分组信息模块(tenant_group)的主键id,以此将用户信息单元(sys_tenant)、分组信息单元(tenant_group)、用户分组关系单元(tenant_group_user_rel)这三个单元进行关联。

进一步地,所述的租户权限管理系统,所述的用户分组关系单元(例如通过group_id)存储分组信息单元(tenant_group)的主键id,所述的用户分组关系单元(例如通过data_source_id)存储数据源信息单元(ds_datasource)的主键id,以此进行分组信息单元(tenant_group)、数据源信息单元(ds_datasource)、数据源分组信息单元(ds_datasource)这三个单元的关联。

进一步地,所述的租户权限管理系统中,租户权限管理系统进行Maven打包后,将会得到一个核心jar包,将核心jar包发布到私服中,在应用系统的pom.xml配置中通过添加依赖的方式,即可完成核心权限包的下载加载;在应用系统servlet.xml配置文件的拦截器中添加核心API权限Bean,即可实现对用户登录应用系统后所具有的API权限进行管理;调用权限API中的queryAllMenuList方法,替换原应用系统的菜单查询方法即可实现对用户登录应用系统后所具有的菜单权限的管理;通过在用户业务查询方法中加入组权限查询的方法(queryAccountListByAccount),即可实现分组业务数据的共享,从而实现总体的一个权限管控。

与现有技术相比,本发明的有益技术效果为:

第一,引入租户的概念,实现一套系统,同一个数据库,无需重复部署,即可实现多家公司共同访问,公司间数据进行隔离,公司内部基于组的概念实现组与组的数据的隔离,用户在操作应用上也实现了权限的管控。

第二,租户权限管理系统包含两个平台,如何处理好系统超级管理员下发权限的管理与公司管理员给普通用户分配的权限管理很重要,为了避免数据的冗余与混乱,本发明只保留一份应用,菜单与API信息,通过一张sys_auth实现对应用,菜单与API权限的管理。

第三,特别的针对众多大数据应用平台,定制化数据源管理方案,以公司管理员创建组的方式,将数据源与组进行绑定,通过对用户进行分组实现分组数据源的共享,做到了数据源使用权限的管理,在某种程度上也实现了数据安全的保障。

第四,对于本发明的实际适用性,普通应用系统可以非常方便快捷的通过接入本发明实现应用系统的权限改造。

附图说明

图1是本发明的一个具体的功能模块图。

图2是本发明的一个具体的设计关系模型图。

图3是本发明的一个具体的系统技术开发ER流程图。

图4是本发明的一个具体的应用接入改造设计流程图。

具体实施方式

实施例1

本发明提供了一种适用于大数据平台的租户权限管理系统,包括租户平台模块、租户后台模块、系统应用模块。

本发明实施例的应用设计可以是Java web的一种应用,后端基于JDK1.8技术,利用Maven构建项目,SpringMVC框架与Mybatis框架结合进行系统权限功能的开发、Zookeeper与Dubbo提供分布式RPC服务,来衔接各个系统的API调用交互,采用MySQL数据库作为项目数据存储查询、Tomcat作为系统部署运行容器、SL4J与Logback作为系统的日志管理;前端主要采用Nodejs、webpack、VueJS与ElementUI等前端框架组件技术进行页面的开发。

本申请的一个具体实施例中,租户平台模块实现公司信息的创建、用户信息的录入、应用信息的创建和应用权限的下发;租户后台模块实现公司管理员根据第一部分超级管理员分配给自己的应用、菜单与API权限,给不同应用创建不同的角色,不同角色之上进行菜单与API的授权,然后在将角色分配给公司普通员工;公司管理员创建分组,将对应员工加入到分组中,同组下数据可见共享,不同组不可见不可享;定制数据源权限的管理,管理员在租户后台可以创建数据源连接,通过与组绑定,实现数据源的分组管理;系统应用模块,将租户后台权限接入到权限管控的应用系统中,实现应用权限的管理。

具体地,租户平台模块包含:

公司信息单元(sys-company):实现公司基本信息的管理,支持公司名称、邮箱后缀等信息;支持用户登录应用系统账号的邮箱后缀进行公司的区分,从而实现不同公司用户的区分。

用户信息单元(sys_tenant):实现用户基本信息的管理,支持用户账号、用户类型(tenant_type字段做区分)、所属公司与租户标志(tenant_Key字段)等信息。

应用信息单元(sys_app):实现管理应用信息的管理,支持应用的名称、描述等基本信息。

应用菜单单元(sys_menu):实现应用菜单信息的管理,支持菜单名称、描述、图标、所属应用等基本信息。

应用API单元(sys_api):实现应用API信息,包括API名称,描述,所属应用等信息。

角色信息单元(tenant_role)。实现应用角色信息管理,包含角色名称、角色描述、所属应用等信息。

通过tenant_company字段存储公司信息单元(sys-company)的主键id进行用户信息单元(sys_tenant)、公司信息单元(sys-company)这两个单元的关联。对应流程图3中的流程01。

通过app_id字段存储应用信息单元(sys_app)的主键id进行应用信息模块(sys_app)、应用菜单模块(sys_menu)这两个单元的关联。对应流程图3中的流程02。

通过app_id字段存储应用信息单元(sys_app)的主键id进行应用信息模块(sys_app)、应用API模块(sys_api)这两个单元的关联。对应流程图3中的流程03。

通过app_id存储应用信息单元(sys_app)的主键id进行应用信息模块(sys_app)、角色信息模块(tenant_role)两个单元的关联。对应流程图3中的流程04。

租户后台模块包含:

综合权限管理单元(sys_auth):维护超级管理员分配给租户管理员的应用,菜单与API相关的权限关系,同时维护租户管理员分配给普通用户的应用,菜单与API相关的权限关系;

分组信息单元(tenant_group)。实现用户分组信息的管理,包含分组名称,分组描述等信息;

用户分组关系单元(tenant_group_user_rel)。实现用户分组关系的管理;

数据源信息单元(ds_datasource),实现数据源基本信息的管理,主要包含数据源名称、类型、链接等基本信息。

本发明通过role_type定义角色类型来对此进行区分,例如:我们规定1为普通用户,2为租户管理员,当角色类型为租户管理员的时候,字段role_id存储用户信息单元(sys_tenant)的租户标志tenant_Key的值,对应流程图3中的流程05。当角色类型为普通用户的时候,role_id存储角色信息模块(tenant_role)的主键id的值,对应流程图3中的流程06;通过relation_type字段定义关系类型。

例如:我们规定1为App应用,2为Menu菜单,3为API,4为User,当relation_type为“1、2、3”时表示item_id字段分别存储对应应用信息单元(sys_app)、应用菜单单元(sys_menu)与应用API单元(sys_api)的主键id,对应流程图3中的流程07、08、09。当relation_type为4的时候,此时,表示对普通用户进行角色的分配,item_id字段存储的是角色信息单元(tenant_role)的主键id。对应流程图3中的流程10。

分组信息单元(tenant_group)。该单元主要管理用户分组信息,包含分组名称,分组描述等信息。

用户分组关系单元(tenant_group_user_rel)。该单元主要管理用户分组关系,该单元的user_id存储用户信息单元(sys_tenant)的主键id,group_id存储分组信息单元(tenant_group)的主键id,以此将这三个单元进行关联。对应流程图3中的流程11、12。

数据源信息单元(ds_datasource)。该单元主要管理数据源基本信息,主要包含数据源名称,类型,链接等基本信息。

数据源分组关系单元(tenant_group_datasource)。该单元主要定义数据源分组关系。该单元的group_id存储分组信息单元(tenant_group)的主键id,该单元的data_source_id存储数据源信息单元(ds_datasource)的主键id,以此进行这三个单元的关联。对应流程图3中的流程13、14。

按功能进行总结,可以把整个流程切分为三个独立的流程,流程01、02、03、07、08、09为应用权限公共部分,公共部分加上流程05构成了超级管理员给租户管理员分配应用权限的总流程;公共部分加上流程04、06、10构成了租户管理员给普通用户进行应用权限分配的总流程,流程11、12、13、14单独构成了用户分组相关权限总流程。

本发明的应用接入改造设计流程图如下:

第一步,租户权限管理系统进行Maven打包后,将会得到一个核心jar包——tenantAdmin-auth.jar,我们会将其发布到私服中,在应用系统的pom.xml配置中通过添加依赖的方式,即可完成核心权限包的下载加载,添加依赖如下:

com.公司名.tenantAdmin

tenantAdmin-auth

1.0.0-SNAPSHOT

第二步,通过在应用系统servlet.xml配置文件的拦截器中添加核心API权限Bean,即可实现对用户登录应用系统后所具有的API权限进行管理,如下所示:

第三步,调用权限API中的queryAllMenuList方法,替换原应用系统的菜单查询方法即可实现对用户登录应用系统后所具有的菜单权限的管理;

最后一步,通过在用户业务查询方法中加入组权限查询的方法(queryAccountListByAccount),即可实现分组业务数据的共享,从而实现总体的一个权限管控。

本发明具有通用性,适用于普通应用系统的权限改造,特别地,也定制化了适用于大数据平台数据源权限的管理粗粒度的进行用户的权限划分,可以分为以下几个用户角色:系统超级管理员,公司管理员与普通用户。首先,系统超级管理员,给各个公司的管理员进行权限的分配;其次,各个公司的管理员在以超级管理员分配给自己的权限,创建不同角色,不同角色赋予不同权限信息;最后,公司管理员将不同角色赋予给公司的员工,员工可以拥有多个角色,从而实现一个总体的用户操作系统权限的管理。

以上对本发明的具体实施例进行了详细描述,但其只是作为范例,本发明并不限制于以上描述的具体实施例。对于本领域技术人员而言,任何对本发明进行的等同修改和替代也都在本发明的范畴之中。因此,在不脱离本发明的精神和范围下所作的均等变换和修改,都应涵盖在本发明的范围内。

相关技术
  • 一种适用于大数据平台的租户权限管理系统
  • 一种大数据平台多租户管理系统
技术分类

06120112456871