基于微服务的分布式数据安全整合应用系统
2021-09-26杨舒,苏放
杨 舒,苏 放
北京邮电大学 信息与通信工程学院,北京100876
当前在网络互联和大数据时代,分布式数据的安全整合应用成为一种重要的数据应用方式,得到了广泛的研究与设计。
与传统数据本地应用系统不同,这些越来越多的分布式计算场景往往要求多个大数据节点协同工作,在数据整合、安全应用方面,其面临的主要挑战在于:(1)有多个异构数据源,数据源来自相同领域的不同信息系统,且随着应用的发展,数据源节点的数量及其数据也会产生灵活的变化;(2)由于历史等因素,各节点数据独立设计建设,造成数据分散储存管理,在整合中,其应用平台不同,数据格式不统一、数据处理也有很大的差异性,缺少统一的数据整合接口,造成数据融合共享的困难;(3)更重要的是,这些来自不同节点数据,其数据的不同所有权、使用权和管理权对与大数据环境下的合理安全共享和应用带来了极大的挑战。如何在数据的汇聚应用中,确保数据来源清晰、责权明确、应用有度,保障数据的合法共享和使用是一个重大的挑战。
例如,在图1所示的分布式物联网终端评测平台中,云中心控制节点和各个子测试节点组成一个典型的分布式测试架构,子节点分别完成对不同设备及相同设备不同方面的测试与数据采集,云中心控制节点收集子节点上传的数据,整合数据以及进行数据测试报告生成及数据共享应用。
图1 分布式物联网终端评测平台Fig.1 Terminal evaluation platform for distributed Internet of things
但是,由于历史遗留和本地化数据应用的要求,不同地区、不同部门的子节点数据往往直接地储存在本地,其数据也和中心控制节点的要求有所差别,多个子节点的数据需要整合起来才能供完整测试报告等汇总应用;同时,整合后的数据应用共享困难,由于用户来源不同,所处部门不同,所有的用户不可能都拥有相同的数据访问权限,数据存在访问权限问题,需要对用户实行数据访问控制,控制用户访问数据的能力,阻止数据被用户的非法访问;此外,由于用户大多分布在各子节点中,云中心节点与用户之间也存在信任问题。
在本文中,针对分布式物联网终端评测平台这一类应用需求,设计并实现了基于微服务的分布式数据安全整合应用系统,其创新性为:
(1)在数据整合中,基于微服务架构,设计实现了一个轻量级的数据整合方案,可以进行可视化的数据便捷整合。
在本系统设计中,采用先进的微服务架构[1-2],其思想是将单体架构打散,把原来整体的服务切分成若干个微服务模块;每个服务之间相互独立,服务之间使用轻量级的通信制度进行交流,从而保障数据安全整合应用系统的高可扩展性,其面临节点数量、节点数据的可扩展变化时,只需简便地将对应微服务单元独立进行扩展和修改,避免了对系统整体的影响,并且,这种微服务的架构,使得系统维护升级简单高效。
(2)在数据安全应用中,在数据整合的背景下,基于数据分级与用户角色划分,实现用户对数据的访问控制;采用证书链模型,有效地解决了云中心节点与用户的信任问题和角色分配问题。
1 国内外方案总结和分析
目前,在大数据整合研究方面,学术界已有了相关的一些研究,数据整合的体系结构主要分为三种:数据仓库、联邦数据库和中间件。
数据仓库作为一种应用较为广泛的方法,典型的用法为:将数据源处理后再统一地进行保存,使用的策略是ETL[3](Extract、Transform、Load),从异构数据库中抽取出所需的数据,经过数据清洗等系列操作后,按照预先制定好的数据模型,将数据加载保存到数据仓库中。在文献[4]中使用了该方法,但是针对不同数据源结构之间差异性较大的问题,整合效果不是很好,可扩展性也不强,同时,由于事先需要制定数据整合的标准,操作繁琐,前期准备周期长,而且一旦数据整合的需求发生变化,就要重新指定对应的模板与标准,无法实时地对数据进行更新整合。
联邦数据库采用数据联邦技术,数据在逻辑上保存在同一个位置,但是实际上可能储存在多个异构数据源中。在文献[5]中最先定义了联邦数据库系统,避免了数据仓库方法的数据复制,节约了数据储存的额外空间,但数据仍然是异构的、数据查询缓慢、集成度高,构建的全局数据模式算法设计复杂、没有通用性、扩展性较差。
中间件技术在不同的异构数据源和数据应用之间提供了一个统一的访问数据的接口。在文献[6]中使用中间件系统,依赖于中介模式和数据源模式的映射,以XML作为数据交换的格式,虽然查询方便,无需额外地储存,但前期需要花费时间制定XML数据模板,当数据量较大时候,数据传输中间件XML体积变大,开销高,数据查询的效率会变低。
在面对本文所述的物联网终端评测平台这一类的分布式系统时,需要将各子节点的数据整合、保存后才可以供使用,联邦数据库和中间件这两种数据整合的方式通用性不强,前期需要消耗时间去准备相关的算法、中间件模板,同时,并没有将整合后的数据进行统一的保存,这种虚拟形式的数据整合并不适用本文的应用场景,但传统的数据仓库技术又没有很好地解决对差异性较大的数据源的整合,也不能满足数据整合实时性的要求,其可扩展性、灵活性也存在明显不足。此外,这样的数据整合中,并未考虑到数据整合的安全性需求,没有很好地解决数据整合后的安全应用共享问题。因此,本文设计并实现了一种数据安全整合应用系统,无需预先制定数据整合的模板,对不同系统的适应性强,扩展性好,并采用可视化的整合界面,灵活、实时地进行数据便捷整合,并采用证书链模型,通过数据分级与角色划分来保证整合后数据的安全应用共享。
另外,必须指出的是,当前,采用数据仓库等手段设计的传统数据安全整合系统大都是采用单体系统设计,其系统扩展性较差,系统部署困难,系统维护成本较高,而且为了保证数据整合的效率,常直接将系统整体扩展到多个服务器中,但是,实际应用中,并不是所有的业务都需进行扩展,导致了资源浪费。
近年来,已有一些采用分布式结构的数据整合系统,在文献[7]中,将系统中的各个模块分别部署到不同的服务器中;在文献[8]中,采用自定义的注册中心,解决了分布式模板之间的通信问题。但是,这些分布式的系统,并没有将系统微服务化,模块之间耦合性仍然较强,在进行业务扩展的时,仍面临着传统单体架构中扩展性差的问题,同时也没有合适的负载均衡策略与容错机制。2014年,Fowler在文章《Microservices》[9]中首次提出微服务架构,以“职责单一”为指导,将系统拆分成各个单一的微服务,各服务功能单一,边界清晰,服务之间耦合性低,有利于敏捷开发与快速部署;微服务架构中集成了不同的负载均衡的策略,并提升了系统的容错性,服务之间相互的隔离,一个服务出错,并不会影响到其他微服务的运行;面对系统扩展与修改时,只需要将对应的微服务进行扩展,扩展便捷,成本相对较低。因此,本文基于微服务架构来搭建分布式数据安全整合应用系统,在降低系统耦合性、系统按需扩展、敏捷开发和快速部署方面,适应当前分布式数据安全整合的需求,具有明显的优势。
2 基于微服务的分布式数据安全整合应用系统
基于Spring Cloud[10]微服务的分布式数据安全整合应用系统整体框架图2所示,其核心服务分为两个系统:数据整合子系统与数据安全应用子系统。
图2 基于Spring Cloud微服务的分布式数据安全整合应用系统整体框架Fig.2 Distributed data security integrated application system framework based on Spring Cloud
数据整合系统对子节点上传的数据进行预处理,采用轻量级的可视化数据整合的方法,在云中心节点按照用户需求将这些相互关联的分布式异构数据源整合在一起,屏蔽了底层各子节点之间数据源的差异,使得用户可以以透明的方式访问这些数据。
数据安全应用系统基于数据分级与用户角色划分和证书链模型,实现了用户对数据的访问控制和安全应用。
在系统中,Eureka框架组成服务注册中心集群,提供服务端发现功能,便于实现微服务之间的交互。Eureka客户端,即其他的微服务,通过向Eureka服务端注册,提交自身的元信息并保存在服务端,Eureka客户端获取通过服务端的注册表的信息来查找其他的服务,完成微服务之间通信与交互。
Ribbon是一个负载均衡器,用来管理用户对大数据服务的调用。
Hystrix是熔断器,在分布式环境中,不可避免地会出现一些错误,如果不进行处理,会导致整个服务的崩溃,Hystrix通过添加一些容错逻辑停止服务之间的级联故障与提供故障后的预备选项来提高系统的整体的弹性。
Zuul是微服务的网关,是用户请求服务的统一入口,用来提供智能路由、过滤用户的请求。
用户发起访问数据请求时,由Zuul提供智能路由、过滤访问请求,通过Eureka服务注册中心完成微服务之间通信交互,Hystrix熔断器与Ribbon负载均衡器用来提高整个系统的访问弹性。
本系统的主体功能在数据安全整合应用服务,包括了数据整合子系统与数据安全应用子系统,这两个子系统根据微服务化的理念设计,每个子系统进一步划分为多个微服务组件功能,具体的服务划分将分别在下面章节进行介绍。在系统微服务化中,一个微服务只专注于一个类或一个分析,服务之间通过松耦合方式连接,从而保证微服务组件的独立性和完整性,调整或升级一个服务不会影响其他的微服务,从而保障系统的可扩展性等性能。
3 数据整合子系统的设计与实现
数据整合子系统接收每个子节点传输的异构数据,对数据进行预处理;在可视化平台上,无需事先定义数据整合模板,就可以根据实际需求对异构数据进行数据整合。
如图3所示,数据整合系统被划分成了三个独立的微服务。
图3 数据整合子系统Fig.3 Data integration subsystem
(1)数据预处理微服务:接收子节点上传的数据,并对数据进行预处理。
数据接受模块接受各个子节点传输的异构数据,并做安全检查,通过数据签名验证[11],保证数据来源正确和数据的完整性。
数据处理模块对接受的数据进行预处理,使得数据可视化微服务可以专注于自身的业务,确保高效的数据整合。其主要功能如下:
数据解密:为了保证数据由子节点传输到中心节点的过程中不被窃取,对数据进行了加密传输,在数据预处理时,首先要对数据进行解密。
数据清洗[12]:清除数据中的重复、无效的数据,减少数据量,便于后续数据的存储和数据整合。
自定义预处理:提供插件机制,可以根据整合的数据自定义数据预处理的方法,提高系统的灵活性与通用性。
异构数据经过预处理后,根据来源的不同,将数据储存在异构数据集群中,并实施必要的数据备份,供数据整合使用。
(2)数据语义转化微服务:将本地子节点的数据语义格式转换成云中心的标准格式。
语义转化模块主要是对数据中的一些值进行统一的“翻译”,将子节点的原始数据的一些值转换成云中心的标准格式。
例如:在物联网终端测试平台中,记录数据的同时也记录了数据产生的时间,不同的子节点使用的时间的格式可能不是完全一样的,可以使用语义转化模块,将时间信息转化成统一的格式,方便对数据的管理与查看。
知识库与语义转化模块结合使用,知识库中储存了云中心数据的标准格式,定义了数据处理的规则,辅助完成语义转化功能,影响语义转化的结果。知识库管理模块主要负责对知识库的管理,用户可以上传、更新、删除知识库。不同的数据整合系统可以根据实际的需要,利用知识库管理模块上传各种补充资料,提升异构数据源语义转换的效率和正确率。
(3)可视化数据整合微服务:通过可视化的平台进行数据整合。
可视化数据整合的步骤如图4所示。
图4 可视化数据整合步骤Fig.4 Steps of visual data integration
图5展示了应用数据整合子系统,进行物联网终端评测平台数据整合的工作示例。
图5 数据整合示例Fig.5 Example of data integration subsystem
如图5中所示,现需整合子节点1、子节点2的数据,记录不同设备的能耗数据,两节点分别将物联网测试设备信息与设备能耗数据上传给云中心节点,数据预处理微服务首先对数据进行预处理,将处理好的数据保存在异构数据集中,供数据整合使用。
为了保证数据整合的安全与数据权责可追溯,需要对用户进行登录验证,只有身份验证成功的用户才可以进行数据整合。
用户登录成功后,首先在可视化平台上选择这两个表,并指定两个表之间的关系从属关系。
接下来,设定整合表的安全等级,安全等级的分类参见GB/T 34080.2-2017[13]中的数据安全保护分类方法。
然后,自定义数据整合模板,整合表中的某一字段是否显示、字段名称都可以由用户自定义;并且通过数据语义转化微服务中知识库所储存的云平台时间格式标准将各节点测试时间转化成统一的数据格式。
数据整合完成后,用户可以预览整合后的数据,如果满足需求,记录数据整合的操作用户,再使用数据签名的方式将整合数据发送到数据安全应用系统;否则,重新定义待整合数据之间的关系。
4 数据安全应用子系统的设计与实现
4.1 基于角色的数据分组访问控制
在分布式数据整合安全应用平台建设中,仅仅通过对数据进行安全等级划分来保障数据的安全应用显然是不够的。例如:在物联网终端评测平台中,如果仅根据数据安全分级来划分用户的等级,那么对于相同等级的数据,对应等级访问权限的用户就可以访问该等级的全部数据。但是,由于用户角色的多样性,实际应用中,同等级的数据并不该被拥有该数据等级权限的所有用户访问,这种单一的权限划分方式显然满足不了实际需求。
因此,在数据安全应用子系统的设计中,采用GB/T 34080.2-2017的数据安全保护分类方法,进行数据安全分级划分。并在此数据分级的基础上,提出了基于角色的分组访问控制,将访问权限与角色绑定,用户通过分配角色来获取访问权限。并采用证书链的方法,实现角色的分配管理。
基于角色的分组访问控制划分如图6所示。
图6 基于角色的访问控制Fig.6 Access control based on user role division
角色实际上就是一组数据权限的操作集合。如在物联网终端评测平台中,测试人员的操作集合为{test1,test2},安全人员的操作集合为{security1,security2},如果新加入一名员工,赋予该员工的角色为测试人员,那么该员工就可以访问test1、test2两个数据。一个用户被赋予一个角色,就拥有此角色对应访问权限。一个角色通常对应多个数据访问权限,一个权限可以由多个角色拥有;一个用户可以分配多个角色,一个角色可以分配给多个用户。当数据的权限发生变化的时候,直接对数据库中的角色权限进行更新就可以满足需求,基于角色的访问控制可以实现用户权限的灵活划分,且操作方便快捷,高效地解决了分布式数据安全整合应用系统中由于部门分散,用户较多带来的数据按需共享的问题。
4.2 基于数字证书链模型的用户角色管理
使用数据分级和用户角色划分来进行访问控制,如何实现用户角色划分以及如何确定用户拥有的角色是实现访问控制的关键,也是分布式大数据整合应用的难点。实际应用中,如果采用在云中心进行统一角色划分的方法,不仅会增加云中心节点的压力,而且由于云中心节点对子节点具体的用户业务角色不甚了解,且子节点中的角色也往往会根据需求发生变化,因此,其角色划分的准确性难以保证,且缺乏必要的灵活性。本文中,采用基于证书链[14]的方案进行用户角色划分管理,由各个子节点单独进行本节点角色的划分,然后统一地保存在云中心节点的角色权限数据库中。具体实现方式如图7所示。云中心节点首先将各个子节点拥有的数据权限告知子节点并将分配给子节点的数据权限保存在数据库中;然后,在由子节点进行角色权限的划分,将划分的结果保存在数据库中。
图7 子节点角色权限划分Fig.7 User role division in child nodes
如果子节点的业务复杂,为了进一步缓解划分角色的压力和提高角色划分的准确性,子节点还可以将持续划分角色的权限再下发给子节点下的“节点”;权限下发给“节点”后,仍可以根据实际的需求再进行权限下发,形成一种链式的角色划分体系,这种划分方式不仅减轻了云中心节点的业务压力,由于划分“节点”更了解本节点的角色组成,划分角色的“节点”还可以根据实际需求向下衍生,保证了划分的准确性、灵活性和实用性。
同时,网络信任是数据安全应用需要解决的问题[15],由于用户大多分布在子节点,云节点对用户不了解,对其缺乏信任,用户在申请数据访问时,云中心节点首先需要确认用户身份是否有效,信任认证通过后,用户才可以访问数据。
本系统中,使用证书链技术来管理用户角色,使用数字证书赋予用户的角色身份,通过数据证书认证来解决信任问题,数字证书由位于云中心节点的证书认证中心(Certificate Authority,CA)进行统一的签发,本文采用X.509 V3[16]作为证书的格式,将用户的身份信息与用户公钥绑定,通过CA的公钥签名后生成证书,用户访问数据时,通过对用户证书中的CA签名进行认证来解决信任问题。采用证书链模型,对用户证书使用子节点证书签名,用子节点数据签名标记用户所属的节点,便于云中心节点进行在角色权限数据库中查找对应的权限,形成了基于证书链模型的用户角色证书体系,如图8所示。
图8 基于证书链模型的用户角色证书体系Fig.8 User role certificate architecture based oncertificate chain model
云节点CA的证书通过自签名生成,是绝对可信任的;系统中的子节点证书和用户证书都是由云节点CA签发的。用户申请证书的流程如图9所示。
图9 用户申请证书流程Fig.9 Process of user certificate application
子节点的证书签发和用户证书签发的流程相似。CA签发用户证书后,先发送给子节点,由子节点进行签名后再发送给用户。使用子节点证书签名的好处在于:一是使用户证书的签发涉及到的权责更小化,方便进行权责的追溯;二是用户在访问数据时,子节点的签名用于云中心节点在用户角色权限数据库中查找其对应的权限。
4.3 数据安全应用子系统
基于证书链模型的用户角色权限划分,数据应用安全子系统架构如图10所示。
图10 数据安全应用子系统Fig.10 Data security application subsystem
(1)证书认证中心(CA):绝对可信任的机构,是证书链的基础。
证书签发:CA首先向KMC申请密钥,接着获得从KMC传来的一对密钥,将公钥、用户个人信息和用户角色放入证书中,使用CA的公钥进行证书签名,将证书保存一份在证书目录服务器中。同时,通过数据签名的方式将证书传输给申请的子节点。
证书注销:将需要注销的证书从目录服务器中移除。
证书更新:用户的角色改变时,需要证书更新,首先注销证书,更新的其他流程和证书签发的流程一样。
签名验证:通过CA私钥对用户证书中的CA签名进行验证,判断证书是否有效。
(2)密钥管理微服务(Key Management Center,KMC):用于证书链中的密钥管理。
密钥生成:使用RSA[17]、SM2[18]、SMAE[19]三种算法生成密钥,生成的密钥要具有唯一性,保存在密钥储存中心。
密钥分发:提取密钥储存中心的密钥,分发给CA,密钥不可以重复的使用,密钥分发时使用数据签名的方式,确保密钥在传输过程中的安全。
密钥储存:用来储存生成的密钥,需要加密保存在密钥储存中心,用于加密的密钥只有KMC可用。密钥储存有两个用处:当用户的私钥丢失时可以,可以申请重新获得;可以在空闲的时候生成密钥保存,减轻系统因证书申请时的并发压力。
密钥撤销:删除密钥储存中心中需要撤销的密钥。
密钥更新:用于更新证书中的密钥,首先需要撤销旧的密钥,再分发新的密钥供证书使用。
(3)数据签名认证微服务:使用数据签名认证,保证由数据整合系统上传的数据来源的正确性以及数据不被篡改。
(4)加密/解密微服务:加密/解密储存在整合数据储存云平台中的数据。
解密模块用于解密用户有权限访问的数据信息,只有有权限访问的用户才会进行相应数据的解密。
加密模块有两个用途,一种是针对整合数据的等级,采用对应的加密算法[20]进行数据加密,保证数据的分级需求与存储安全;另一种是使用访问用户的证书中的公钥对数据进行加密,在将加密后的数据传给用户,只有用户对应的私钥才可以解密数据,保证了数据在传输过程中不被窃取。
(5)用户权限验证微服务:鉴定用户的证书是否有效,验证用户数据访问权限。
证书验证模块:首先检查用户上传的证书是不是由CA进行签发的,然后在证书目录服务器中查找证书,确认证书目前是否有效。
权限验证模块:通过证书上子节点的签名,确定用户来源于哪个子节点,然后去角色权限数据库查找对应子节点的角色权限,判断用户的角色是否可以访问所申请的数据。
(6)用户访问记录微服务:记录用户的访问信息,保证用户访问的可追溯。
记录了用户对数据所有的访问信息,方便追溯用户的操作,保证用户对数据操作的不可抵赖性。
用户访问数据的流程如图11所示。
图11 用户访问数据流程Fig.11 Steps for users to get data
5 系统效果展示
对数据安全整合应用效果进行了系统展示,系统使用基于Spring Cloud微服务架构搭建。
数据整合子系统的展示如图12(a)、(b)、(c)、(d)所示,系统操作方便、灵活,无需预先定义好整合的模板,直接可以进行可视化的数据整合操作。
图12 数据整合子系统展示界面Fig.12 Show of data integration subsystem
在数据安全应用子系统中,用户申请数据访问时,首先需要进行用户登录,用户登录界面如图13所示,用户需要输入账号与密码,还要上传用户所拥有的数字证书,供云中心平台验证用户身份与权限。
图13 用户登录界面Fig.13 UI of user login
用户登录成功后,申请数据访问,如果用户验证通过,使用XML进行数据封装,并用用户证书的公钥对封装后的数据进行加密传输,如图14所示。
图14 数据加密传输Fig.14 Encrypted data transporting
对于数据在前端的展示,如果用户有权限访问数据,用户接收到数据后,使用证书所对应的用户私钥在后台解密数据,解密后数据显示在前端,供用户查看,如图15(a)所示;如果用户权限验证失败,即没有所申请数据的访问权限,云中心节点将拒绝用户的访问申请,前端将信息反馈给用户,如图15(b)所示。
图15 用户访问数据前端展示界面Fig.15 UI of user visiting data
6 结束语
针对分布式系统中的数据整合安全应用的需求,结合物联网终端评测平台,设计实现了一个基于微服务的应用系统,包含数据整合子系统与数据安全应用子系统。在系统设计中,将系统功能微服务化,微服务之间相互解耦,从而满足应用平台的高可扩展性和运维、部署便利性。在数据整合安全应用中,设计并实现了一种轻量级的数据整合系统;同时,针对实际需求,采用结合数据分级与用户角色划分的方法,实现了用户对数据的访问控制,使用数字证书赋予用户身份信息,采用证书链模型,进行角色分配管理,使角色分配更准确、灵活,也缓解了云中心节点分配角色的压力,具有较好的实用性。