摘要
网络虚拟化通过简化新安全功能实现的开发,增强了实施安全保护的通用性。但是,此机会的缺点是,负责配置和部署安全功能图的安全提供商必须在如此庞大的池中选择最佳虚拟安全功能,这使得手动决策变得不可行。针对这一问题,本文通过引入功能抽象,提出了一种综合虚拟安全服务的新方法。这种新的抽象级别允许在虚拟级别工作,而不考虑不同的功能实现,目的是在配置虚拟图之后,推迟功能选择和部署。当可用函数池非常大时,这种新颖性可以优化函数选择。一个支持这种方法的框架已经实现,它显示出足够的可扩展性,以满足现代虚拟网络的需求。
关键词:虚拟化网络、网络安全、自动编排、功能选择
I. 简介
网络功能虚拟化(NFV)[1]和软件定义网络(SDN)[2]在现代计算机网络中实施安全保护时引入了高度灵活性。当安全提供商必须使用实现某些网络安全策略(NSPs,即,虚拟服务必须满足的安全要求[3])为了构建安全功能图,她拥有大量可供选择的软件化功能。这些安全功能通常称为虚拟网络安全功能(vNSF),是可以在普通虚拟机或Docker上运行的程序,无需特殊用途的嵌入硬件。
然而,这种高自由度的选择有一个缺点。在虚拟网络服务中执行安全的常用方法中[4],安全提供者在安全协调的下两个阶段之前选择执行 NSP 所需的 vNSF,即:i) 通过定义分配方案和配置拓扑结构中选定的 vNSF,在虚拟服务中执行安全,以及 ii) 在网络的物理基础设施中部署它们。由于这种操作顺序,网络信息(例如,虚拟服务的拓扑结构,或服务功能的行为,如负载均衡器和网络地址转换器)在选择vNSF时被忽略了。忽视这些信息可能会导致影响vNSF选择之后的阶段的次优化,因为它可能有助于在潜在的成千上万的vNSF中确定真正需要的最小和最不耗费资源的子集。
另一种方法是在虚拟服务中实施安全保护之后,在部署之前或与部署一起,推迟选择vNSF。因此,如果随后选择了vNSF,那么出现的挑战将是理解如何合成和配置虚拟安全功能图。很明显,NSP规范和虚拟函数图中的安全实施之间缺少以前由vNSF选择表示的链接。
鉴于这些考虑,本文提出了一种新的安全功能图配置和部署方法。在这种方法中,正如前面所暗示的,在合成虚拟图之后执行vNSF选择。这是通过引入新的抽象级别实现的:在每个vNSF中都有一组功能(即,识别可实施相应安全属性的功能特性),并通过分配和配置功能(而不是vNSF)来创建虚拟图。直到后来,根据分配的功能及其计算的配置,vNSF的有效选择和部署才在最终的单一优化步骤中联合进行。最后但并非最不重要的一点是,这种方法是完全自动化的,因此过程的所有阶段(即,功能分配和配置、vNSF选择和放置)工作于服务提供商提供的输入,但不需要额外的人工干预。
总之,本提案带来的贡献如下。
一个新的抽象层次。在基于NFV/SDN的网络中,传统上虚拟安全图已经由vNSF组成。通过引入功能抽象,虚拟图建立在功能的基础上,为下一阶段提供更高的通用性。
一种新的安全图配置和部署方法。在合成和配置由功能组成的安全图之后,vNSF选择被推迟。这一决定需要重新设计流程,并重新定义每个阶段的工作模式。
用于安全编排的自动化框架。这种新方法已经在一个原型框架内实现,该框架能够以最少的外部交互工作,减少人为因素产生错误,并提高性能效率。
本文的其余部分结构如下。第二节介绍了推迟vNSF选择阶段所需的功能抽象。第三节说明了由于新引入的功能抽象,为安全功能图配置和部署定义的新方法。第四节描述了基于此方法的框架的实现以及实验验证的结果。第五节剖析了相关工作,强调了与拟议方法相关的差异。最后,第六部分对论文进行了总结,并对今后的工作进行了展望。
二, 功能抽象
功能抽象代表了一种创新,它能够将 vNSF 的选择与虚拟安全功能图的合成分开。本节说明了应如何表示vNSF以实现这一抽象,然后说明如何从该表示中导出功能。
A.vNSF清单
每个vNSF都由定义其可以强制执行的安全属性的参数表征(例如,vNSF可以工作的ISO/OSI堆栈层、它可以执行的算法或它可以对流量执行的操作)。为了全面了解表征vNSF的所有参数,可以将这些参数分组为一个表示形式,称为vNSF清单。
对于vNSF v,相应的清单由两个集合组成,即,
:
是vNSF可以决定和/或可以在其上配置的所有字段和功能的集合;
是vNSF可以执行的所有操作的集合。
反过来,字段集被组织成两个子集,即, ,因为区分vNSF可以在自身上配置的字段和它只能为其做出决定的字段很重要:
相对于vNSF可以做出决定和它可以配置的所有字段的集合(比如,对于包过滤防火墙(如iptables),IP 5元组的所有字段都属于此集合,因为配置规则由基于IP地址、端口和传输级别协议的条件组成);
是vNSF可以决定的所有字段的集合,但不需要配置它们,即,通过配置允许访问相同安全属性的其他字段(例如,如果必须阻止特定的web域,则可以使用iptables,但它不能配置“域”字段,只能配置相应的IP地址)。
下面给出三个示例来阐明vNSF清单的概念。在这些清单中,为了简洁起见,仅报告和
集中存在的所有字段的子集。
数据包过滤vNSF的清单,如iptables、ipfirewall或等效防火墙实现,只能在ISO/OSI堆栈的第3层和第4层工作,如(1)所示。这些VNSF可以根据IP 5元组的值决定是否允许将接收到的数据包转发到下一跳或拒绝。然而,这并不意味着包过滤防火墙不能对具有诸如web域和url等字段的包作出决定。
相反,像Squid这样的web应用程序防火墙具有类似于(2)中所示的清单。对于包过滤器,这种类型的防火墙还可以基于web域、URL、HTTP方法(例如,POST、PUT、GET)、内容类型等。中出现的所有其他字段也都在
中,因为Squid与iptables一样是防火墙,但它只是在不同的级别上工作。尽管如此,它们的
和
中都没有与加密相关的任何参数集(例如。G算法,加密密钥长度)。
最后,可用于强制执行某些安全属性的虚拟函数不必是众所周知的实现,如iptables或Squid,但它们可以是由任何开发人员开发的、在虚拟机或Docker上运行的软件程序。从(3)中可以看出,清单描述足够灵活,可以支持这种类型的函数。在本例中,已开发并可供安全提供程序使用的vNSF名为“MyLogger”。它不能阻止数据包,但它只能记录特定类型流量的接收,并将该事件通知安全提供商。此外,它的开发方式使得配置规则中仅存在web域和url字段。因此,IP 5元组本身的字段不在集合中。它们也不在
集合中,因为域名和网址是比ISO/OSI堆栈的第3和第4层更高层次的信息。
B.安全功能定义
安全功能(为简洁起见,以下简称功能)表示字段和操作的子集(即,vNSF的清单)用于强制NSP表示的安全属性。
由于负责NSP定义的人员无法事先知道将有效部署哪些vNSF来实施这些定义,因此使用了一种独立于实现的语言来制定这些定义。在文献中,类似的抽象级别也称为中级策略语言(MLPL)[5],因为它提供了NSP实施的所有信息,但其方式与所使用的VNSF无关。
NSP p可以在MLPL中表示为:
是必须满足的一组政策条件(例如,他们可能会指定IP 5元组字段的值,这些字段表示防火墙要阻止的流量类型,或者VPN网关要使用的加密算法类型);
必须对
中表示的条件标识的数据包应用的有序操作列表。
策略p的示例如(4)所示
在此公式中,每当字段不必以特定值为特征时∗ 值用于该字段上的条件。例如,pSrc=∗ 意味着对传输级源端口必须具有的值没有严格的条件,用于标识必须强制执行安全操作的流量。
这些功能源于将每个vNSF的清单映射到NSP,它们表示如何配置vNSF以强制NSP请求的安全属性。因此,每个功能f以与NSP本身类似的方式表示,即,。具体地说,
是应用于vNSF v的
字段的条件集,f来源于此,而
是相应vNSF的
集所支持的行动的有序列表。
例如,考虑到其清单已在(1)、(2)和(3)中呈现的三个vNSF v1、v2和v3,从这些清单派生的功能以及实施(4)中呈现的策略p所必需的功能如下:
一个单一的功能或功能的组合必须支持NSP所要求的所有动作,这样才足以执行它。在这个例子中,功能f2同时支持日志和数据包阻塞的动作,因此它可能足以执行NSP。相反,f1和f3本身是不够的,因为前者只能阻断数据包,而后者只能进行日志记录操作。因此,需要将f3与f1结合起来。
根据这些定义和例子,一个结果是,确定所有可能执行NSP的功能组合,可以推迟有效的vNSF选择,并导致两个重要的优势,目前还没有在文献中介绍。第一个好处是,在构建虚拟安全图时,所有可能的功能都被评估了,同时考虑了虚拟网络本身的行为。只有在决定了真正需要的功能后,才会选择vNSFs在物理网络中部署。第二个优点是,如果有多个vNSF实现具有相同的清单(例如,iptables、ipfirewall和其他包过滤防火墙具有几乎相同的清单),那么将其清单映射到NSP所产生的功能也将是相同的。在这一点上,为协调过程的下一阶段考虑单一的功能就足够了,而不是考虑多个vNSF,这些vNSF可能只在资源需求(如CPU或内存需求)方面有所不同,但在提供安全属性方面是相同的。
三、 新工作流
本节在介绍功能抽象之后,描述了为安全功能图配置和部署而设计的全新工作流。具体地说,如图1所示,该工作流由三个阶段组成:
1)功能识别(FUID)阶段(第III-A小节)识别由可用的VNSF支持的哪些功能是强制实施一组用户指定的NSP所必需的;
2) 分配和配置生成(ACG)阶段(第III-B小节)自动在虚拟图中建立已识别安全功能的分配方案和配置;
3) 选择和放置(SEP)阶段(第III-B小节)执行VNSF的选择,相对于传统工作流推迟,并在物理网络中部署。
A.功能标识
FUID阶段在安全提供程序指定的一组NSP上工作。在接收到MLPL中表示的一组NSP后,FUID阶段将确定实施这些NSP可能需要的功能。要执行此任务,它可以访问一个存储库,该存储库包含可用于在网络中进行有效部署的所有VNSF。每个vNSF均附有符合第二节定义的清单。
每个vNSF的清单映射到每个NSP,此操作的结果是安全功能。可能会发生这样的情况:给定更多的vNSF清单,它们为给定NSP生成的功能是相同的。在这种情况下,将保留该功能的单个实例。类似地,vNSF可能不支持NSP条件中指定的字段中的任何字段。将其清单映射到NSP不会产生任何功能,因此,vNSF在强制实施时被预先排除在外。
然后,以这样的方式组合计算出的功能,即仅考虑能够完全实施NSP请求的动作的有效组合。如果未识别NSP的有效组合,则全局过程立即停止,并生成早期不可执行性报告,通知安全提供商功能识别失败的原因。否则,有效的组合将被传递到流程的下一阶段,以便在虚拟图中进行分配。这样,安全配置将以与vNSF实现无关的方式执行。
在此阶段,不使用与虚拟网络相关的信息。这允许独立于其他NSP执行每个NSP的功能标识。
B分配和配置生成
ACG阶段在三个输入上工作:
1)服务提供商指定的NSP;
2) FUID阶段确定的一组功能(即,ACG期为vNSF不可知期);
3) 虚拟服务图(VSerG)的描述。VSerG描述提供了有关必须强制实施安全属性的服务拓扑的信息,以及网络功能的配置(例如:NAT,负载平衡器)组成它。因此,它表示现有网络图的当前态,但完全没有任何安全功能。在ACG阶段,VSerG在内部表示为虚拟分配图(VAllG)。VAllG包含一个虚拟占位符位置,称为分配位置(AP),用于对应VSerG的一对服务之间的每个链接。这些AP代表可以分配和配置FUID阶段中确定的功能的可能位置。例如,图2a中描绘的VSerG被表示为图2b中描绘的VAllG。
ACG阶段的目的是在VSerG中建立最佳且形式正确的分配方案,并配置先前选择的功能,从而强制实施所有NSP。这些目标是通过制定和解决最大可满足性模理论(MaxSMT)问题来实现的。这类优化问题的原理源自传统的SAT问题,但有两种扩展方式。一方面,它引入了比唯一的布尔代数更多的理论。另一方面,它的特点不仅是必须始终满足的硬约束(例如。G表示NSPs实施的约束),但也应尽可能简单地满足软约束,并允许优化目标的形式化。这种方法的灵感来自于有关包过滤防火墙[6]和VPN网关[7]的文献中提出的工作,尽管如此,它们的范围还是有限的,并且证明了其对单一类型功能的有效性。此外,该公式具有两个特性:优化和先验形式验证。对于前者,优化目标是建立所需功能实例的最小数量。关于后者,遵循[8]等著作的趋势,使用形式化模型来捕获表征VSerG的服务函数的行为,因此,由于MaxSMT公式的内在正确性,MaxSMT问题的解决方案具有正确的形式保证。
MaxSMT问题的解决方案是虚拟安全图(VSerG),其中一些AP使用选定的功能填充,这些功能的配置方式也可以强制用户指定的NSP。图2c中描绘了VSecG的示例,其中F18和F19是V AllG中引入的安全功能。此图表示比传统虚拟图更高的抽象,其中通常存在VNSF。
C 选择和放置vNSFs
SEP阶段根据以下输入工作:
1)在ACG阶段计算的VSecG;
2) 可供部署的VNSF存储库;
3) 物理网络的描述(即,它是如何构造的,以及构成它的每个主机的资源可用性);
4) 一个优化策略,描述每个优化标准(即,最小化CPU、RAM、磁盘、带宽、选定的VNSF数量和使用的物理主机数量)的优先级高于或低于其他。
此阶段的第一个目标是在可用的VNSF子集中选择支持ACG阶段中分配和配置的功能的最佳VNSF子集。共同确定所选VNSF的部署方案,即:决定每个vNSF应嵌入哪个主机构成物理网络。推迟vNSF选择,以便在部署时执行,具有许多优点。在这个阶段,很清楚哪些功能是有效需要的,以及它们在虚拟图中是如何分配的。此外,这两项行动(即:选择和嵌入)通常受到相同的优化标准和约束,即使它们传统上处于安全编排工作流的不同步骤中。例如,在这种新方法中,如果没有具有足够RAM容量的物理主机可用,则直接避免选择某个vNSF。
选择和部署问题被描述为一个多目标整数线性规划(ILP)问题。如果有数百个可用的VNSF实现相同的功能,那么手动决策将很麻烦,并且容易出错,甚至忽略所有其他自由度(例如,物理主机的数量等)。因此,ILP公式能够自动解决联合选择和部署问题。更具体地说,考虑一组n个vNSFs v1,v2,vn,在该公式中,为每个vNSF定义了一个整数变量,表示选择的结果(即,如果
被选中部署,
,否则
)。这些变量在与主机的资源容量(即,所选的VNSF必须部署在有足够资源满足其需求的主机上),也必须部署在优化目标中。
在优化方面,所提出的方法是多目标的。因此,它寻求通过根据请求的优化策略优化物理主机的资源消耗来实现的最佳解决方案,其中标准具有不同的优先级。在这种方法中,优化是分层执行的,即,首先对优先级最大的准则进行优化,然后对优先级第二高的准则进行优化,依此类推。公式(8)是ILP问题中定义的优化目标的一个示例。
在这个公式中,对于vNSF ,
是一个整数变量,表示所选实例的数量,
是一个整数变量,表示所需的磁盘(MB),而
表示与磁盘消耗相关的标准相对于其他标准的优先级。换句话说,(8)指出,根据ILP问题的其他约束条件,所选和部署的VNSF消耗的磁盘空间总和应尽可能地最小化。
最后,为选定的VNSF生成部署方案,并将其传递给用户,以便用户可以通过与编排器(如Open Baton或Kubernetes)交互来部署功能。
四、 实现和验证
本节介绍了如何实现拟议的新工作流,以及为检查其可伸缩性而进行的实验验证。
A.实现
开发了一个基于Java的原型框架,以实现第三节中描述的方法。具体而言:
- FUID阶段采用Java算法;
- 最先进的MaxSMT求解器,称为Z3(版本4.8.5)[9],用于制定和解决由ACG阶段表示的优化问题;
- 最先进的ILP求解器,称为Gurobi(版本8.1.1)[10],用于制定和解决SEP阶段的ILP问题。
该框架公开了用于与人类交互的REST API(例如,服务提供商)和其他应用程序(如,自动化服务编排器,如Open Baton)。通过HTTP请求和HTTP回复交换的数据可以嵌入XML或JSON。
B.验证
对该框架进行了实验验证,主要目的是分析其可扩展性。此验证已在具有32 GB RAM的4核Intel i7-6700 3.40 GHz工作站上执行。尽管这个原型框架是基于功能抽象的初步模型,但要理解这种新方法的潜力,可伸缩性验证是很有趣的。特别是,考虑到拟议工作流程的三个阶段,每一个阶段的关注度各不相同。因此,分析的指标如下:
- FUID阶段的NSP数量,因为必须对每个NSP进行分析,以确定实施该阶段所需的功能;
- ACG阶段的AP数量,因为每个AP代表虚拟服务中用于分配功能的候选位置;
- SEP阶段可用的VNSF数量,因为每一个VNSF都代表了在网络中实施分配功能的可能选择。
通过改变其自身的利益衡量标准,独立于其他阶段对每个阶段的绩效进行了调查。
图3显示了该可伸缩性评估的结果。图表中绘制的每个值代表平均值,通过100次独立迭代的结果计算得出。
这些结果表明,该框架具有良好的可扩展性,特别是对于FUID和SEP阶段。事实上,前者只需要10秒多一点的时间来确定强制实施1000个NSP所需的功能,而后者则在大约15秒内执行vNSF选择和部署,访问1000个vNSF的存储库。图3中的两个对应图显示,对于这些阶段,计算时间不会呈指数增长,但会呈线性增长。唯一需要更多时间的阶段是ACG:在一个有100个AP的VAllG中,计算功能分配方案和配置大约需要40秒。ACG阶段计算时间的增长本身不是线性的,而是二次的。有两个主要原因可以解释这种不同的行为。首先,在ACG阶段解决的问题是最复杂的问题,因为以最佳且可证明正确的方式跨虚拟服务配置分布式功能对于人类来说是不可行的。第二,解决MaxSMT问题比解决ILP问题需要更多的时间。尽管如此,需要MaxSMT公式来支持其他理论,并通过构造范式实现方法的正确性。
然而,执行拟议工作流程的所有步骤所需的总计算时间与虚拟网络中网络安全管理操作所需的时间一致。作为参考,[11]报告部署过程延迟(即:对于开源的MANO,部署和实例化虚拟功能以及设置可操作的网络服务所需的时间)为134秒,MANO是一个著名的基于NFV的编配器。因此,在不到这个DPD时间内,为支持本文提出的方法而实现的框架可以确定如何配置和部署完整的虚拟安全服务。
总之,实验结果证实,该方法不仅适用于在安全功能图配置和部署中替代人,而且可以在比需要人更少的时间内完成,并且符合现代计算机网络的敏捷性要求。
v 相关工作
与本文中所述的功能抽象类似的概念在文献中几乎没有被研究过。一系列IETF RFC草案(其中[12]是最新的草案)提出了能力信息模型来描述vNSF可以以供应商中立的方式实施的安全属性。通过这样的描述,在定义安全服务时,不需要参考特定的技术或依赖于供应商的功能。然而,这些想法还没有完全形式化,也没有被用于研究执行安全配置和部署的新方法。事实上,[13]使用一个能力模型来抽象VNSF,但这项工作仅限于访问控制和转发虚拟功能。[5]中介绍的工作将研究扩展到了其他类型的安全功能。然而,如[13]中所述,能力模型不用于创新安全配置工作流,安全实施的vNSF选择通常在分配和配置阶段之前执行,失去了从可能的延迟中获得的所有好处。
在安全功能的自动配置方面,以及在安全功能的部署方面,已经进行了更多的研究。针对包过滤防火墙([14]、[15]、[6])和VPN网关([16]、[7]),或同时针对多种类型的功能([5]),对配置VNSF的自动方法进行了单独研究。然而,所有这些方法仅限于建立VNSF的配置,而不是功能,并且没有解决综合其分配方案的需要。此外,一些罕见的例外情况(如:[6] ),并且仅采用启发式算法,而不保证计算出的解得到有效优化。
最后,在研究虚拟功能的部署策略方面投入了更多的精力。本研究领域的相关工作有[17]、[18]和[19]。关于虚拟函数的部署和嵌入的更详尽的调查见[20]。对于所有这些传统方法,在本文所示的工作流程中,部署方案与vNSF选择一起生成,这是由于该操作的延迟而实现的。这种差异不仅允许联合执行这两个操作,而且还优化了它们,因为它们被约束到相同的优化标准。
六、 结论和未来工作
本文提出了一种在虚拟安全功能图中自动配置和部署安全功能的新方法。这种方法以功能抽象的定义为基础,它允许在合成虚拟图之后,在部署之前选择实施安全保护所需的功能。因此,从这个抽象中得到的优化将使整个流程受益。一个原型框架也已经实现,以证明这种新方法的有效性和可扩展性。
计划在功能抽象的定义以及配置和部署工作流的制定方面开展未来的工作。对于前者,功能特性的不同粒度可能是可以接受的。因此,将对其进行广泛的评估,目的是了解最合适的粒度,从而通过使用它对所有功能进行建模。关于后者,某些阶段的表述可能会改变(例如,为ACG过程定义的MaxSMT问题可以被启发式算法(heuristics)替代或支持,这样框架的整体性能可以进一步提高。