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

基于Mybatis实现的多租户数据隔离及脱敏的方法和存储介质与流程

2022-05-26 20:25:25 来源:中国专利 TAG:

基于mybatis实现的多租户数据隔离及脱敏的方法和存储介质
技术领域
1.本发明涉及计算机技术领域,具体涉及一种基于mybatis实现的多租户数据隔离及脱敏的方法和存储介质。


背景技术:

2.sass平台下的多租户数据隔离,指的是每个租户都独享自己的数据,且不能看到其他租户的数据。目前数据隔离的方案大多分为以下几种:1、每个租户拥有独立的数据,数据完全隔离、安全性高,但实现成本高,维护难度高;2、同一数据库不同租户数据存储在不同的表,相对成本低,维护难度较高;3、同一数据库同一表,通过添加字段租户id来区分不同的数据,该方式实现简单、维护成本低,但相比前两种,数据没有做到完全的隔离。
3.对于方案3,在需要数据隔离的表上设置租户标识字段tenant_id,每次查询的时候在sql后面附加一个筛选条件:tenant_id=xxx。这种方案,技术成本低,但是需要开发人员手动在sql后面拼接条件,否则某个租户会获取或修改其他租户的数据,从而导致数据泄露或数据损毁。
4.sass平台下的多租户数据脱敏,是为了避免某些敏感或隐私数据泄露,将查询到的结果数据中敏感或隐私部分进行脱敏,然后再将脱敏后的结果返回给发起查询请求的租户。多租户数据脱敏目前大多根据不同的产品需求,需要进行定制化的开发,比如某个接口返回的部分字段比较敏感,则需要单独的进行脱敏处理,不能灵活的根据不同的用户设置不同的脱敏规则。这种方式本身实现技术成本低,但是缺乏一定的灵活性,需要开发人员针对不同需求调整代码,业务侵入性较强。


技术实现要素:

