铁路开发测试云管理平台设计
2020-08-27冯凤娟
冯凤娟,张 彦,司 群
(1.北京交通大学 软件学院,北京 100044;2.中国铁道科学研究院集团有限公司 电子计算技术研究所,北京 100081)
随着网络在政治、军事、经济、生活等各领域的广泛应用,人们的工作、学习和生活方式也随之变化。然而,在信息资源共享的同时也带来了信息安全问题。计算机信息安全已经成为涉及国家战略和国计民生的重要问题,信息安全的重要性已经提升到国家战略层面。
中国国家铁路集团有限公司(简称:国铁集团)、各铁路局集团有限公司(简称:铁路局)为了满足各自业务发展和需要,分别开发了12306互联网售票系统、铁路列车调度管理系统、铁路列车调度指挥系统、铁路列车调度控制系统等许多不同的信息系统。为了保证各个系统的信息安全,防止系统被黑客攻击、系统信息的泄露给国家和个人造成损失,所有的系统在上线前都必须经过严格的安全检测[1]。
目前,国铁集团尚没有统一的开发与测试云管理平台,无法对测试流程和进度进行管控,也无法对各个系统的测试数据进行统计分析,或帮助开发人员进行自助测试,造成铁路全网的开发与测试环节没有形成闭环,资源利用率低,不能实现资源共享,以及开发、测试与部署的统一和规范。
综上,开发一个既能支持开发人员,又能支持测试人员和管理人员的,集开发、测试和管理为一体的铁路开发测试云管理平台具有十分重要的意义。
1 需求分析
本文从不同角度进行铁路开发测试云管理平台的需求分析[1]。
1.1 用户需求分析
(1)从国铁集团和各铁路局的管理角度,平台需要实现按不同维度进行统计分析的功能。
(2)从开发单位的项目规范角度,平台需要实现铁路统建项目和铁路局自建项目的项目开发、部署测试、验收测试、上线部署、安全测试、项目归档6个步骤的全流程协同管理,实现开发与测试环节的有效闭合,规范项目的开发测试流程。
(3)从测评机构的测试角度,平台需要实现网络安全等级保护测试、风险评估、安全检查、源代码安全检查等安全测试的流程管理、测试数据管理,以及测评报告的编制。
1.2 功能需求分析
(1)从资源利用和知识固化角度,平台需要实现知识库管理、Docker容器资源和测试工具资源的申请、审核、分配、监控和回收管理。
(2)从漏洞与补丁管理角度,平台需要跟铁路漏洞消除和控制管理系统实现信息共享和对接,实现漏洞信息上报、管理、消控,以及对应补丁的下载和验证。
(3)从代码管理与版本控制角度,平台需要实现代码上传、拉取等代码的托管功能以及版本控制功能。
(4)从系统管理角度,平台需要实现用户管理、权限和角色管理。
(5)从系统服务支撑角度,平台需要实现微服务治理功能,为基准环境上的所有微服务提供服务注册、服务发现、服务监控和日志管理功能。
(6)从离线测试环境搭建与部署角度,平台需要提供一个仿线上环境的线下测试环境,减少由于线上、线下环境不统一造成的部署问题。
2 平台设计
平台设计主要包含平台总体架构、技术架构、功能架构与网络架构的设计。
2.1 总体架构
铁路开发测试云管理平台根据功能可以分为5个建设系统:全流程协同管理系统,源代码管理系统,离线测试环境,线上部署区域及安全测试系统[1]。图1为该平台的总体架构。
(1)全流程协同管理系统
在铁路开发测试云管理平台上创建一个项目时,需要进行项目开发、部署测试、验收测试、上线部署、安全测试、项目归档6个步骤。该系统专注于研发这6个步骤工作流的整合和统一,支持不同系统之间的数据联动和整合。
(2)源代码管理系统
所有项目代码的统一存储点,实现代码管理、版本管理、仓库管理及持续集成。
(3)离线测试环境
离线测试环境具有完整的云平台管理能力,提供Docker容器的申请、分配、监控和回收等资源管理功能。允许研发人员申请资源部署待测系统,并进行功能和性能测试。离线测试环境为部署的待测系统提供应用防火墙、负载均衡等网络环境管理功能,同时,提供服务注册、服务发现、报警等微服务管理功能。
(4)线上部署区域
线上(生产)环境,包括云环境和物理环境,与离线测试环境实现物理隔离,与离线开发测试系统保持统一规范。
(5)安全测试系统
对线上部署区域和离线测试环境中的系统进行网络安全等级保护测试、风险评估、安全检查、源代码安全检查等安全测试,具备测试准备、方案编制、现场测试、报告编制4个阶段的测试流程管理、测试数据管理、测评报告编制等功能。该系统还具备测试工具的申请、分配、调用、回收管理、知识库管理功能,测试信息的多维度统计分析功能。同时,还可实现对安全测试过程中发现的漏洞的上传,以及对应补丁的下载和验证。
图1 平台总体架构
2.2 技术架构
平台技术架构如图2所示,包括数据存储层、数据访问层、业务逻辑层、控制层、表现层5层架构,同时,包含服务注册与发现、系统授权认证、消息中间件、基准测试环境等辅助技术[1-3]。
图2 平台技术架构
(1)表现层
该层主要使用Vue、TypeScript、Stylus等技术。Vue是一套渐进式的Web框架,通过虚拟DOM算法实现数据和页面的双向绑定,完成高效的数据展示和更新。TypeScript是JavaScript的超集,可以进行类型安全的前端编译,增加代码的可读性和可维护性。Stylus是一种编译成CSS的语言,可以实现复用和函数功能,方便各个组件使用。
(2)控制层
该层使用SpringBoot技术,其配置简单,使得开发者可以将更多的精力放在业务开发上,而不是在框架配置上。
(3)业务逻辑层
该层使用Spring技术,方便业务解耦。Spring的低侵入性设计,对代码污染较低,且可以方便集成Logback、Mybatis等其他框架。同时,Spring AOP支持将一些通用的任务进行集中式的管理,便于代码的复用。
(4)数据访问层
该层使用Mybatis、Redis API、OSS API等技术。Mybatis是一个对象关系映射框架,它将业务逻辑对象与数据库中存储的对象形成映射关系,使编写SQL语句更加方便灵活;Redis API在项目中主要使用的是RedisTemplate,为程序员提供多种操作Redis的API;OSS API用于项目中的对象存储,提供不同的上传文件的API,同时也提供API的下载链接。
(5)数据存储层
该层主要对项目产生的结构化数据、非结构化的对象数据、缓存数据进行存储。为加快查询速度,该层使用Redis缓存技术缓存关键数据。
(6)服务注册与发现
平台使用ZooKeeper+Dubbo技术。Dubbo负责提供系统内部不同模块间的RPC接口,使模块间的调用更加透明、高效;ZooKeeper为服务提供者进行注册服务,暴露接口,供服务消费者发现服务,并完成调用。
(7)系统认证授权
平台使用的OAuth 2.0技术是用于REST/APIs的代理授权框架。该技术基于令牌进行授权,在无需暴露用户密码的情况下,使应用能获取对用户数据的有限访问权限,保证不同权限的角色可以访问到不同的接口。
(8)消息中间件
平台使用RocketMQ,通过消息队列,以基于订阅和消费的方式实现异步处理功能,从而提高系统的响应速度。该技术支持顺序性消费,保证FIFO原则,并且基于长轮询+pull消费消息方式来保证实时性,提供丰富的拉取模式,支持10亿级别的消息堆积。
(9)基准环境
平台使用Docker+Kubernetes的方式搭建的一套仿线上离线测试环境。Docker有利于持续部署与测试,形成可复用的镜像,提高效率。它与底层共享操作系统,性能更加优良,负载更低,具有较高的资源利用率与隔离性,保证应用间不会相互影响[4-5];Kubernetes是一个开源系统,用于自动化、容器化应用程序的部署、扩展和管理,有助于管理Docker容器[6]。
2.3 功能架构
铁路开发测试云管理平台主要由全流程协同管理系统、源代码管理系统、离线测试环境、安全测试系统4部分组成,系统功能架构如图3所示[1]。
(1)全流程协同管理系统主要由项目开发上线6个步骤的流程管理、外部服务调用、数据统计3部分组成。
(2)源代码管理系统主要提供代码的托管功能与版本控制,方便离线测试环境及时拉取部署代码。本文使用GitLab搭建源代码管理系统。
图3 平台功能架构
(3)离线测试环境又称为基准环境,是在线下环境维护的仿线上的环境,用户可以在该环境中申请Docker容器,进行项目部署和测试,减少由于线上、线下环境不统一造成的不必要的错误和异常。
(4)安全测试系统主要提供网络安全等级保护测试、安全检查、风险评估等安全测试的流程管理[2,7-8];实现知识库管理,提供相应的模板信息,提高测试人员的工作效率,促进测试流程规范化;实现对漏洞与补丁的管理;实现不同维度的数据统计分析。
2.4 网络架构
平台采取“一级部署”的架构方式,将所有服务器统一部署在国铁集团数据中心内部服务网的测试接入区中。平台的通信网络安全、边界安全纳入数据中心管辖范畴内。国铁集团、铁路局、开发单位、测评机构4类终端用户通过内部服务网或VPN服务器访问本平台并开展业务。通过平台上部署的堡垒机和防火墙进行边界防护检测,连接到核心交换机后可以进入开发测试云管理平台,通过鉴权服务器进行身份和权限的鉴定,保证开发测试云管理平台的安全性。研发人员、测试人员通过开发测试云管理平台的全流程协同管理系统,根据项目研发生命周期的步骤,自动触发和调用源代码管理系统、离线测试环境、安全测试系统。铁路开发测试云管理平台网络拓扑架构如图4所示[1-2]。
3 平台设计方案效益分析
本文依据平台的设计方案,开发了铁路开发测试云管理平台的原型系统。该平台的建设将大幅提高国铁集团信息系统的信息安全管理能力。平台效益主要体现在以下几方面:
(1)规范安全测试管理流程。将测试人员的经验转换成知识,通过模板库和知识库简化各类人员的使用,提高测评机构的安全测试效率。
(2)提高资源利用率。规范铁路开发、测试与部署的流程,形成开发、测试、部署各个环节的有效闭合和统一管控,保证开发测试与生产环境的统一,减少由于线上、线下环境不统一造成的错误。
(3)提高开发测试效率。提供Docker容器资源、测试工具等资源的统一管理,规范化资源申请、审核、分配、监控和回收的流程,实现资源的整合与共享。
4 结束语
铁路信息安全关系到铁路的安全稳定运行,对我国铁路事业的发展,乃至我国国民经济的发展都有着非常重要的意义。因此,必须加大力度完善铁路信息安全检测,使得信息安全和铁路发展相匹配。通过铁路开发测试云管理平台的建设,可以规范信息安全测试管理流程,提高资源的利用率,实现开发、测试、部署各个环节的有效闭合和统一管控。
图4 平台网络拓扑架构