一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

基于租户的数据隔离方法及系统与流程

2022-12-19 21:52:48 来源:中国专利 TAG:


1.本发明涉及数据安全技术领域,具体地,涉及一种基于租户的数据隔离方法及系统。


背景技术:

2.saas服务供应商将可复用的软件服务部署到服务器上,客户按需购买,通过网络请求获取所需服务。在这种cs模式下,一个普通场景会涉及n个租户使用一套saas服务,为避免不同租户间数据的相互影响,一套基于多租户数据隔离的数据存储方案起到至关重要的作用。


技术实现要素:

3.针对现有技术中的缺陷,本发明提供一种基于租户的数据隔离方法及系统。
4.根据本发明提供的一种基于租户的数据隔离方法及系统,所述方案如下:
5.第一方面,提供了一种基于租户的数据隔离方法,所述方法包括:
6.步骤s1:通过前端和后端约定租户配置,所述租户配置中不同的租户标识对应不同的数据库信息;
7.步骤s2:所述前端请求带上租户标识并放在http协议的header中,所述后端请求通过header获取所述租户标识,保存在线程局部变量中;
8.步骤s3:所述后端继承spring jdbc包提供的abstractroutingdatasource类,重新定义sql执行时获取数据源的方式,根据租户配置对应的租户值获取数据源,并同时处理多库数据隔离和单库 租户字段数据隔离;
9.步骤s4:通过mybatis提供的interceptor机制,拦截statementhandler的prepare方法。
10.优选地,所述步骤s2中请求处理的过程对应单个线程的多个方法,能够复用租户标识,且请求处理完之后需进行清理。
11.优选地,针对所述单库 租户字段数据隔离,通过特殊占位符填充租户字段替换真实的租户值。
12.优选地,所述步骤s3具体包括:
13.步骤s3.1:执行sql时,获取线程局部变量中的租户标识,根据租户配置信息,在缓存中获取所述租户标识对应的数据源,若数据源存在,直接返回数据源;若数据源不存在,执行步骤s3.2;
14.步骤s3.2:通过租户配置中的数据源基础信息,初始化一个新的数据源,保存在缓存中,同时系统针对恶意的请求处理进行拦截,认为是非法请求,需进行日志记录并返回相应的报错提示。
15.优选地,所述步骤s4具体包括:
16.步骤s4.1:通过statementhandler的拦截器,拦截sql的调用,识别特定租户标识,
使用线程局部变量的租户值进行替换;
17.步骤s4.2:通过statementhandler的拦截器,拦截sql的调用,针对所述单库 租户字段数据隔离,识别sql中是否有用到租户字段,对没有用到租户字段的sql进行记录,提示识别风险。
18.第二方面,提供了一种基于租户的数据隔离系统,所述系统包括:
19.模块m1:通过前端和后端约定租户配置,所述租户配置中不同的租户标识对应不同的数据库信息;
20.模块m2:所述前端请求带上租户标识并放在http协议的header中,所述后端请求通过header获取所述租户标识,保存在线程局部变量中;
21.模块m3:所述后端继承spring jdbc包提供的abstractroutingdatasource类,重新定义sql执行时获取数据源的方式,根据租户配置对应的租户值获取数据源,并同时处理多库数据隔离和单库 租户字段数据隔离;
22.模块m4:通过mybatis提供的interceptor机制,拦截statementhandler的prepare方法。
23.优选地,所述模块m2中请求处理的过程对应单个线程的多个方法,能够复用租户标识,且请求处理完之后需进行清理。
24.优选地,针对所述单库 租户字段数据隔离,通过特殊占位符填充租户字段替换真实的租户值。
25.优选地,所述模块m3具体包括:
26.模块m3.1:执行sql时,获取线程局部变量中的租户标识,根据租户配置信息,在缓存中获取所述租户标识对应的数据源,若数据源存在,直接返回数据源;若数据源不存在,执行模块m3.2;
27.模块m3.2:通过租户配置中的数据源基础信息,初始化一个新的数据源,保存在缓存中,同时系统针对恶意的请求处理进行拦截,认为是非法请求,需进行日志记录并返回相应的报错提示。
28.优选地,所述模块m4具体包括:
29.模块m4.1:通过statementhandler的拦截器,拦截sql的调用,识别特定租户标识,使用线程局部变量的租户值进行替换;
30.模块m4.2:通过statementhandler的拦截器,拦截sql的调用,针对所述单库 租户字段数据隔离,识别sql中是否有用到租户字段,对没有用到租户字段的sql进行记录,提示识别风险。
31.与现有技术相比,本发明具有如下的有益效果:
32.1、本发明具备通用性,多租户使用同一套系统,系统的大部分功能适用于各个租户;
33.2、本发明具备灵活性,通过个性化配置,能够适应不同租户的差异和个性化需求;
34.3、本发明具备配置性,对于租户接入信息实现可配置,减少新接入租户时的代码干预;
35.4、本发明的单库租户数据隔离解决方案,通过特殊占位符填充租户字段替换真实的租户值,避免租户参数在整个调用栈的多个方法之间重复处理,实现了最小代码侵入传
递租户参数的效果。
附图说明
36.通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
37.图1为本发明整体结构框图。
具体实施方式
38.下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变化和改进。这些都属于本发明的保护范围。
39.本发明实施例提供了一种基于租户的数据隔离方法,参照图1所示,该方法具体包括:
40.步骤s1:通过前端和后端约定租户配置,不同的租户标识对应不同的数据库信息。
41.步骤s2:前端请求带上租户标识,可以放在http协议的header中,后端请求通过header获取租户标识,保存在线程局部变量中,请求处理的过程对应单个线程的多个方法,可以复用租户标识,请求处理完之后需要进行清理,避免影响下一个线程的处理。
42.步骤s3:后端继承spring jdbc包提供的abstractroutingdatasource类,重新定义sql执行时获取数据源的方式,根据租户配置对应的租户值获取数据源。可以同时处理多库数据隔离和单库 租户字段数据隔离两种方案。
43.具体地,该步骤包括:
44.1)执行sql时,首先获取线程局部变量中的租户标识,根据租户配置信息,在缓存中获取该租户标识对应的数据源,若数据源存在,直接返回数据源;若数据源不存在,执行下一步骤。
45.2)通过配置的数据源基础信息(比如请求确定租户对应的数据库连接地址、端口、账号、密码等),初始化一个新的数据源,保存在缓存中,达到复用的效果,同时系统还需要针对恶意的请求处理进行拦截,比如请求对应不存在于租户配置中的租户值时,认为是非法请求,需要进行日志记录并返回相应的报错提示,提升系统的健壮性。
46.步骤s4:通过mybatis提供的interceptor机制,拦截statementhandler的prepare方法。针对单库 租户字段数据隔离解决方案,通过特殊占位符填充租户字段替换真实的租户值,避免租户参数在整个调用栈的多个方法之间重复处理,实现最小代码侵入传递租户参数的效果。
47.具体地,该步骤包括:
48.通过statementhandler的拦截器,拦截sql的调用,识别特定的关键字,比如select a from employee where zh=

