分布式下的注解式记忆性脱敏的轻量级框架的制作方法

未命名 09-16 阅读:87 评论:0


1.本发明涉及信息处理技术领域,尤其涉及一种分布式下的注解式记忆性脱敏的轻量级框架。


背景技术:

2.在日常业务中往往需要对用户的敏感信息进行过滤,用于保护用户的个人信息。如今,前后端分离的架构中,当后台返回给前端脱敏后的数据后,前端用于与用户进行交互,在用户处理完数据之后,往往需要将数据返回。而此数据因为包含脱敏数据,所以后台需要把脱敏数据进行还原。
3.其次,在分布式架构中,传统的存储方式已经不能适用,例如在一台服务器中得到的脱敏数据可能又被发送到另一台服务器中。所以要考虑不同微服务之间的通信。微服务是把大型系统拆分成小的模块进行运行,分布式是将不同模块放在不同的服务器中,所以传统的单体服务器架构已经不能满足业务需求,即因不同的业务模块放在不同服务器上,所以对其内部之间的数据调用需要进行设计,以保证通用性。另外,要考虑到信息的保密性又要兼顾信息的可还原性。


技术实现要素:

4.本发明的目的在于提供一种分布式下的注解式记忆性脱敏的轻量级框架,来满足分布式架构下微服务之间以及微服务与前端之间信息传递的保密性,同时兼顾信息的可还原性。
5.本发明通过以下技术方案来实现:
6.一种分布式下的注解式记忆性脱敏的轻量级框架,其包括安全层、持久层和敏感信息存储层;
7.所述安全层在获取前端发出的数据请求后,验证用户身份信息,根据用户身份信息向所述持久层进行数据查询,并获取持久层返回的数据;
8.所述安全层对持久层返回的数据进行脱敏处理,对脱敏处理后的数据以及被过滤的敏感信息选择性地添加唯一标识,将被过滤的敏感信息存储在与用户身份信息绑定的敏感信息存储层;
9.所述安全层将脱敏处理后的数据返回给前端,前端处理完数据后,将数据返回;
10.所述安全层获取前端返回的数据,验证用户身份信息,若数据中存在唯一标识,则根据所述唯一标识调取所述敏感信息存储层中的敏感信息进行数据还原;若数据中不存在唯一标识,则根据用户身份信息唯一对应的实体类来获取脱敏处理前的数据,进行数据还原。
11.在本发明的实施例中,在实体类上添加相关注解,并且在注解中添加自定义参数来自定义所述安全层的脱敏处理方式。
12.在本发明的实施例中,所述脱敏处理方式包括:所述安全层通过将数据中含有注
解的敏感信息用自定义字符进行替换,进行脱敏处理。
13.在本发明的实施例中,所述持久层和所述敏感信息存储层支持redis、mysql持久化方式。
14.在本发明的实施例中,所述敏感信息存储层对入库信息采用对称编码算法自动进行编码,在信息被取出时自动进行解码。
15.在本发明的实施例中,所述轻量级框架采用feign框架。
16.在本发明的实施例中,所述安全层、所述持久层和所述敏感信息存储层为分布式架构下的微服务,通过http协议进行通讯。
17.在本发明的实施例中,为每个微服务进行权限配置,同时为敏感信息定义默认的权限,用于判断微服务是否有权限进行敏感信息还原。
18.在本发明的实施例中,所述轻量级框架采用java反射机制。
19.本发明的有益效果在于:
20.1、所有功能只需要在实体类上添加相关注解,便可以实现相关功能,同时可以在注解中添加自定义参数来自定义处理方式。因为是轻量级框架,只需要导入相关依赖,便可以实现相应的功能。
21.2、将标记字段返回给前端的时候,使用指定的方式进行数据遮盖,前端只会收到脱敏后的信息。
22.3、当前端把数据再返回给后端的时候,后端仍可以把数据还原成脱敏前的数据。
23.4、因为微服务采用feign框架,而feign通讯采用的http协议,那么在内部微服务之间的通讯,可以根据自定义的方式来判断通信之间的数据是否脱敏。
24.5、当信息保存到数据库的时候,自动进行编码,当取出的时候自动进行解码。
附图说明
25.为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
26.图1为本发明实施例提供的分布式下的注解式记忆性脱敏的轻量级框架的交互图。
具体实施方式
27.下面结合附图对本发明的具体实施方式作进一步说明。在此需要说明的是,对于这些实施方式的说明用于帮助理解本发明,但并不构成对本发明的限定。此外,下面所描述的本发明各个实施方式中所涉及的技术特征只要彼此之间未构成冲突就可以相互组合。
28.在软件开发过程中,有很多需要输入用户个人隐私信息进行身份验证的地方,这些信息的保密工作尤为重要,无论是在前端展示还是在数据库存储方面都需要做相应的处理,以确保用户信息不会被泄露。
29.考虑到使用的方便性,本发明提供了一种分布式下的注解式记忆性脱敏的轻量级框架,尤其可以解决分布式架构下微服务之间以及微服务与前端之间信息传递的保密性,
同时兼顾信息的可还原性。
30.本发明轻量级框架的所有功能只需要在实体类上添加相关注解,便可以实现相关功能,同时可以在注解中添加自定义参数来自定义处理方式。因为是轻量级框架,只需要导入相关依赖,便可以实现相应的功能。
31.因为系统是分布式的,所以要考虑不同微服务之间的通信。微服务是把大型系统拆分成小的模块进行运行,分布式是将不同模块放在不同的服务器中,所以传统的单体服务器架构已经不能满足业务需求,即因不同的业务模块放在不同服务器上,所以本发明通过对其内部之间的数据调用进行设计,以保证通用性。另外,要考虑到信息的保密性又要兼顾信息的可还原性,一方面,当微服务对外发送消息时,框架会自动把含有相关注解的信息用自定义字符进行替换,如手机号变成132****7741等,其中的“****”就是自定义字符,也可以用其他字符代替。但是当外部数据返回给后端时,又需要自动地还原成为原本的手机号。微服务采用feign框架,而feign通讯采用的http协议,因为通讯的http协议是无状态的,所以需要保证其用户粘性,这方面的规划尤为重要,本发明对此也进行了设计。另一方面,在信息入库的时候,本发明框架会对自动采用对称编码算法进行编码,在信息被取出的时候,自动对信息进行解码。这些都是框架自动完成的,开发人员只需关注业务、无需在意安全如何实现。
32.对称编码算法,有时又叫传统密码算法,就是加密密钥能够从解密密钥中推算出来,反过来也成立。在大多数对称算法中,加密解密密钥是相同的。这些算法也叫秘密密钥算法或单密钥算法,它要求发送者和接收者在安全通信之前,商定一个密钥。对称算法的安全性依赖于密钥,泄漏密钥就意味着任何人都能对消息进行加密解密。只要通信需要保密,密钥就必须保密。
33.下面结合附图对本发明分布式下的注解式记忆性脱敏的轻量级框架做进一步详细的说明。
34.参阅图1所示,为本发明轻量级框架的一个实施例的交互图。本发明的轻量级框架主要由安全层、持久层、敏感信息存储层构成,由安全层与前端进行交互,持久层和敏感信息存储层作为后端数据库,进行数据存储。其中,安全层、持久层和敏感信息存储层为分布式架构下的微服务,可以设置在不同的服务器中,微服务采用feign框架,通过http协议进行通讯。
35.feign是一个http请求调用的轻量级框架,可以以java接口注解的方式调用http请求。feign通过处理注解,将请求模板化,当实际调用的时候,传入参数,根据参数再应用到请求上,进而转化成真正的请求,封装了http调用流程。
36.本发明轻量级框架的具体实现方案如下:
37.(一)前期搭建
38.1、自定义starter组件,配置启动类,将拦截器,以及序列化注解自动继承到所导入的工程。
39.starter组件是springboot四大核心功能特性之一,starter组件它是以功能为纬度来维护对应jar包的版本依赖的,开发者就不需要去关心这些版本冲突这种容易出错的细节。
40.2、自定义处理方式,用户可以自己指定返回给前端的脱敏方式,脱敏的起止位置
以及脱敏的字符,同时用户也可以自己指定那些字段入库需要编码,与解码,以及传入自定义的编码算法。
41.具体到本实施例中,就是在实体类上添加相关注解,并且在注解中添加自定义参数来自定义安全层的脱敏处理方式。实体类主要是作为数据管理和业务逻辑处理层面上存在的类别,实体对象(实体类的实例)用于保存和更新一些现象的有关信息,例如:事件、人员或者一些现实生活中的对象。实体类通常都是永久性的,它们所具有的属性和关系是长期需要的,有时甚至在系统的整个生存期都需要。本框架中遵循一个用户对应一个实体类的方式。
42.脱敏处理方式包括:安全层通过将数据中含有注解的敏感信息用自定义字符(如“*”)进行替换,进行脱敏处理。
43.(二)数据处理
44.1、安全层在获取前端发出的数据请求后,验证用户身份信息,根据用户身份信息向持久层进行数据查询,并获取持久层返回的数据。
45.2、安全层对持久层返回的数据进行脱敏处理,对脱敏处理后的数据以及被过滤的敏感信息选择性地添加唯一标识,将被过滤的敏感信息存储在与用户身份信息绑定的敏感信息存储层。
46.3、安全层将脱敏处理后的数据返回给前端,前端处理完数据后,将数据返回;
47.4、安全层获取前端返回的数据,验证用户身份信息,若数据中存在唯一标识,则根据所述唯一标识调取所述敏感信息存储层中的敏感信息进行数据还原;若数据中不存在唯一标识,则根据用户身份信息唯一对应的实体类来获取脱敏处理前的数据,进行数据还原。
48.具体地,在把字符串(如“*”)进行替换之后,前端或者其他微服务再把信息返回的时候,当前服务节点仍可以把脱敏的信息进行还原。
49.分为两类模式,一种精准匹配效率高,一种框架根据数据格式进行推断。
50.首先,框架对外输出的数据分为两类,一种是微服务之间的调用,一种是对前端的输出。框架可以通过在配置文件中进行配置,为每个微服务进行权限,同时为信息定义默认的权限。这样信息在发送的时候,可以比对微服务是否有相应的权限来进行信息的还原,只有与信息定义的默认权限一致的微服务权限才能获取还原的信息。
51.在返回给前端的时候,因为http协议是无状态的,无法识别当前的http协议是用户a发出的,还是用户b发出的。要实现用户a与用户b发送相同的请求,得到的响应结果不一样。框架采用两种方式来处理无状态协议中将相同字符串还原成不同的内容。模式一、当后端返回给前端脱敏的消息的时候,同时也会为该数据打上一个唯一标识,这样会根据唯一标识来进行数据的还原。模式二、因为在模式一下前端必须存储唯一标识,这样添加了一个非业务相关的记录,模式二便是解决这个问题,即只返回给前端脱敏后的数据,没有其他任何无关数据。这只是相关功能,同时解决了如下问题:
52.(1)在模式一下,如果唯一标识被窃取,那么便会发生通过唯一标识加上一个毫无意义的****来获取用户敏感数据。为避免这种情况发生,后端匹配唯一标识不是放在全局中,而是在用户的session中。而用户的session获取是在用户身份token中获取对应的,系统支持spring security在内的众多安全框架,所以上述功能得以非常容易的实现。
53.所谓的token,其实就是服务端生成的一串加密字符串、以作客户端进行请求的一
个“令牌”。当用户第一次使用账号密码成功进行登录后,服务器便生成一个token及token失效时间并将此返回给客户端,若成功登陆,以后客户端只需在有效时间内带上这个token前来请求数据即可,无需再次带上用户名和密码。
54.session:在计算机中,尤其是在网络应用中,称为“会话控制”。session对象存储特定用户会话所需的属性及配置信息。这样,当用户在应用程序的web页之间跳转时,存储在session对象中的变量将不会丢失,而是在整个用户会话中一直存在下去。
55.(2)模式二的实现思路是获取源数据必须要在用户验证身份信息下才可以进行,即用户必须有相应的token来证明自己的身份,这样就可以直接从用户对应session获取脱敏前的数据。那么如何对应?本系统采用java反射机制,例如匹配字段,根据字段的名称以及长度来判断哪个实体类最符合当前情况,选择最能够符合当前情况的实体类。那么之后便可以通过实体类来获取session中存储的信息。本功能的实现依赖于业务开发遵循开发规范,一个用户对应一个实体类的方式。如果出现争议,可以采取模式一与模式二混合使用的方式。
56.因为系统是采用分布式的架构,同时要考虑到集群的情况。即不同的服务器都可以进行脱敏信息的还原。那么本框架支持redis、mysql等多种持久化方式(即持久层和敏感信息存储层支持redis、mysql持久化方式)。同时可以通过配置文件配置session之间的共享。(session共享一般在安全层进行配置,不过本框架也对session共享进行了处理,可以通过配置的方式来选择是否开启)
57.本发明是分布式下的记忆性脱敏的注解式轻量级框架,核心功能是返回给前端的数据都是****的格式,且随着用户权限的不同,用户信息返回给后端后,可以自行的将****变成原本的数据,在整个过程中,外部都不会接触到****遮挡的数据。在与其他微服务之间的通讯,也可以通过自定义参数来判断是否脱敏。
58.例如,在代码中开发人员建立完实体类,便交给框架自动封装在response中,由前端进行接收,之后前端再从response中解析出后端返回的数据。这一过程是由服务器框架进行实现的,而本框架对该功能进行拦截。即判断开发人员创建的实体类是否含有注解,以及注解的参数来判断如何封装进入response。从而实现开发人员自定义控制信息脱敏的方式以及详细细节。
59.本发明具有以下优点:
60.1、所有功能只需要在实体类上添加相关注解,便可以实现相关功能,同时可以在注解中添加自定义参数来自定义处理方式。因为是轻量级框架,只需要导入相关依赖,便可以实现相应的功能。
61.2、将标记字段返回给前端的时候,使用指定的方式进行数据遮盖,前端只会收到脱敏后的信息。
62.3、当前端把数据再返回给后端的时候,后端仍可以把数据还原成脱敏前的数据。
63.4、因为微服务采用feign框架,而feign通讯采用的http协议,那么在内部微服务之间的通讯,可以根据自定义的方式来判断通信之间的数据是否脱敏。
64.5、当信息保存到数据库的时候,自动进行编码,当取出的时候自动进行解码。
65.以上结合附图对本发明的实施方式作了详细说明,但本发明不限于所描述的实施方式。对于本领域的技术人员而言,在不脱离本发明原理和精神的情况下,对这些实施方式
进行多种变化、修改、替换和变型,仍落入本发明的保护范围内。
66.从上述内容可以看出,本发明很好地适用于实现上述所有目的和目标,以及其它明显的和该结构固有的优点。应当理解,某些特征和子组合是有用的,并且可以在不参考其他特征和子组合的情况下使用。这是在本发明的范围内。

