一种基于动态数据源的项目数据安全访问方法与流程

文档序号:31145466发布日期:2022-08-16 23:27阅读:115来源:国知局
一种基于动态数据源的项目数据安全访问方法与流程

1.本技术属于数据处理技术领域,特别涉及一种基于动态数据源的项目数据安全访问方法。


背景技术:

2.数据管理系统普遍应用于企业产品研发和运营管理数据存储与管控,飞机主机研发单位与成品配套单位之间往往需要基于数据管理系统开展协同研制,在这种跨单位成品协同研制过程中需要严格控制项目间数据知悉范围,为保证不同项目间的数据知悉范围得到有效控制,需要对用户数据访问权限和范围进行严格隔离。当数据管理系统中积累的数据量不断增加时,在保证数据访问范围得到严格控制的条件下,将持续增加系统数据处理负担,造成数据访问效率降低。
3.在以往解决方案中,为了实现上述的需求,有如下两种方式:
4.第一种是在数据库的每张表里添加项目字段做区分。保存数据时,将项目信息记录在业务数据表的项目字段中,然后通过请求的参数进行数据过滤。第二种则是一个项目对应一套项目专用的数据库。采用这种方式时,不同项目的数据存放到不同的数据库中。
5.第一种方式能够在增加新的项目数据时,仅需要对项目权限进行配置,开发成本低,维护工作比较便利。但业务数据都存在同一个数据库下,随着业务数据的增多,会大大降低数据库的性能。其次需要对权限进行严格配置,代码中也必须特别注意对项目字段的过滤。第二种方式涉及的数据库性能得到释放,数据隔离的效果更理想,更安全。但缺点在于增加新的项目时需要搭建新的服务器数据库环境,实施运维成本变高。如果以后对系统配置或者数据表结构进行更改,需要维护每一台服务器,维护工作变得复杂,新项目的上线周期增加。


技术实现要素:

