郑尚卓,李学韬,王 雷,王 磊,恽 珺
(1.国网区块链科技 (北京) 有限公司,北京 100053;2.国网北京市电力公司,北京 100053;3.国网北京市电力公司信息通信分公司,北京 100053)
容器技术是将系统具备的资源划分至独立的组内,使其成为存在边界、运行资源可配置,具备独立文件系统的进程集合,并以容器为单位运行。容器可有效整合系统资源,使划分的资源得到最优配置,达到不同程序并行运行的效果。容器云依托云计算资源,将容器部署在云端,以容器的逻辑划分云计算资源。随着容器技术的普及,越来越多的企业开始使用容器云平台。容器云平台是将容器和容器配置功能部署云端,以云端资源部署对应的容器,以云计算管理后台实现对容器的控制、维护和操作。容器云技术为各行各业带来极大便利的同时,也产生了较多的容器云安全问题,如:容器云存在安全漏洞,云端容器无法被监控,容器与容器之间缺乏结构化数据管理模式,云端容器的使用生命周期无法被永久记录等。
容器技术发展历史长达20 年,经历了从Unix chroot,FreeBSD Jails,Linux VServer,Solaris Containers,Open VZ,Process Containers,LXC,Warden,LMCTFY,Docker,Rocket 到Windows Containers 的发展过程,技术发展日益成熟。Windows Containers 是一种部署在云端的可在Windows 和Linux 环境下运行的容器技术,Containers 提供了轻量级且独立的环境,可以方便地部署、取消和管理应用,且Containers 的运行速度较快。
2013 年Docker 容 器 引 擎 以 及2015 年Kubernetes 容器编排技术的开源,推动容器技术在全球范围内受到广泛关注。从技术角度看,我国的容器市场已发展得较为成熟,在目前的公有云市场上容器已经广泛地覆盖了20 %~35 %的虚拟化应用。预计到2025 年容器云将会增长50 %~75 %,基于容器的私有云系统平台市场规模将会超过60亿元,我国容器云市场将继续保持高速增长。在容器云市场保持高速增长的同时,也应该注意到容器云安全问题日益凸显,建设配套的容器云安全防护应用势在必行,应用区块链技术以云端资源构建区块链平台,通过建设虚拟化云端区块链应用实现对容器的监控和容器生命周期管理,对于助力实现容器云平台的安全效率提升有促进作用。
区块链是以节点为基本组成单位,通过共识机制组网的分布式网络,数据以区块的形式存储,区块与区块首尾相连,呈链式数据结构。现阶段,区块链技术的核心应用功能为存证和溯源,区块链技术具有上链数据不可篡改的特性,数据上链后可永久在链上保存,数据在不同节点之间同步。组成区块链系统的节点形式应具备数据处理、存储的基本功能,同时支持匹配共识算法、可进行多节点组网。节点的形式为实体化物理节点,也可依托云端资源生成虚拟化节点。实体的物理PC 机或服务器,虚拟化的云服务器、容器均可作为区块链系统的节点。
容器云平台可根据承载的资源配置对应数量的容器,生成的容器可根据配置的容器性能及参数进行设定,云计算平台因存在资源设定的上限,因此基于云端的容器生成也存在数量设定的上限值。首先将云端资源进行划分,产生标准化的容器类别,以容器为节点依托共识机制组网生成运行在云端平台的区块链系统。基于云端资源搭建的虚拟化区块链系统可面向云端的容器应用进行监控和数据分析,辅助容器云安全管理。
区块链系统的网络架构分为网络层、共识层、数据层、智能合约层和应用层五个层次。网络层是实现节点之间数据有效交互的基础,共识层的功能是整合区块链系统计算资源促进节点之间的协同计算,数据层以实现链上数据传输、构建链上“交易”数据为主要功能,智能合约层是部署链上代码的实现层,应用层是执行具体区块链业务的功能层。五个功能层相互协同,实现区块链系统从底层平台到具体业务应用落地的全流程。以容器为节点构成的区块链应用满足以上五个功能层的条件,即具备区块链的基本功能。现阶段,市场中较为通用的公有链应用——比特币和以太坊,国内较为知名联盟链应用——蚂蚁链、京东链、百度超级链等,两种类型的区块链应用均需要节点组成基本的区块链网络,节点分为物理节点和虚拟节点,其中以容器为节点属于虚拟节点的范畴。
(1) 网络层为基于P2P 协议用于节点之间传输交易数据和区块数据。国家电网的区块链底层平台的P2P 传输协议基于TCP 协议实现。区块链网络中的节点可同步整条区块链上的所有区块数据,当区块链产生新的交易或打包新区块时,区块链网络通过验证签名的形式对新生数据进行验证,验证通过区块链网络将会处理这批新生成的数据。
(2) 共识层为通过特定的区块链算法整合全网节点同步计算,保证节点之间的数据同步,共同计算以验证目标结果。在区块链网络对节点数量的允许范围内,网络中的节点可实时断开网络或重新加入网络,而不会影响区块链系统的整体运行效率,以国网链为例,国网链是服务电网体系的联盟链架构网络平台以拜占庭容错作为共识算法,该算法要求n>3f+ 1,即占全网数量1/3 以下的节点发生错误或断开区块链网络,不会对网络的整体稳定性构成威胁。
(3) 数据层为区块链系统处理链上数据的计算层,区块链上进行的数据交互的形式一般以交易的形式完成,区块链上执行完成交易后可将交易打包为区块,区块之间以梅克尔树的形式实现连接。链上发生的每笔交易均记录在区块内,每两个哈希会折算为一个总哈希,每两个总哈希再次折算为上一层的汇总哈希码,最终单一区块内的所有哈希值以结构化的形式汇总为梅克尔根。单一区块分为区块头和区块体,区块体以梅克尔树的形式存放哈希数据,区块头包含的数据为梅克尔根、上一个区块头哈希、版本号、时间戳、随机数,上一个区块头哈希是连接当前区块之前的文件索引,版本号为当前区块链系统的版本号(区块链系统存在因升级迭代而导致版本号不同的现象),时间戳为区块生成的具体时间标识,随机数是节点之间进行算力竞争的过程中需要求解的数学结果。
(4) 智能合约层是在区块链系统上部署的智能合约执行合约逻辑的区块链运行层。智能合约是一种将算法和程序代码与区块链相结合,实现代码程序上链。智能合约编写的程序具备自动执行、不可篡改的特性,智能合约在不同用户之间进行合同约定,在数据分发方面具有自动化执行的优势。区块链技术实现了数据的多节点备份、去中心化存储,智能合约实现了区块链技术的去中心化计算。比特币脚本是嵌入在比特币交易上的指令,功能局限在比特币账户之间的交易。以太坊是区块链智能合约领域的首创应用,以太坊的智能合约编码程序被定义为“chaincode”,应用智能合约编写的以太坊程序具备图灵完备的脚本语言。区块链智能合约可通过节点进行程序代码编写,其后代码信息在全网同步以实现智能合约的全节点升级。以容器作为区块链节点的也可通过容器部署智能合约,以单一容器节点为切入点进行程序升级,向全网的容器节点同步数据。
(5) 应用层是以区块链底层平台为支撑,基于区块链系统搭建的实现具体业务目标的区块链应用。现阶段的区块链应用主要集中在存证、溯源、智能合约三大领域,区块链存证应用借助上链数据不可篡改的特性,实现电子证据在链上的固化存储,为用户业务提供可信认证;溯源为依托区块链系统的链式数据结构,对上链数据进行追溯,实现产品的流转过程追溯;智能合约主要服务于合同签订和履约环节,未来,智能合约的应用逻辑也在向执行业务功能多元化的方向发展。
以容器为节点的基本组成单位,通过共识机制组网,实现在云计算底层资源上构建虚拟链。云计算底层平台通过将云端资源进行划分,产生标准化的容器云应用,以容器云作为底层资源部署虚拟链。容器云是支撑虚拟链底层应用的基础网络资源,虚拟链是容器云平台的具体应用场景。虚拟链可依托容器云平台自带的监控功能模块,读取容器云的相关运行数据。虚拟链用来记录容器云平台日志信息,应用智能合约实现容器分发,对容器进行生命周期管理,基于已有的容器存证数据及时定位危险容器。虚拟链与容器云的交互在区块链的五个网络架构层级的应用如下。
(1) 网络层分为两个结构层级,即同一宿主机内部署的容器之间的通信及承载容器的不同宿主机之间的通信。同一宿主机内部的容器通过bridge的形式实现数据交互,docker 为容器创建独立的网络栈,保证容器内的进程使用独立的网络环境,实现容器之间的网络栈隔离,容器与容器之间通过bridge 实现通信。承载容器的不同宿主机以host的形式实现通信,容器首先通过bridge 实现容器之间的通信,其后通过host 的形式实现跨主机数据交互。
(2) 共识层为虚拟链通过特定的共识算法,关联全网各容器节点,实现虚拟链节点的有效组网。虚拟节点和物理节点均可通过合理的共识机制进行节点组网,鉴于搭建的虚拟链主要服务于容器云的安全领域,且虚拟链运行在云计算平台内(云计算平台自带网络安全防护功能,相对于公网环境较为安全),虚拟链采用联盟链的网络架构较为合理,DPOS 和PBFT 两种共识机制是目前在联盟链领域较为通用的共识算法,虚拟链搭建过程中可匹配经典区块链共识算法。
(3) 数据层为虚拟链执行交易和存储数据的交互层,虚拟链产生的交易在链上执行,并写入区块内,数据存储于链式数据库内。容器的存储功能需要依赖于宿主机的存储装置,故容器节点需锚定宿主机的存储装备,节点同步链上数据后,将节点数据存储于宿主机内。区块内存储的主要数据为哈希码,以字节数据为存储对象,故占用的内存空间较小,宿主机提供一定的磁盘空间,即满足虚拟链上的容器数据存储需求。
(4) 智能合约层是固化在区块链网上的代码程序,虚拟链环境下,以容器为节点组成的区块链应用平台可支持使用智能合约应用,通过智能合约实现链上代码逻辑。开发人员首先使用容器专用的代码编辑器对容器智能合约进行编辑,其后以交易的形式向容器虚拟链发送合约的部署指令,合约在单一节点部署成功后,合约数据在虚拟链的全网各节点同步,最终智能合约被成功部署在区块链上。
(5) 应用层是虚拟链实现应用功能的实现层,容器虚拟链的应用功能延续传统区块链底层平台的经典应用功能,即存证和溯源,通过将容器运行过程中的关键数据上链,有效记录容器信息,实现容器数据结合区块链应用的有效管理。应用层由数据上链模块、数据查验模块、数据回传模块构成。上链是实现容器数据交互的基础功能,容器运行的原始数据通过上链模块,实现数据上链。数据查验是对上链数据进行校验,识别上链存储数据的有效性。数据回传模块是将上链数据返回至数据分析系统,进行链上数据分析。
2.1.1 存证
存证是将数据上链至区块链系统的过程,一般以交易的形式实现,存证分为原始数据上链和索引数据上链两种形式。当前的技术条件下,索引数据上链是较为通用的数据上链形式,原始数据上链的模式因自身的短板,通用性不强。
区块链系统的数据上链存证后,存证数据不可篡改。区块链呈现链式数据结构,区块与区块前后连接,一旦数据上链,修改区块内的数据将需要修改该区块之前和之后的所有区块数据,这种极端情况不可能发生,因此上链数据不可改,可有效保证数据的客观公正。
虚拟链执行数据存证的过程为:首先区块链账户确定上链数据,加密算法将原始数据加密为哈希值,其后对上链的哈希数值进行校验,最后将哈希值进行数据上链,虚拟链账户反馈存证结果,即交易ID。存证结果可通过区块链浏览器进行搜索查询,确定存证结果——数据的存储位置和上链的数据信息。
2.1.2 溯源
溯源是面向特定对象,基于区块链的链式数据结构对溯源对象的流转运输过程进行追踪的区块链应用场景,溯源的方式分为将溯源信息上链的经典溯源方式及在不同的区块链账户之间转账以记录交易ID 的形式实现溯源两种。
初中学生的脑重量已接近成人,所以初中学生的抽象逻辑思维的能力有了很大提高。这为初中学生学习系统的科学理论知识及自我意识的发展等提供了物质基础。但毕竟初中学生的脑细胞还比较脆弱,如果长时间地集中注意一个对象,容易引起疲劳。所以,要注意劳逸结合,避免使学生负担超量,要保证学生每天有9个小时的睡眠,还要参加一定的课外活动(每天不少于1个小时的锻炼时间)。
信息上链的经典溯源方式为:将容器运行的日志信息、容器云平台的安全记录、容器从产生到消失的生命周期的关键信息进行上链存证,基于区块链应用生成溯源凭证,并以系统对溯源信息产生的交易ID 为依据在区块链浏览器内查询存证结果。用户通过获取区块链溯源凭证的形式知晓被溯源产品的流转过程,并可通过区块链浏览器查询其存证信息。
以交易ID 为基准的溯源方式为:在整个溯源链体系的各个关键节点搭建区块链账户,物资每到一个物流节点即可与前一个物流节点做一笔交易生成对应的交易ID,以此类推,将产品的整个流转过程通过区块链账户以做链上交易的形式,从一个物流节点到另一个物流节点的全流程进行追溯,以查询链上交易ID 的形式回溯物流节点对应的流转信息,并对交易信息进行可视化展示。
容器云平台实现对容器资源的集中托管和编排,统一部署在云服务上,容器云平台在部署的地理空间和协同调用的计算资源上有集中化的优势,属于相同的云服务器且计算资源可实现多维度调配,因此在容器云上搭建的虚拟链可忽略地理空间上的间隔的问题,专注于关注容器运行的进程即可。采用以交易ID 为基准的溯源方式能够在区块链上关联溯源信息,相对于上链存储溯源数据的经典溯源方式,交易ID 关联的溯源方式更有优势。容器的全生命周期管理进程中,容器的生成、使用、消失均进行数据上链,容器的生命周期管理分属于生成账户、使用账户、消亡账户,容器在生成账户产生并生成初始数据A;容器投入使用后,使用账户向生成账户发送交易数据B;容器结束使用后,消亡账户向使用账户发送交易数据C,交易过程中产
生的交易ID 可通过区块链底层平台进行数据逻辑关联,生成容器云的生命周期区块链溯源图。
容器云是依托云端资源部署,结合容器虚拟化技术生成的PAAS 服务应用,应用区块链技术的容器云平台以容器为节点,通过特定共识机制实现多节点组网生成以容器云为底层平台的虚拟链。虚拟链具有区块链应用的通用特性,即存证和溯源功能。虚拟链具备智能合约和非对称加密技术,智能合约是在区块链网络上编写的代码,可执行已设定的区块链程序逻辑;非对称加密技术采用系统的公私钥对机制,区块链应用生成的账户具有公钥和私钥,公私钥匹配后可顺利启用区块链账户来使用对应功能。
结合虚拟链的容器云平台具备存证、溯源、智能合约和非对称加密功能,应用虚拟链记录容器生成数据、日志信息、分发容器,有助于完善容器的数据管理流程。存证,将容器运行过程中的生成数据、新生容器进行区块链存证,对容器数据进行上链,实现容器数据的加密保护。溯源,结合区块链的块链式数据结构,对容器从诞生到消亡的全过程进行溯源,助力容器管理。智能合约,应用智能合约编写容器生成和分发规则,以程序化的形式生成容器数据,保证容器数据生成的客观性。非对称加密,以公私钥对为基础的数据加密机制可用来对容器管理账户进行加密保护,提升容器管理的安全性。
云计算平台的健壮性。云计算是一种新型计算模式,云计算在一端集中了包括服务器、网络、存储、应用、服务等多种可配置的软硬件资源,通过虚拟化技术,组成集中的虚拟资源池,在另一端从互联网和局域网提供获得这些资源的渠道,达到按需自助使用、弹性使用的目的。电气与电子工程师协会(IEEE)对健壮性的定义为:“在无效输入或压力环境下,系统或者组件能够保持正常工作的度量。”云计算平台的IAAS,PAAS,SAAS 三个维度的云计算资源均具备良好的健壮性,当面临网络攻击或产生错误数据的情况时,云计算提供方构筑了功能完备的防火墙可有效防范网络攻击,云端资源具备良好的错误数据冗余能力,大部分云计算平台错误数据的发生率稳定在1/100 000 以下。
虚拟链以存证和溯源两大核心功能构建新型容器防护安全体系。存证功能,应用区块链技术对虚拟化容器进行编码,新的容器生成后,将容器的特征数据上链形成虚拟链对应的交易ID,以区块链交易ID 为基础完成容器数据的标识。溯源,完成数据上链的云端容器在运行过程中,配置容器数据的生成账户、使用账户、消亡账户,容器生成后,数据从生成账户向使用账户发送数据生成交易ID,容器不再使用后,由使用账户向消亡账户发送数生成交易ID,通过获取交易ID 追踪容器的使用过程。
优化容器的分发流程。基于虚拟链配置智能合约设定容器的分发规则,以智能合约执行容器数据分发流程。容器在生成阶段,系统管理员通过使用非对称加密技术对容器进行生成授权,管理员使用私钥对具有容器分发功能的区块链账户进行解密,根据系统执行网络任务需要的容器数量,授权容器生成。
容器云的网络攻击总体上分为两个维度:外部网络攻击和内部恶意调用服务。外部网络攻击,网络攻击者突破容器云防火墙,窃取容器云产生的数据或将病毒程序植入到容器云平台,造成容器云发生运行故障。攻击者对容器所在的物理宿主机进行攻击,导致宿主机的操作系统出现故障,容器编排程序错乱,容器镜像仓库被劫持。内部网络攻击,恶意管理员发出错误指令容导致容器云运行不稳定,或出现容器运行故障;管理员身份信息被冒用,缺乏有效的身份认证机制,导致假冒管理员执行错误指令。具体的容器云安全风险隐患如下。
(1) 容器云数据明文展示,容器云数据缺乏加密存储机制,以明文的形式存储,当网络攻击成功后,攻击者可直接获取容器云中存储的数据。
(2) 恶意软件植入,容器云为多个容器以并行或串行的方式执行计算任务,当运行的容器被植入恶意代码,会导致容器运行故障,危险容器的病毒极有可能感染其他容器,造成容器云平台整体出现错误。
(3) 容器编排故障,容器的生成、使用和消亡全过程由容器编排工具执行对应指令,当容器编排工具遭受网络攻击后,容器的生成和管理顺序出现程序错误,导致容器与容器之间无法协同运作。
(4) 攻击容器宿主机,容器云基于云端计算资源生成,IAAS 层是容器云的基础层,由大量的实体物理机组成,当物理机损坏或攻击者从外部网络成功破坏宿主机后,IAAS 层的故障将会传导至PAAS 层,导致容器云发生运行故障。
以云计算为底层资源构建的虚拟链主要功能为:面向容器云的安全风险问题提供区块链底层支撑服务。虚拟链的应用总体架构分为资源层、平台层、服务层和应用层(见图1),四层架构的应用总体功能如下。
图1 虚拟链的应用总体架构
(1) 资源层。建设虚拟链的底层计算资源为云化网络计算层以及物理支撑层,物理硬件设备是组成云计算资源的物理支撑层,物理机经过云化后产生的云计算资源为云化网络计算层,最终产生的云端资源是虚拟链搭建的底层资源。
(2) 平台层。云端资源组成的宿主机是容器生成的基础,容器生成后经容器编排工具实现协同计算,以容器为节点构建的虚拟链平台可发挥监控容器安全状态、分发容器的作用,优化现有的容器防护体系。
(3) 服务层。虚拟链的服务功能应用方向为两项,一是对云端部署的容器进行监控,对危险容器进行上链存证,记录危险容器的运行日志;二是对虚拟链进行管理和监控的管理后台。
(4) 应用层。主要为虚拟链对容器云平台的安全防护系列功能,功能包括:容器数据加密、容器分发、日志监控、生成容器授权令牌。
(1) 容器运行日志存证。容器的运行过程被云端平台以日志的形式记录,将容器运行过程的日志信息进行有效存证,当发生容器安全事件后,管理员可调用区块链浏览器查询容器的日志记录,定位危险容器所对应的链上交易ID,进而辅助排查容器对应的危险数据。
(2) 容器生命周期管理。容器从生成、运行到最后关闭是一个完整的IT 应用使用周期,将容器的全生命周期进行区块链存证,有助于监控容器的运行过程,精确统计系统运行过程中生成的容器数量及种类,单一容器的使用过程也可通过区块链技术实现有效记录。
(3) 容器分发。结合虚拟链所具备的智能合约,设定生成容器的分发规则,基于智能合约完成容器云账户的分发。容器云平台上搭建的虚拟链匹配智能合约,设置基于区块链技术的容器分发账户来统一实现容器数据的分发。智能合约设置的程序规则,可从技术上提升容器数据生成的有效性,容器的生成由虚拟链的智能合约程序产生,智能合约的实现逻辑具有不可篡改性。区块链虚拟链账户生成的容器,每个容器匹配唯一的容器ID,虚拟链对生成容器进行管理。
(4) 容器生成授权。容器云平台生成容器会占用一定的云端资源,用来执行云端平台运行的程序指令,记录容器云平台生成的数据。虚拟链生成的区块链账户将对容器的生成过程进行统一管理,因此,基于虚拟链容器生成账户的权限管理具有较高的重要性。应用非对称加密技术对区块链容器生成账户进行管理,系统管理员持有私钥,在容器云平台运行过程中,需要新增容器则管理员通过私钥授权虚拟链执行容器生成指令。
(5) 定位危险容器。当发生容器云安全事件后,通过排查危险容器的参数并结合链上的哈希索引,可实现快速定位危险容器,系统及时处理计算机病毒或正在遭受网络攻击的危险容器。
区块链技术以其独有的上链数据不可篡改,多节点数据同步的特性,在容器云安全领域,区块链具备对容器数据进行存证,对容器数据进行认证,对容器生命周期进行管理的潜力。
区块链技术在容器云安全领域的应用建议。
(1) 云计算是集中式网络的代表性技术,区块链技术是分布式网络的重要技术,探索云上建立区块链应用的模式是集中式网络与分布式技术融合应用的试点方向。
(2) 探索区块链技术架构层级与云计算PAAS层级软件的融合应用点,以实现减少区块链物理节点的搭建,进一步发挥云计算平台强大的计算能力。
(3) 拓展云端虚拟链在容器云安全领域的应用场景,深化虚拟链对容器云平台危险数据存证,容器生命周期追溯,智能合约排查危险容器方面的应用探索。
(4) 设计云端平台专用共识机制。虚拟化节点与物理实体节点使用相同共识机制存在兼容性问题,开发虚拟网络环境下的区块链共识机制,有助于提升虚拟链共识效率。