@tenant@’中的@tenant@租户标识,使用线程局部变量的租户值进行替换。
49.步骤s4.2:通过statementhandler的拦截器,拦截sql的调用,针对单库 租户字段数据隔离的解决方案,可识别sql中是否有用到租户字段,对没有用到租户字段的sql进行
记录,提示识别风险,提供系统的健壮性。
50.本发明实施例提供了一种基于租户的数据隔离方法及系统,基于spring mvc拦截器、spring jdbc、mybatis等业界优秀组件的扩展机制,定制一套租户识别机制,通过灵活配置可实现不仅支持一套服务 一套数据库,同时还支持一套服务 多套数据库等两种不同的数据隔离方案。以最小代码侵入性的提供系统级别的租户数据源切换方案,同时提供简易的工具检查db的sql操作是否添加租户字段、统一识别并替换sql操作中的租户字段。本发明会配置一个默认的数据源储存租户相关的配置信息,新增数据源是业务无感的。
51.本领域技术人员知道,除了以纯计算机可读程序代码方式实现本发明提供的系统及其各个装置、模块、单元以外,完全可以通过将方法步骤进行逻辑编程来使得本发明提供的系统及其各个装置、模块、单元以逻辑门、开关、专用集成电路、可编程逻辑控制器以及嵌入式微控制器等的形式来实现相同功能。所以,本发明提供的系统及其各项装置、模块、单元可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置、模块、单元也可以视为硬件部件内的结构;也可以将用于实现各种功能的装置、模块、单元视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
52.以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变化或修改,这并不影响本发明的实质内容。在不冲突的情况下,本技术的实施例和实施例中的特征可以任意相互组合。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献