6.为了解决上述问题,本技术提供了一种基于动态数据源的项目数据安全访问方法,能够做到在不影响性能的条件下,提高系统的安全保密级别,减少日后的维护工作,同时能够在不增加服务器的情况下动态的添加新的项目。
7.本技术提供的基于动态数据源的项目数据安全访问方法,主要包括:
8.步骤s1、监听前端系统向后端服务器发送的请求;
9.步骤s2、根据所述请求确定目标数据源;
10.步骤s3、将需要切换的目标数据源以后端服务器可以识别的项目参数的形式添加到被拦截的请求路径中;
11.步骤s4、由后端服务器提取出请求附带的项目参数,若所述项目参数为空,则由后端服务器切换到默认数据库,否则,根据所述项目参数选择对应的数据库连接池,其中,所述默认数据库存储有所有数据源信息,所述数据库连接池为由所述默认数据库中各数据源信息实例化形成的,且保存在后端服务器缓存中,不同数据源信息对应于不同的访问权限。
12.优选的是,步骤s2中,根据所述请求确定目标数据源包括:
13.获取用户在所述前端系统中输入的项目数据,并将所述项目数据放入前端项目参数缓存中;
14.将前端项目参数缓存中的项目数据作为所述请求携带的目标数据源。
15.优选的是,步骤s2中,根据所述请求确定目标数据源包括:
16.确定所述请求对应的业务所处的特定数据库;
17.将所述特定数据库对应的项目数据作为所述请求携带的目标数据源。
18.优选的是,步骤s2中,根据所述请求确定目标数据源包括:
19.确定所述请求对应的路径所指向的数据;
20.当所述数据为非特定数据库数据,则将默认数据库对应的项目数据作为所述请求携带的目标数据源。
21.优选的是,步骤s2中,根据所述请求确定目标数据源包括:
22.确定所述请求对应的功能涉及多个项目,则将目标数据源置为空。
23.优选的是,步骤s4之前,进一步包括:
24.由后端服务器在启动时,查询主数据库获取所有数据源信息;
25.通过dynamic-datasource框架自带的提供者方法,使查询到的数据源信息实例化成数据库连接池并保存到缓存中等待使用。
26.优选的是,步骤s4中,由后端服务器的拦截器监听前端系统发送来的请求。
27.优选的是,步骤s4中,根据所述项目参数选择对应的数据库连接池包括:通过mybatis-plus框架提供的ds注解解析所述项目参数,将所述项目参数转换为数据库连接池能够识别的方式,并匹配与之对应的数据库连接池。
28.本技术基于现有的动态数据源技术,通过对应用系统的前后端做相应处理来实现以上需求。基于数据库底层分离的数据源实现数据访问权限和范围的动态切换,在保证项目间数据知悉范围得到有效控制的条件下,提高了数据访问效率。
附图说明
29.图1是本技术基于动态数据源的项目数据安全访问方法的一优选实施例的流程图。
30.图2是本技术图1所示实施例的数据库启动流程图。
31.图3是本技术图1所示实施例的数据库维护示意图。
32.图4是本技术图1所示实施例的数据库与前台数据交互架构示意图。
33.图5是现有技术中的数据库与前台数据交互架构示意图。
具体实施方式
34.为使本技术实施的目的、技术方案和优点更加清楚,下面将结合本技术实施方式中的附图,对本技术实施方式中的技术方案进行更加详细的描述。在附图中,自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。所描述的实施方式是本技术一部分实施方式,而不是全部的实施方式。下面通过参考附图描述的实施方式是示例性的,旨在用于解释本技术,而不能理解为对本技术的限制。基于本技术中的实施方式,
本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施方式,都属于本技术保护的范围。下面结合附图对本技术的实施方式进行详细说明。
35.本技术提供了一种基于动态数据源的项目数据安全访问方法,如图1所示,主要包括:
36.步骤s1、监听前端系统向后端服务器发送的请求;
37.步骤s2、根据所述请求确定目标数据源;
38.步骤s3、将需要切换的目标数据源以后端服务器可以识别的项目参数的形式添加到被拦截的请求路径中;
39.步骤s4、由后端服务器提取出请求附带的项目参数,若所述项目参数为空,则由后端服务器切换到默认数据库,否则,根据所述项目参数选择对应的数据库连接池,其中,所述默认数据库存储有所有数据源信息,所述数据库连接池为由所述默认数据库中各数据源信息实例化形成的,且保存在后端服务器缓存中,不同数据源信息对应于不同的访问权限。
40.本技术在前端系统上,对向后台发送的请求进行监听,当前端系统向后台系统发送请求时,前端系统会自动拦截到该请求,并将需要切换的目标数据源以后端系统可以识别的参数形式添加到被拦截的请求路径中,并将转发给后端进行处理。
41.在后端服务器上,如图2所示,首先在启动前会指定好一个默认数据库,默认数据库中保存所有数据源的信息,当后端服务器启动时,从默认数据库中读取所有数据源信息,并转换为数据库连接池加入缓存中。同时监听前端系统发送过来的请求,当监听请求时,从该请求中提取项目参数,并与系统启动时加载的数据源信息进行匹配,匹配成功后就会切换到目标数据源。
42.对于后续项目的添加,如图3所示,管理员添加新项目,并且指定数据源信息。后端在接收到请求后,将相关信息保存到主数据源中,并将该数据库创建出来然后初始化必须的业务表。初始化完成后,系统自动通过热加载数据源的功能,将新添加的数据源信息加载进来并转化为数据库连接池缓存起来。
43.需要说明的是,后端在新项目的增加后,自动根据项目的数据源信息初始化数据库,具体为:根据数据源信息通过数据库ddl语句,建立新的数据库实例并且将项目的模板数据库结构信息和初始化数据信息同步到新的数据库实例。项目添加完成后,系统自动将新的数据源实例化为数据库连接池并更新到缓存中。
44.图4给出了由上述后端服务器及前端系统构成的数据交互架构图,本技术前端将请求发送给后端服务器时,携带有项目参数,例如请求型号,后端服务器根据请求的型号筛选使用测试1型号的数据库,或者筛选使用测试2型号的数据库,或者筛选使用测试3型号的数据库。图5给出了现有技术中提及的两种传统方式形成的系统架构,第一种传统方式中,根据请求型号内的字段在后端数据库中筛选对应的数据,第二种传统方式中,在后端设置多个数据库,并对应于前端的不同型号请求。本技术由于实现了动态数据源功能,与第一种传统方式相比,不仅做到了数据按项目安全隔离,也解决了因数据隔离所带来的数据库性能上的问题。与第二种传统方式相比,用一台服务器就可以搞定所有的项目,同时实现了数据源的热部署,新增加项目后也不需要重启服务,同时对跨项目的通用业务数据提供了支持。采用本技术提供的基于动态数据源的数据安全隔离方法,在保证数据管理系统中的数据访问范围得到有效安全隔离控制的情况下,提高了用户对数据的访问效率。
45.前端系统在进行目标数据源切换时,有如下四种可能的场景:
46.第一种是用户切换项目,即主动选择对应的数据源。在该实施例中,首先获取用户在所述前端系统中输入的项目数据,并将所述项目数据放入前端项目参数缓存中;其次,将前端项目参数缓存中的项目数据作为所述请求携带的目标数据源。
47.需要说明的是,该实施例的实施前提为系统提供项目切换的功能,来选择具体需要访问的项目数据,用户选择项目后,系统将该项目的数据暂时保存在前端缓存中,对于一般的请求,系统将前端缓存中的用户选择的项目数据发送给后台。
48.第二种是某些通用的业务数据只存在于特定的数据库中,根据具体业务功能指定目标数据源。该实施例中,首先确定所述请求对应的业务所处的特定数据库;之后将所述特定数据库对应的项目数据作为所述请求携带的目标数据源。需要说明的是,对于通用业务功能,功能请求中已经自带了项目参数,系统直接发送请求的项目参数,而不自动切换用户选择的项目参数
49.第三种是用户未选择,且请求路径对应的数据并不是特定的,系统指向默认的目标数据源。
50.第四种是跨数据源获取数据。该实施例中,确定所述请求对应的功能涉及多个项目,则将目标数据源置为空。在有些场景下,系统不需要对数据进行项目上的区分,而是需要所有项目的数据。比如日程功能,前端需要展示所有项目下与当前用户相关的日程数据,这个时候就不需要指定某个数据源获取数据,而是将所有项目下的数据聚合到一起返回给前端使用。该实施例一般发生在前端系统刚启动时,对于用户刚进入系统还没有选择项目的场景,直接将默认项目参数发送到后台。后台自动切换到默认数据库,默认数据中,通过建立跨库联合视图,将多个数据源的信息合并后返回给前台。
51.在一些可选实施方式中,步骤s4之前,进一步包括:
52.由后端服务器在启动时,查询主数据库获取所有数据源信息;
53.通过dynamic-datasource框架自带的提供者方法,使查询到的数据源信息实例化成数据库连接池并保存到缓存中等待使用。
54.在一些可选实施方式中,步骤s4中,由后端服务器的拦截器监听前端系统发送来的请求,并提取出请求附带的项目参数,判断是否空,如果为空则自动切换到默认数据连接池。如果该请求对应的处理方法包含ds注解,则根据项目参数,从缓存中取出对应的数据源,并切换到该数据源,然后再进行处理。
55.需要说明的是,动态数据源采用mybatis-plus的dynamic-datasource框架,主要用到以下特性:支持数据源分组,适用于多种场景、纯粹多库、读写分离、一主多从、混合模式。支持数据库敏感配置信息加密enc()。支持每个数据库独立初始化表结构schema和数据库database。支持无数据源启动,支持懒加载数据源(需要的时候再创建连接)。支持自定义注解,需继承ds(3.2.0+)。提供自定义数据源来源方案(如全从数据库加载)。提供项目启动后动态增加移除数据源方案。提供本地多数据源事务方案。
56.ds注解是mybatis-plus框架提供的专门用来切换数据源的一种注解,在后端对该注解设置好项目参数的参数名称后,该注解会从前端发送过来的请求中获取带有此参数名称的参数,随后将该参数转发给ds注解专门的处理器,将参数提取成数据库连接池可以识别的方式,并匹配与之对应的数据库连接池。
57.以上所述,仅为本技术的具体实施方式,但本技术的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本技术揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本技术的保护范围之内。因此,本技术的保护范围应以所述权利要求的保护范围为准。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1