工控网络统一资产管理平台设计和实践

工控网络统一资产管理平台设计和实践

摘要:为了避免网络安全事件的发生,工业生产环境中安装了众多工控安全防护的硬件和软件产品,但是这些工控网络硬件和软件在大多数情况下存在业务隔离的问题。在这种情况下,针对众多的工控网络资产进行集中式统一管理、建立一个统一的资产管理平台显得尤为重要。本文阐述了基于前后端分离模式开发设计的统一工控网络资产管理系统的设计思路和实现方法。实践结果表明,该系统有效解决了网络资产的集中式统一管控问题。

关键词:工控网络;统一资产;平台设计

1引言

随着网络信息化的日益发展,工业和企业的信息化进程也在飞速地向前发展,但是网络信息系统的互联互通也产生了大量的网络安全威胁事件[1]。工控网络安全是工业、企业安全生产的核心,每一次网络威胁事件都会导致非常严重的后果[2]。因此为了应对工业互联网中的网络威胁,众多网络安全管理的产品和软件应运而生,例如:主机卫士、安全审计、保密检查、漏洞挖掘、工控防火墙、工控蜜罐等[3]。这些产品和软件在大多数情况下是业务隔离的,在实际生产环境中针对不同的工控软件资产需要进行分别的管理和使用,非常不方便[4]。因此针对众多的工控网络资产需要进行集中式统一管理,进而建设一个统一的资产管理平台[5]。本文阐述了基于前后端分离模式开发设计的统一工控网络资产管理系统的设计思路和实现方法。

2平台设计原理

2.1平台设计框架

2.1.1前后端分离模式

本文采用了前后端分离的实现方式,后端仅需向返回前端所需的json数据,不再需要渲染html页面。通过nginx进行服务的和转发,可以实现真正的前后端解耦。

2.1.2前端框架

前端采用了国内目前主流的Vue框架。它是一套构建用户界面的渐进式MVVM框架,实现功能时,开发者只需关注视图层,易于上手,还便于和其他第三方组件库整合。本系统还选用了ElementUI和Echarts组件库,可以很轻松实现表格、表单和图表显示的功能。

2.1.3后端框架

后端采用了SpringBoot框架。SpringBoot是基于Java平台上的一种开源应用框架,提供具有控制反转特性的容器。它基于Spring构建,对于开发者来说,具有快速入门的优势。同时它可以创建独立运行的应用而不需要依赖于容器。数据库则选用了Mysql关系型数据库和Redis内存数据库,消息订阅和通知选用了kafka组件。

2.2统一资产建模

资产数据模型基于openapi3.0规范进行设计,使用yaml语言进行资产对象和接口的建模,通过Maven插件openapi-generator-maven-plugin将yaml模型生成包含DTO模型和Restful接口的java代码。此处有点需要特殊说明的是,安装的多个工控软件作为资产的客户端属性处理。统一资产公共字段设计如表1所示。

2.3系统模块划分

2.3.1资产类型模块

资产类型模块,主要是基于资产的主体功能进行分类,同时支持对资产类型的增加、删除、修改和查询的功能。默认的资产类型为终端、交换机、路由器、工控防火墙和工控安全审计。终端:一种管理计算资源的设备,具备承担服务请求、服务提供和保障服务的能力。交换机:一种用于电(光)信号转发的网络设备。它可以为接入交换机的任意两个网络节点提供独享的电信号通路。路由器:连接两个或多个网络的硬件设备,在网络间起到网关的作用,是读取每一个数据包中的地址然后决定如何传送的专用智能性的网络设备。工控防火墙:通过有机结合各类用于安全管理和筛选的软件和硬件设备,帮助计算机网络于其内、外网之间构建一道相对隔离的保护屏障,以保护用户资料与信息安全的工控防护设备。工控安全审计:对工业控制网络流量进行分析与安全监测的审计类工控设备。

2.3.2分组管理模块

资产分组管理模块主要是指对软件资产所属部门组织架构的管理。所有组织架构通过树形结构进行统一的数据封装,通过id和父节点id将树形结构转换为关系型数据在数据库中存储。其中单个组织包含了分组id、分组名称、排序、描述和子分组列表。例如分组管理可以划分为研发部门、销售部门、行政部门、质量部门以及财务部门,其中研发部门又可以划分为研发一部、研发二部和研发三部等。分组管理模块主要用于支持用户对基于职能分组的自定义管理。

2.3.3标签管理模块

资产标签管理模块,主要是为了给资产增加自定义分类的标签,例如用户可以将资产通过标签的形式区分为一楼、二楼、三楼或者笔记本、台式机、服务器等。每个资产都可以配置多个资产标签,在软件管理模块中可以基于选中的标签对资产数据进行自定义的筛选。

2.3.4资产管理模块

资产管理模块为该系统的核心模块,其中基本功能为对工控网络资产的增加、删除、修改、查询、数据导入和数据导出。同时该模块支持客户端资产监测频率下发和客户端资产策略下发的功能。此外,各个独立安装和部署的工控网络设备,通过kafka将设备的网络信息和系统资源信息上报给统一资产服务。其中网络信息包括主机IP、主机MAC、网卡描述、是否开启DHCP、网关和掩码;系统资源信息包括硬盘设备厂商、硬盘型号、序列号和硬盘当前已使用的情况。

3系统设计难点分析

3.1资产ID统一生成

由于该软件平台管控了连接的所有工控网络资产,当客户端需要资产id时,该客户端通过restful接口访问统一资产服务端,统一资产服务端根据资产的属性返回一个uuid作为资产的唯一标识。资产管理服务端新增了一个专门保存资产唯一标识和其特征的表,如果接口中的查询对象在该表中已有其特征信息,则返回该资产数据库中已有的uuid;如果该表中没有该资产的信息,则会创建一个128位的uuid并记入该表后,将id返回给客户端。考虑到虚拟机、docker容器无法获取到终身不变的物理属性,资产唯一性判断对物理机、虚机和docker采取不同的规则,物理机根据硬盘序列号进行判断,虚拟机根据mac地址进行判断,docker容器根据dockerid进行判断。

3.2资产状态监控

用户可以设置监测频率,一般设置为60秒。当每隔60秒后,该客户端资产会将当前设备的各种资源信息CPU使用率、内存使用率、硬盘使用率和网络接口吞吐量上报给统一资产的服务端。由于统一管控的资产设备可能较多,如果资源信息存储到数据库中时,会存在很大的IO性能瓶颈,因此本系统选用Redis内存数据库存储当前资产的各种资源信息,以解决资产数量较多时导致的性能问题。当用户点击资产的扩展箭头,在该资产的下方通过图表的方式显示当前资产的CPU使用率、内存使用率、硬盘使用率和网络接口吞吐量信息,如图2所示。同时资产的在线和离线状态通过该资产是否在一定时间内已向统一资产服务上报信息来判断,例如:如果10分钟内有信息上报,则认为该资产在线,如果10分钟内没有任何信息上报,则认为该资产离线。

3.3策略统一下发

针对统一管控的网络资产,支持各种策略的下发,例如对某个已安装主机卫士软件的资产进行策略下发,在统一资产服务端将策略信息通过kafka转发给该设备。策略下发页面如图3所示。

4结论

针对众多的工控网络资产需要进行集中式统一管理问题,本文设计与实现了一种基于工控网络的统一资产管理系统。该系统解决了在工业互联网中网络资产的集中式统一管控问题,在实际的工业生产环境中具有重要意义。

作者:宋恒嘉 仲伟炜 陈洁 单位:博智安全科技股份有限公司