5.本发明为有效解决上述问题,减少开发人员的工作量,提高系统的灵活性。基于mybatis的拦截器,提出一种灵活、高效的数据隔离及脱敏方案。具体发明内容如下。
6.设置两个决策器,分别为表字段条件决策器和字段脱敏规则决策器。通过这两个决策器完成多租户的数据隔离和脱敏,具体步骤如下:基于mybatis的拦截器拦截所有租户操作请求并解析出sql语句;表字段条件决策器判断表数据是否需要隔离,如果不需要隔离,则直接执行所述sql语句;如果需要隔离,则提取当前租户信息,根据租户信息,自动添加筛选条件,构建新的sql语句,用新的sql语句执行查询;执行结果将首先进入字段脱敏规则决策器,字段脱敏规则决策器判断该租户数据是否需要脱敏,如果不需要脱敏,则直接将查询结果反馈给该租户;如果需要脱敏,则提取该租户的脱敏规则,按照脱敏规则对收到的执行结果进行脱敏,然后将脱敏结果反馈给对
应租户。
7.优选的,表字段条件决策器包含租户隔离字段和需要进行数据隔离的表,主要用于决策某个表是否需要添加某个字段过滤条件。表字段条件决策器依据上述需要进行数据隔离的表判断数据表是否需要隔离,并依据上述租户隔离字段完成数据隔离。
8.进一步的,租户隔离字段可以是tenant_id,也可以按一定的规则自己定义;进一步的,需要进行数据隔离的表,支持正则表达式,比如tenant_*;也支持全名称匹配,比如tenant_user;优选的,字段脱敏规则决策器包括规则生效用户和字段脱敏规则映射,主要用于决策某个查询结果中的某个字段是否需要进行脱敏。字段脱敏规则决策器依据所述规则生效用户判断所述执行结果是否需要脱敏,并依据所述字段脱敏规则映射进行脱敏处理。
9.进一步的,规则生效用户可以是某个租户,也可以是具体的某个角色或者用户;进一步的,字段脱敏规则映射可以依据租户需求进行灵活定义,既可以采用简单的映射,如将手机号的某几位用星号代替;也可以是复杂的成熟的脱敏算法,比如hash算法。
10.进一步的,拦截器基于mybatis的注解,会拦截所有的update,insert,delete,select语句,也包括基于游标的查询querycursor,用于大批量数据的导出操作。
11.通过本方法的实施,可以达到以下效果:提高业务效率:引入全局的数据隔离及脱敏机制,不需要开发人员手动在业务代码上面添加筛选条件或者脱敏处理,提高了开发人员的效率,也从机制上保证了代码的正确性;提高系统灵活性:脱敏规则的可配置性大大提高了系统的灵活性,不需要针对某种特定的场景去修改原有业务代码,在数据展现的层面上,真正做到即配即用,千人千面;降低代码侵入性和耦合性:如果后续针对数据隔离或者脱敏的需求需要进行更改,只需要调整拦截器代码即可,不需要侵入到业务代码进行更改,减少业务耦合,大大提高了系统的可移植性和健壮性。
12.附图说明
13.为了更清楚地说明本实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单介绍,显而易见地,下面描述的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
14.图1为本发明实施例的多租户数据隔离及脱敏方法的工作流程示意图;图2为适于用来实现本发明实施例的一种电子设备的结构示意图。
具体实施方式
15.为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式做进一步的详细描述。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。
16.参见图1,本发明设置有两个决策器,分别为表字段条件决策器200和字段脱敏规则决策器300,通过这两个决策器完成多租户的数据隔离和脱敏。
17.其中,表字段条件决策器200包含租户隔离字段和需要进行数据隔离的表,主要用于决策某个表是否需要添加某个字段过滤条件。表字段条件决策器200依据上述需要进行数据隔离的表判断数据表是否需要隔离,并依据上述租户隔离字段完成数据隔离。
18.字段脱敏规则决策器300包括规则生效用户和字段脱敏规则映射,主要用于决策某个查询结果中的某个字段是否需要进行脱敏。字段脱敏规则决策器300依据所述规则生效用户判断所述执行结果是否需要脱敏,并依据所述字段脱敏规则映射进行脱敏处理。
19.参见图1,本发明的一个具体实施例的步骤如下:步骤101:基于mybatis的拦截器拦截所有租户操作请求,操作请求包括:update,insert,delete,select语句,也包括用于大批量数据导出操作的基于游标的查询querycursor;步骤102:将操作请求中的sql语句解析出来,进入表字段条件决策器200;步骤201:表字段条件决策器200依据所述需要进行数据隔离的表判断表数据是否需要隔离,如果不需要隔离,则直接转至步骤103执行上述sql语句;如果需要隔离,则进入下一步;步骤202:提取当前租户信息;步骤203:根据租户信息和上述租户隔离字段,自动添加筛选条件,构建新的sql语句;步骤103:sql语句执行;步骤104:接收执行结果,并进入脱敏规则决策器300;步骤301:字段脱敏规则决策器300依据所述规则生效用户判断所述执行结果是否需要脱敏,如果不需要脱敏,则转至步骤105,直接将执行结果反馈给该租户;否则,进入下一步;步骤302:如果需要脱敏,则提取该租户的字段脱敏规则映射;步骤303:按照字段脱敏规则映射对收到的执行结果进行脱敏;步骤105:将执行结果反馈给对应租户。
20.进一步的,以上实施例中所述租户隔离字段可以是tenant_id,也可以按一定的规则自己定义;所述需要进行数据隔离的表,支持正则表达式,比如tenant_*;也支持全名称匹配,比如tenant_user;所述规则生效用户可以是某个租户,也可以是具体的某个角色或者用户;所述字段脱敏规则映射可以依据租户需求进行灵活配置,比如手机号字段定义为phone,脱敏规则可以为"^(\\d{3})\\d{4}(\\d{4})$", "$1****$2",以将手机号中间4位数字脱敏处理为“*”。
21.图2为实现本技术实施例所提供的一种电子设备的结构示意图。如图2所示,上述电子设备400包括处理器410、存储器420和总线430。
22.所述存储器420存储有所述处理器410可执行的机器可读指令,当电子设备400运行时,所述处理器410与所述存储器420之间通过总线430通信,所述机器可读指令被所述处理器410执行时,可以执行如上述图1所示实施例中的基于mybatis实现的多租户数据隔离及脱敏的方法,具体实现方式可参见实施例,在此不再赘述。
23.本技术实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时可以执行如上述图1所示实施例中的基于mybatis实现的多租户数据隔离及脱敏的方法,具体实现方式可参见实施例,在此不再赘述。
24.以上为本发明的部分实施例,尽管本发明的内容已经通过上述部分实施例做了详细介绍,但应当认识到上述的描述不应被认为是对本发明的限制。本领域技术人员阅读了上述内容后,对于本发明的多种修改和替代都将是显而易见的。因此,本发明的保护范围应由所附的权利要求来限定。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

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

相关文献