技术特征:
1.一种分布式下的注解式记忆性脱敏的轻量级框架,其特征在于,包括安全层、持久层和敏感信息存储层;所述安全层在获取前端发出的数据请求后,验证用户身份信息,根据用户身份信息向所述持久层进行数据查询,并获取持久层返回的数据;所述安全层对持久层返回的数据进行脱敏处理,对脱敏处理后的数据以及被过滤的敏感信息选择性地添加唯一标识,将被过滤的敏感信息存储在与用户身份信息绑定的敏感信息存储层;所述安全层将脱敏处理后的数据返回给前端,前端处理完数据后,将数据返回;所述安全层获取前端返回的数据,验证用户身份信息,若数据中存在唯一标识,则根据所述唯一标识调取所述敏感信息存储层中的敏感信息进行数据还原;若数据中不存在唯一标识,则根据用户身份信息唯一对应的实体类来获取脱敏处理前的数据,进行数据还原。2.根据权利要求1所述的分布式下的注解式记忆性脱敏的轻量级框架,其特征在于,在实体类上添加相关注解,并且在注解中添加自定义参数来自定义所述安全层的脱敏处理方式。3.根据权利要求2所述的分布式下的注解式记忆性脱敏的轻量级框架,其特征在于,所述脱敏处理方式包括:所述安全层通过将数据中含有注解的敏感信息用自定义字符进行替换,进行脱敏处理。4.根据权利要求1所述的分布式下的注解式记忆性脱敏的轻量级框架,其特征在于,所述持久层和所述敏感信息存储层支持redis、mysql持久化方式。5.根据权利要求1所述的分布式下的注解式记忆性脱敏的轻量级框架,其特征在于,所述敏感信息存储层对入库信息采用对称编码算法自动进行编码,在信息被取出时自动进行解码。6.根据权利要求1所述的分布式下的注解式记忆性脱敏的轻量级框架,其特征在于,所述轻量级框架采用feign框架。7.根据权利要求1所述的分布式下的注解式记忆性脱敏的轻量级框架,其特征在于,所述安全层、所述持久层和所述敏感信息存储层为分布式架构下的微服务,通过http协议进行通讯。8.根据权利要求7所述的分布式下的注解式记忆性脱敏的轻量级框架,其特征在于,为每个微服务进行权限配置,同时为敏感信息定义默认的权限,用于判断微服务是否有权限进行敏感信息还原。9.根据权利要求1所述的分布式下的注解式记忆性脱敏的轻量级框架,其特征在于,所述轻量级框架采用java反射机制。

技术总结
本发明为一种分布式下的注解式记忆性脱敏的轻量级框架,包括安全层、持久层和敏感信息存储层;安全层在获取前端的数据请求后,验证用户身份信息,查询持久层获取数据,进行脱敏处理,选择性地添加唯一标识,将被过滤的敏感信息存储在与用户身份绑定的敏感信息存储层,将脱敏后数据返回给前端;前端处理完数据后,返回数据;安全层获取数据,验证用户身份信息,若数据中存在唯一标识,则根据唯一标识调取敏感信息存储层中的敏感信息进行还原;若不存在,则根据用户身份信息唯一对应的实体类来获取脱敏处理前的数据,进行数据还原。本发明能够满足分布式架构下微服务之间以及微服务与前端之间信息传递的保密性,同时兼顾信息的可还原性。可还原性。可还原性。


技术研发人员:迟永东 赵瑾瑾 曹良华 全亚中
受保护的技术使用者:上海电信科技发展有限公司
技术研发日:2022.11.30
技术公布日:2023/9/13
版权声明

本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

航空之家 https://www.aerohome.com.cn/

飞机超市 https://mall.aerohome.com.cn/

航空资讯 https://news.aerohome.com.cn/

分享:

扫一扫在手机阅读、分享本文

相关推荐