CN109818918B - 基于软件定义网络加密策略的策略驱动的工作负载启动 - Google Patents
基于软件定义网络加密策略的策略驱动的工作负载启动 Download PDFInfo
- Publication number
- CN109818918B CN109818918B CN201811383529.0A CN201811383529A CN109818918B CN 109818918 B CN109818918 B CN 109818918B CN 201811383529 A CN201811383529 A CN 201811383529A CN 109818918 B CN109818918 B CN 109818918B
- Authority
- CN
- China
- Prior art keywords
- policy
- computing devices
- tunnels
- security policy
- zones
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/20—Network architectures or network communication protocols for network security for managing network security; network security policies in general
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5077—Logical partitioning of resources; Management or configuration of virtualized resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/606—Protecting data by securing the transmission between two devices or processes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Computing Systems (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明涉及基于软件定义网络加密策略的策略驱动的工作负载启动。公开了用于跨支持应用程序工作负载的多个类别实现可扩展策略的技术。在一个示例中,该策略是安全策略,其指示需要哪些类型的虚拟化应用程序工作负载来加密通信,并将计算设备分组成经由被配置为承载加密通信的各个隧道进行通信的区。编制引擎基于安全策略中限定的区来选择计算设备,以确保需要加密通信的虚拟化应用程序工作负载经由被配置为承载加密通信的隧道进行通信。
Description
本申请要求于2018年6月29日提交的美国申请号16/024,412的权益,该申请是于2017年11月21日提交的美国申请号15/819,522的部分延续(CIP),其全部内容通过引用结合于此。
技术领域
本发明总体上涉及计算机网络,并且更具体地,涉及分布式应用程序。
背景技术
虚拟化数据中心正在成为现代信息技术(IT)基础设施的核心基础。特别地,现代数据中心已经广泛利用虚拟化环境,在虚拟化环境中虚拟主机(例如虚拟机或虚拟容器)被部署并在物理计算设备的底层计算平台上执行。
具有大规模数据中心的虚拟化可以提供几个优势。一个优势是虚拟化可以显著提高效率。随着每个物理CPU具有大量内核的多核微处理器架构的出现,底层物理计算设备(即服务器)变得越来越强大,虚拟化变得更容易和更高效。第二个优势是虚拟化提供了对基础设施的显著控制。随着物理计算资源成为可替代资源,例如在基于云的计算环境中,计算基础设施的供应和管理变得更容易。因此,除了虚拟化提供的效率和增加的投资回报(ROI)之外,企业IT人员通常出于它们的管理优势而更喜欢数据中心中的虚拟化计算集群。
发明内容
总体上,本公开描述了用于支持加密策略的应用程序的策略框架的技术,该加密策略用于控制在基于云的虚拟化计算环境中执行的虚拟化应用程序工作负载之间的网络流量。计算环境包括例如启动虚拟化应用程序工作负载的实例的服务器的计算设备。某些类型的虚拟化应用程序工作负载(例如财务应用程序)被指定为具有与这些应用程序工作负载之间的加密通信。然而,并不是所有的计算设备都被配置为有效地提供所需的加密级别。
在本公开中,用于基于云的系统的高级编制引擎的一个或多个示例被公开于编制引擎用于确定哪些计算设备将执行需要增强加密的虚拟化应用程序工作负载的实例的信息。用于虚拟化计算环境的编制引擎可以被配置为指定计算设备通过其通信的网络的状态,并且控制器(例如,软件定义网络(SDN)控制器)可以被配置为管理网络,使得网络的实际状态与由编制引擎指定的状态相匹配。
例如,SDN控制器将网络配置为在计算设备之间形成隧道。隧道在SDN控制器的控制内,并且指示隧道连接的信息可能不可用或无法被编制引擎访问。当SDN控制器控制计算设备之间的隧道时,编制引擎被配置为确定要在哪个计算设备上执行特定的虚拟化应用程序工作负载,但不知道计算设备之间的隧道,并且具体地,不知道被专门配置用于承载加密通信的隧道。
在一个或多个示例中,控制器可以提供指示必须具有加密通信(例如,发送给应用程序工作负载的加密通信、来自应用程序工作负载的加密通信或与特定应用程序工作负载之间的加密通信)的应用程序工作负载的类型的安全策略信息(例如,包括指定特定应用程序工作负载的信息)。控制器还可以向编制引擎公开信息,该信息指示作为被定义为承载加密通信的区的一部分而包括的计算设备。编制引擎可以基于安全策略选择计算设备并将应用程序工作负载部署到所选计算设备,该安全策略包括指示哪些计算设备被包括作为被定义为承载加密通信的区的一部分的信息。然后,SDN控制器可以确保加密通信沿着利用属于该区的计算设备形成的隧道行进。
以这种方式,管理员可以定义指示哪些类型的应用程序工作负载需要加密通信的安全策略,并且确保那些类型的应用程序工作负载被部署到具有加密能力的服务器,而不需要对所有计算设备之间的所有通信强制加密。例如,本公开中描述的技术确保根据需要执行加密,使得执行需要加密通信的应用程序工作负载的计算设备之间的隧道承载加密通信,并且执行不需要加密通信或不需要增强加密的应用程序工作负载的计算设备之间的隧道不必承载加密通信或增强的加密通信。
在一个示例中,本公开描述了一种方法,该方法包括通过软件定义网络(SDN)控制器配置网络以根据安全策略在计算设备之间形成隧道。安全策略定义了需要加密通信的一种或多种类型的虚拟化应用程序工作负载,并将计算设备分组成经由各个隧道子集进行通信的一个或多个区。隧道子集中的至少一个子集被配置为承载加密通信,并且每个计算设备为多个虚拟化应用程序工作负载提供执行环境。该方法还包括响应于执行虚拟化应用程序工作负载的请求,通过编制引擎访问由SDN控制器实现的安全策略,基于安全策略由编制引擎确定虚拟化应用程序工作负载需要加密通信,通过编制引擎从安全策略中定义的用于经由被配置为承载加密通信的至少一个隧道进行通信的区之一中的计算设备中选择计算设备,以及通过编制引擎将应用程序工作负载部署到所选的计算设备。
在一个示例中,本公开描述了包括软件定义网络(SDN)控制器和编制引擎的系统。SDN控制器被配置为根据安全策略配置网络以在计算设备之间形成隧道。安全策略定义了需要加密通信的一种或多种类型的虚拟化应用程序工作负载,并将计算设备分组成经由各个隧道子集进行通信的一个或多个区。隧道子集中的至少一个子集被配置为承载加密通信,并且每个计算设备为多个虚拟化应用程序工作负载提供执行环境。编制引擎被配置为响应于执行虚拟化应用程序工作负载的请求而访问由SDN控制器实现的安全策略,基于安全策略确定该虚拟化应用程序工作负载需要加密通信,从安全策略中定义的用于经由被配置为承载加密通信的至少一个隧道进行通信的区之一中的计算设备中选择计算设备,以及将应用程序工作负载部署到所选的计算设备。
本公开的技术的一个或多个示例的细节在附图和下面的描述中阐述。本技术的其它特征、目的和优势将从说明书和附图以及从权利要求中显而易见。
附图说明
图1是示出具有其中可以实现本文描述的技术的示例的数据中心的示例网络的框图。
图2是进一步详细示出图1的数据中心的示例实现的框图。
图3是示出其中可以实现本文描述的技术的示例的多个数据中心的示例的框图。
图4是示出根据本文描述的技术执行用于虚拟网络的示例虚拟路由器的计算设备的框图。
图5是示出根据本文描述的技术的包括标签信息的示例消息的框图。
图6是示出计算设备之间的隧道的示例的框图。
图7是示出根据本公开的技术的示例操作的流程图。
图8是示出根据本公开的技术的示例操作的流程图。
图9是示出根据本公开的技术的示例操作的流程图。
在整个附图和描述中,相同的附图标记表示相同的元件。
具体实施方式
图1是示出其中可以实现本文描述的技术的示例的示例网络系统的框图。图1的示例中的网络系统2包括经由服务提供商网络7彼此互连并且与和客户11相关联的客户网络互连的数据中心10A–10X(统称为“数据中心10”)。通常,每个数据中心10为通过服务提供商网络7耦接到数据中心的客户11的应用程序和服务提供操作环境。例如,数据中心10可以是主机基础设施设备,例如联网和存储系统、冗余电源和环境控制。服务提供商网络7可以耦接到由其他提供商管理的一个或多个网络,并且因此可以形成大规模公共网络基础设施(例如,因特网)的一部分。
在一些示例中,每个数据中心10可以表示许多地理上分布的网络数据中心中的一个。如图1的示例中所示,每个数据中心10可以是为客户11提供网络服务的设施。客户11可以是例如企业和政府或个人的集体类别。例如,网络数据中心可以为几个企业和最终用户托管web服务。其他示例性服务可以包括数据存储、虚拟专用网络、流量工程、文件服务、数据挖掘、科学计算或超级计算等。在一些实施方式中,每个数据中心10可以是单独的网络服务器、网络对等体或其它。
在该示例中,每个数据中心10包括经由由一层或多层的物理网络交换机和路由器提供的高速交换结构14互连的一组存储系统和应用程序服务器12A–12X(本文,“服务器12”)。交换结构14由一组互连的机柜顶端(TOR)交换机16A–16N(统称为“TOR交换机16”)提供,机柜顶端(TOR)交换机16A–16N耦接到机箱交换机18A–18M(统称为“机箱交换机18”)的分布层。虽然未示出,但是每个数据中心10还可以包括例如一个或多个非边缘的交换机、路由器、集线器、网关、安全设备(例如防火墙)、入侵检测和/或入侵预防设备、服务器、计算机终端、膝上型计算机、打印机、数据库、无线移动设备(例如蜂窝电话或个人数字助理)、无线接入点、网桥、电缆调制解调器、应用程序加速器或其他网络设备。
在该示例中,TOR交换机16和机箱交换机18向服务器12提供到IP结构20和服务提供商网络7的冗余(多宿主)连接。机箱交换机18汇集业务流并在TOR交换机16之间提供高速连接。TOR交换机16可以是提供二层(例如,MAC)和/或三层(例如,IP)路由和/或交换功能的网络设备。TOR交换机16和机箱交换机18可以各自包括一个或多个处理器和存储器,并且其能够执行一个或多个软件处理。机箱交换机18耦接到IP结构20,IP结构20执行三层路由,以通过服务提供商网络7在数据中心10和客户11之间路由网络流量。
根据本公开的一个或多个示例,软件定义网络(“SDN”)控制器23提供逻辑上并且在某些情况下物理上集中的控制器,用于促进数据中心10中的每一个(例如数据中心10A)内的一个或多个虚拟网络的操作。在一些示例中,SDN控制器23可以响应于从网络管理员24接收的配置输入来操作。关于与数据中心10A或其它软件定义网络的其它设备共同操作的SDN控制器23的附加信息可在于2013年6月5日提交的并且标题为“PHYSICAL PATHDETERMINATION FOR VIRTUAL NETWORK PACKET FLOWS”的国际申请号PCT/US2013/044378中找到,其通过引用结合于此,如同在本文中完全阐述一样。
在一些示例中,编制引擎22管理数据中心10的应用层功能,例如管理在服务器12上执行的计算、存储、联网和应用资源。例如,编制引擎22可以将虚拟机(VM)附接到租户的虚拟网络,并且通常根据需要管理虚拟机的启动、迁移和解构。每个虚拟机可以被称为虚拟化应用程序工作负载(或者仅仅是应用程序工作负载),并且通常表示虚拟化的执行元件,例如VM或容器。编制引擎22可以将租户的虚拟网络连接到一些外部网络,例如因特网或VPN。编制引擎22可以跨VM组或到租户网络的边界实现安全策略。编制引擎22可以在租户的虚拟网络中部署网络服务(例如,负载均衡器)。
在一些示例中,SDN控制器23是负责管理数据中心10A的网络和联网服务、并且特别是提供服务器12之间的连接性的交换结构14的下级控制器。SDN控制器23利用一组通信协议来配置和控制交换结构14的路由和交换元件以创建覆盖网络,其通常指用于在服务器12之间传输分组的一组隧道。因此,SDN控制器23可以被配置为配置网络(例如,交换结构14、IP结构20等)以在服务器12和TOR 16之间形成隧道。服务器12和TOR 16是计算设备的示例。
配置网络(例如,交换结构14、IP结构20等)的一个这样的通信协议例如可以包括消息收发协议(例如XMPP)。例如,SDN控制器23通过配置物理交换机(例如,TOR交换机16、机箱交换机18和交换结构14);物理路由器;物理服务节点(例如防火墙和负载均衡器);以及虚拟服务(例如VM中的虚拟防火墙)来实现来自编制引擎22的高级请求。SDN控制器23维护状态数据库内的路由、联网和配置信息。SDN控制器23将路由信息和配置信息的适当子集从状态数据库传送到服务器16A–16N中的每一个上的虚拟路由器(VR)代理。
通常,任何两个网络设备之间(例如IP结构20(未示出)内的网络设备之间、或者服务器12与客户11之间、或者服务器12之间)的流量,例如可以使用许多不同的路径穿过物理网络。分组流(或“流”)可以由分组的报头或“五元组”(即,用于通过物理网络路由分组的协议、源IP地址、目的地IP地址、源端口和目的地端口)中使用的五个值来定义。例如,协议指定通信协议,例如TCP或UDP,并且源端口和目的地端口指连接的源端口和目的地端口。匹配特定流条目的一个或多个分组数据单元(PDU)的集合表示流。可以使用PDU的任何参数(例如源和目的地数据链路(例如MAC)以及源和目的地网络(例如IP)地址、虚拟局域网(VLAN)标签、传输层信息、多协议标签交换(MPLS)或通用MPLS(GMPLS)标签、以及接收流的网络设备的入端口)对流进行广义分类。例如,流可以是在传输控制协议(TCP)连接中传输的所有PDU、来自特定MAC地址或IP地址的所有PDU、具有相同VLAN标签的所有PDU或在相同交换机端口接收的所有PDU。
在一些示例中,数据中心10中的每一个可以具有根据特定环境的需要在不同计算环境内实现不同策略的需求。例如,数据中心10A的开发环境、登台环境和生产环境对于网络的各种策略(例如防火墙、网络、应用或全局策略)都可以各自具有不同的要求。此外,由于不同的客户需求、联网资源和配置等,跨不同地理位置的多个数据中心10可以在它们各自的内部计算环境中的每一个内实现不同的策略。如果数据中心10中的每一个内的每个计算环境要独立地管理它自己的策略,则管理员可能难以确保每个策略满足安全性、可靠性和质量要求。此外,如果每个数据中心内的每个计算环境要独立地管理其自身的策略,则跨多个数据中心升级一个或多个策略可能变得麻烦或难以管理。
例如,每个应用程序工作负载(即,在服务器12中的给定一个服务器上启动的虚拟机或容器的每个实例)可以具有安全要求,例如对数据中心10A内的加密通信的要求,并且具体是使用由SDN控制器23建立和配置的交换结构14。作为一个示例,在服务器12上执行的应用程序工作负载在向用于存储的服务器12X上执行的数据库发送时可能需要发送加密通信。作为另一示例,可能需要在服务器12中的一个服务器上执行的应用程序工作负载以接收加密通信,例如由用户在web应用中提供的输入。作为又一示例,一些应用程序工作负载可能既需要接收加密通信又需要发送加密通信。
此外,通常直到经由编制引擎22启动相应的虚拟机/容器才知道给定应用程序工作负载的特定要求,编制引擎22通常不知道被SDN控制器23分组(例如,建立)用于处理交换结构14上的通信的网络(隧道)和加密区的具体特性。具体地,在没有本文所描述的技术的情况下,编制引擎22可能不知道并且无法确定哪些服务器12能够经由网络的加密隧道跨交换结构14进行通信,并且例如每个服务器12可以在网络的哪个安全区内进行操作。
根据本公开的技术,网络系统8实现可扩展的多维策略框架,以支持用于控制在用于数据中心10的一个或多个计算环境内执行的应用程序工作负载中的网络流量的策略的灵活应用,数据中心10可以沿着多个不同维度进行分类。例如,这些类别可以包括应用、部署、应用层、地理站点、虚拟网络、虚拟机、接口、项目、安全要求、质量要求、物理设备(例如路由器或交换机)、用户或合规性要求。安全要求的一个示例是加密通信。每种类型的类别表示生成或消耗数据中心10的网络流量的应用程序工作负载的维度。
作为示例,管理员可以经由SDN控制器23定义用于管理网络基础设施(包括交换结构14和通信隧道)的一组网络策略。每个策略可以是包括用于定义策略的多个类别的数据结构。策略的一个示例是安全策略,其指示要使用增强加密技术来加密与一种类型的应用的通信,并且因此要求SDN控制器23配置某些基于加密的隧道作为跨越交换结构14的网络的一部分,或者甚至在网络基础设施内创建某些区,其中每个区为具有特定加密级别(例如,未加密、高加密、仅入站加密、仅出站加密)的非隧道提供入口和出口。
例如,SDN控制器23可以分配不同的多组区,每组区包括一个或多个计算设备(例如,服务器12中的一个或多个),例如以将计算设备分组成区。安全策略可以将计算设备分组成一个或多个区,该一个或多个区经由被配置为承载加密通信的隧道子集通信。SDN控制器23可以标识安全策略中的多组区。作为示例,SDN控制器23可以分配包括第一组计算设备的第一组区,在第一组计算设备内在隧道中承载加密通信。例如,第一组计算设备形成用于隧道的第一子集的端点计算设备,SDN控制器23被配置为承载加密通信。SDN控制器23可以分配包括第二组计算设备的第二组区,在第二组计算设备内在隧道中承载其他通信(例如,未加密通信或未增强的加密通信)。例如,第二组计算设备形成用于隧道的第二子集的端点计算设备,SDN控制器23被配置为不需要承载加密通信。
SDN控制器23可以将网络安全策略存储在其本地存储器或数据中心10A的一些其它存储器中。以这种方式,SDN控制器23可以配置网络(例如,交换结构14)以在计算设备(例如,服务器12)之间形成隧道以实现安全策略。例如,SDN控制器23在驻留在SDN控制器23中的计算设备之间配置加密隧道(其是所有隧道的子集),为计算设备分配区(例如,把计算设备分组成区)以承载加密通信。SDN控制器23还在驻留在SDN控制器23中的计算设备之间配置未加密隧道(其是所有隧道的另一子集的),为不需要承载加密通信的计算设备分配区。
安全策略定义了需要加密通信的虚拟化应用程序工作负载的类型(在某些示例中,包括指定特定应用程序工作负载的信息)。编制引擎22使用安全策略信息,例如需要加密通信的虚拟化应用程序工作负载的类型和在安全策略中定义的用于经由被配置为承载加密通信的隧道子集的隧道进行通信的计算设备的区,以选择要在其上部署(例如,启动)虚拟化应用程序工作负载的计算设备。
在一个或多个示例中,SDN控制器23例如在要启动给定实例时向编制引擎22公开安全策略,使得编制引擎22可以检索和访问安全策略。基于对底层网络安全策略的公开,编制引擎22可以有利地确定哪些服务器12将执行应用程序。即,通过公开SDN控制器23用于配置交换结构14和通信网络的底层网络级安全策略,高级编制引擎可以实现改进的能力,以跨数据中心经由隧道在具有适当连接性的服务器12上启动工作负载应用程序。如下文更详细描述的,在各个服务器12上执行的策略代理可以确保通信正根据安全策略被加密。
在编制引擎22公开于底层安全策略的程度上,编制引擎22可能无法访问指定SDN控制器23形成为网络的一部分以实现安全策略的隧道的信息。例如,编制引擎22可以检索指示需要增强加密的应用程序工作负载的类型的信息,以及检索指示哪些服务器12提供增强加密的信息。然而,编制引擎22可能不知道在SDN控制器23的控制下的特定隧道,加密通信在该特定隧道上在服务器12之间行进。以这种方式,编制引擎22能够基于指示增强加密的安全策略来选择要在其上执行应用程序工作负载的服务器12中的一个,而不必需要基于以所选择的服务器12中的一个作为端点之一而形成的隧道来选择服务器12中的一个。相反,SDN控制器23可以被配置为控制和维护隧道。因此,编制引擎22可以选择要在其上启动(例如,执行)应用程序工作负载的计算设备(例如,服务器12中的一个),并且SDN控制器23可以确保存在用于提供加密通信以实现安全策略的隧道。
编制引擎22可以以各种方式从底层SDN控制器23检索安全策略。作为一个示例,管理员24安装用于编制引擎22的软件插件,其中插件提供允许编制引擎22从SDN控制器23检索安全策略的SDN接口,即使编制引擎和SDN控制器23通常可以在基于云的环境中在不同级别的网络控制下操作并且可以由不同的供应商提供。然而,除了使用插件之外还有的技术或不同于使用插件的技术可以允许编制引擎22访问来自SDN控制器23的信息。
在一些示例中,本文描述的策略框架允许管理员标记跨多个级别执行或以其他方式启用具有特定维度的应用程序工作负载的对象。如本文所述,“标签”是指提供根据特定值或值的集合来对对象进行分类的信息的数据结构。在一些示例中,标签包括键/值对,其中键描述对象的类别,并且值提供类别的描述符。作为示例,在标签包括第一键/值对的情况下,标签的键是“应用程序”,并且与该键相关联的值是“财务”应用程序。这些对象的示例级别(例如,示例类别)包括全局环境级别、项目级别、虚拟网络级别、虚拟机级别以及接口级别。在一个示例中,标签映射对象的安全需求。标签可以是预定义的(例如,应用程序、部署、应用层或地理站点的标签),或者可以在预配置期间隐式地分配(例如,诸如,描述基础设施、机架、集群或数据中心的标签,该标签被预配置以支持应用程序)。在一些示例中,多个标签应用于单个对象(例如,“应用程序”和“地理站点”标签可以应用于单个虚拟机),但是对象可以每个类型和/或类别仅具有单个标签。在进一步的示例中,用户可以定义“标记”以用作用于标签的键/值对的键,使得用户可以定制或创建用于标记对象的他或她自己的类别。此外,如本文所使用的,“标记”对象是指在由包括在策略规则中的标签指定的类别中对对象进行分类。
然后,可以根据对应于带标签的对象所属的类别的标签沿着多个维度来表示策略。然后,在托管应用程序工作负载的计算设备上执行的分布式策略代理可以将策略应用于作为类别成员的带标签的对象,以允许或拒绝在以一个或多个维度的一个或多个类别标记了的带标签对象之间的业务流。至少在一些情况下,策略代理在一个或多个虚拟机的接口级别应用策略,以允许或阻塞流向和/或来自一个或多个虚拟机的接口的网络流量。
在一些示例中,描述了用于在类别之间传送策略框架的边界网关协议(BGP)的扩展。例如,策略代理可以从策略控制器接收包括指定一个或多个策略规则的扩展团体的BGP消息,每个策略规则包括一个或多个标签,该一个或多个标签包括与包括带标签的对象的类别相对应的一个或多个键/值对。此外,该一个或多个策略规则中的每个策略规则可以指定是允许还是阻塞由一个或多个标签标记的对象之间的网络流量。关于BGP扩展团体的实现的附加信息描述在“BGP Extended Communities Attribute”,RFC4360,因特网工程任务组(IETF),2006年2月,可在http://tools.ietf.org/rfc/rfc4360上获得,其全部内容通过引用结合于此。因此,本公开的技术可以允许跨多个数据中心10内的不同环境可扩展地部署策略。此外,本公开的技术可以降低多个数据中心10内的此类策略的复杂性并简化其管理。
标签的另一示例是指示哪些计算设备被配置为提供增强加密的信息。例如,服务器12A-12N(其是计算设备的示例)中的每一个可以被配置为提供某种级别的加密。然而,服务器12A-12N中的某些服务器可以被配置为相对于服务器12A-12N中的其它服务器提供更高级别的加密。提供增强加密的服务器被称为服务器的加密集群或计算设备的加密集群。
例如,SDN控制器23可以形成包括服务器12中的能够提供增强加密的一个或多个服务器以及服务器12中的不能提供增强加密的一个或多个服务器的安全区。例如,由SDN控制器23定义的安全策略将服务器12分组成经由全部隧道的各个隧道子集进行通信的一个或多个区,其中隧道子集被配置为承载加密通信。安全区中能够提供增强加密的服务器被称为计算设备的加密集群。这些安全区不必是物理上分离的区,而是用于区分提供增强加密的服务器12和不提供增强加密的服务器12的逻辑区。SDN控制器23使用指示哪些服务器12属于哪个安全区的信息来配置网络(例如,交换结构14)以形成隧道。例如,SDN控制器23可以分配第一组区,在第一组区内在隧道中传送加密通信,并且分配第二组区,在第二组区内在隧道中传送其他通信(例如,未加密的或加密的但不具有增强的加密)。
作为一个示例,服务器12A-12N中的每一个可以被配置为根据三重数据加密标准(DES)算法执行加密,并且服务器12A可以被配置为根据高级加密标准(AES)执行加密。在该示例中,与服务器12B-12N相比,服务器12A被配置为使用AES提供更高级别的加密。例如,服务器12A可以具有其中键为服务器和值为增强加密的标签。在本公开中,较高级别的加密通常意味着使用更加繁重的加密技术来加密通信,与其它类型的加密相比,该加密技术使得通信不太容易被未经授权方攻击和解密。
如上所述,SDN控制器23可以实现指示是否要加密与一种类型的应用程序工作负载的通信的安全策略。作为一个示例,安全策略可以引用应用程序工作负载标签(例如,标签标识符),并且指示具有特定标签的应用程序工作负载的类型是要接收加密通信、输出加密通信或者接收并输出加密通信。管理员24可以为应用程序工作负载标签定义标签键和值(例如,财务作为标签键)。尽管工作负载标签被描述为由安全策略用来指示哪些类型的应用程序工作负载需要具有加密通信的机制,但是这些技术不限于此。可以利用指示需要加密与应用程序工作负载的通信的任何机制,并且标签是一种示例方式,安全策略可以用其指示需要加密与具有标签的应用程序工作负载类型的应用程序工作负载的通信。
在一些示例中,SDN控制器23可以标记特定应用程序工作负载并指示该应用程序工作负载需要加密。标记特定应用程序工作负载以指示该应用程序工作负载需要加密是一种示例方式,其中SDN控制器23可以在安全策略中定义需要加密的应用程序工作负载的类型。作为另一示例,SDN控制器可以标记应用程序工作负载的类型(例如,财务的键值)。安全策略可以定义具有特定标签的应用程序工作负载(例如,具有财务的键值的所有应用程序工作负载)将具有加密通信。
编制引擎22可以访问安全策略以确定哪些应用程序工作负载需要加密通信,并且访问指定哪些计算设备(例如,服务器12A-12N)是加密增强的(例如,指示服务器是否是加密增强的服务器12A-12N的标签)。然后,编制引擎22可以选择加密增强的计算设备中的一个或多个以执行需要增强的加密通信的应用程序工作负载。然后,编制引擎22可以将应用程序工作负载部署到所选计算设备。所选计算设备是由SDN控制器23形成的用于实现安全策略的隧道之一的端点(例如,用于承载加密通信的隧道之一的端点)。加密可以由固定功能的硬件加密电路执行,但是技术不限于此。
作为示例,一个安全策略指示财务的应用程序工作负载将接收和发送加密通信。另一安全策略指示游戏的应用程序工作负载不需要接收和发送加密通信。另一安全策略指示发送到特定数据库的应用程序工作负载将发送加密通信,但不需要接收加密通信,等等。
在该示例中,编制引擎22可以访问安全策略并访问指示哪些计算设备是加密增强的计算设备(例如,哪些计算设备是计算设备的加密集群的一部分)的信息。然后,编制引擎22可以基于安全策略、指示哪些计算设备是加密增强的信息以及要部署的应用程序工作负载来选择一个或多个计算设备。
例如,如果要部署财务工作负载,则编制引擎22可以基于所访问的安全策略来确定应用程序工作负载将接收和发送加密通信。然后,编制引擎22可以选择服务器12A,因为在该示例中,服务器12A是加密增强的,并且使得财务工作负载部署在服务器12A上。服务器12A可以加密要发送到财务工作负载的任何通信,并且加密财务工作负载输出的任何通信。
以这种方式,编制引擎22可以确定在哪些计算设备上部署工作负载应用程序以确保实现安全策略。例如,管理员24早在需要执行任何工作负载之前就定义了安全策略。因此,编制引擎22现在可以访问安全策略以确定要在哪些服务器12上执行需要加密的工作负载应用程序。
如上所述,在本公开中描述的技术中,编制引擎22访问由SDN控制器23实现的用于多个计算设备的安全策略,每个计算设备为应用程序工作负载提供执行环境。在一个示例中,安全策略指示与一种类型的应用程序工作负载的通信需要加密。例如,SDN控制器23可以向一种或多种类型的应用程序工作负载分配由管理员24定义的标签,该标签指示各个类型的应用程序工作负载是否需要加密通信。在该示例中,安全策略指示与具有标签的一种或多种类型的应用程序工作负载的通信需要加密。
在一些示例中,SDN控制器23还可以将标签分配给将多个通信设备中的一个或多个指定为加密增强的计算设备(例如,被配置为与其他计算设备相比提供更高级别的加密的计算设备)的多个通信设备中的一个或多个。这些标签可以是将多个计算设备中的一个或多个指定为加密增强的计算设备的数据。编制引擎22基于指示计算设备是加密增强的计算设备的标签来选择计算设备,以执行安全策略中指示的应用程序工作负载。编制引擎22将应用程序工作负载部署到所选计算设备。
如下文更详细描述的,在一些示例中,安全策略是包括多个字段的数据结构。字段之一指示安全策略中标识的应用程序工作负载的类型需要加密。字段之一指示要执行的工作负载应用程序的应用程序工作负载的类型(例如,应用程序工作负载的标签)。在本公开中描述的技术中,编制引擎22能够访问指示安全策略的该数据结构(例如,通过执行向编制引擎22提供对来自SDN控制器23的信息的访问的插件)。编制引擎22解析安全策略以确定应用程序工作负载是否需要加密。编制引擎22还从SDN控制器23访问指示哪些计算设备被指定为加密增强的计算设备的标签。编制引擎22将由安全策略所指示的需要加密的应用程序工作负载部署到由指示哪些计算设备是加密增强的计算设备的标签所指示的加密增强的计算设备之一。
在一些技术中,编制引擎22基于现有调度算法确定哪些服务器12A-12N执行应用程序工作负载,该调度算法通常基于服务器的负载或中央处理单元(CPU)、存储器和一些联网参数来部署应用程序工作负载,或者简单地以轮询方式选择服务器。然而,这些技术在选择执行应用程序工作负载的服务器时,没有考虑到定义通信是否要加密的安全策略。
在一些技术中,SDN控制器23可以使所有通信被加密以确保需要被加密的通信被加密,但代价是加密了不必需要被加密的通信。由于各种原因,这种技术可能是低效的。例如,只有服务器12A-12N的子集可以被加密增强,并且因此,通过加密所有通信,许多服务器12A-12N可以保持空闲,而只有服务器12A-12N的子集执行所有应用程序工作负载。
一些技术可以定义指示加密的安全策略,使得所有端点的工作负载(例如,在服务器12上执行的,形成各个隧道的端点的应用程序工作负载)通信被加密。然而,即使在这种技术中,也强制在提供增强加密的服务器12A-12N上执行不需要被加密的通信。
本公开中描述的技术允许用户可扩展和可定义的安全策略,该安全策略允许用户(例如,管理员24)定义SDN控制器23向编制引擎22公开的安全策略,该安全策略使编制引擎22能够基于那些应用程序工作负载所需的加密级别来选择计算设备作为用于启动特定虚拟化应用程序工作负载的目标主机,这些应用程序工作负载例如包括跨越交换结构并由那些服务器终止的网络隧道的安全特性(即,加密级别)。此外,如本文所述,这可以提供某些技术优势,因为编制引擎22标识并利用主机服务器12来实例化应用程序工作负载,从而选择主机服务器12,该主机服务器12为由跨数据中心10A的交换结构14的SDN控制器23管理和配置的必要隧道提供直接连接。以这种方式,编制引擎22选择在其上执行应用程序工作负载的计算设备,使得需要加密的通信被加密,而其它通信不被加密,或者至少不被加密到更高的加密级别,而不是要求所有通信都被加密或者服务器输出的所有通信都被加密。
在以上示例中,编制引擎22可以响应于启动虚拟化应用程序工作负载的请求来选择计算设备(例如,服务器12A-12X中的一个),以确保虚拟化应用程序工作负载被部署到安全策略中定义的用于经由被配置为承载加密通信的隧道进行通信的区中的计算设备。然而,示例技术不限于此。
在一些示例中,虚拟化应用程序工作负载可以在服务器12之间移动。例如,服务器12A在其VM之一上正在执行虚拟化应用程序工作负载。服务器12A停止执行该虚拟化应用程序工作负载,并且服务器12B在其VM之一上,可能从服务器12A停止的地方开始重新执行该虚拟化应用程序工作负载。虚拟化应用程序工作负载切换服务器的处理被称为正处于“VMotion”中的虚拟化应用程序工作负载。在该示例中,服务器12B可能不在由SDN控制器23分配的作为具有被配置为承载加密通信的隧道的区中。因此,如果虚拟化应用程序工作负载处于VMotion中,则编制引擎22或可能的某个其他单元(例如,服务器的策略代理)执行本公开中描述的一个或多个示例技术,以确保虚拟化应用程序工作负载被部署在一计算设备上,该计算设备包括于安全策略中定义的用于经由被配置为承载加密通信的至少一个隧道进行通信的区之一中。
在一些示例中,标签指示在部署(例如,启动)虚拟化应用程序工作负载之后,需要加密通信的特定类型的虚拟化应用程序工作负载是否可以改变。例如,用于特定类型的虚拟化应用程序工作负载的标签可以指示该虚拟化应用程序工作负载不需要加密通信。在被部署和启动之后,管理员24改变标签以指示该类型的虚拟化应用程序工作负载需要加密通信。SDN控制器23可以向服务器12的每个策略代理分发信息,并且正在执行虚拟化应用程序的服务器12的策略代理可以输出警报,指示其相关联的服务器12是否不在支持加密通信的区中。如果SDN控制器23接收到这样的警报,则SDN控制器23可以将安全策略公开给编制引擎22,使得编制引擎22可以选择在具有被配置为承载加密通信的隧道的区中的服务器12之一
图2是进一步详细示出图1的数据中心10A的示例实现的框图。在图2的示例中,数据中心10A包括将交换结构14从物理交换机16、18延伸到软件或“虚拟”交换机30A-30X(统称为“虚拟路由器30”)的互连。虚拟路由器30动态地创建和管理可用于应用实例之间的通信的一个或多个虚拟网络34。在一个示例中,虚拟路由器30将虚拟网络执行为覆盖网络,该覆盖网络提供将应用程序的虚拟地址从在其上执行应用程序的服务器12A-12X(“服务器12”)之一的物理地址(例如,IP地址)解耦的能力。每个虚拟网络可以使用其自身的寻址和安全方案,并且可以被视为与物理网络及其寻址方案正交。可以使用各种技术来通过物理网络在虚拟网络34内以及跨虚拟网络34传输分组。在一些示例中,本公开中描述的技术在虚拟网络34内提供多播服务,而不需要底层物理网络中的多播支持。
每个虚拟路由器30可以在服务器12中的每一个的管理程序、主机操作系统或其他组件内执行。服务器12中的每一个可以表示x86或能够执行虚拟机36的其他通用或专用服务器。在图2的示例中,虚拟路由器30A在管理程序31内执行,管理程序31也通常被称为虚拟机管理器(VMM),其提供允许多个操作系统同时在服务器12之一上运行的虚拟化平台。在图2的示例中,虚拟路由器30A管理虚拟网络34,虚拟网络34中的每一个提供用于在由管理程序31提供的虚拟化平台之上执行一个或多个虚拟机(VM)36的网络环境。每个VM 36与虚拟网络VN0-VN1中的一个相关联,并且可以表示运行客户应用程序(例如Web服务器、数据库服务器、企业应用程序或托管用于创建服务链的虚拟化服务)的租户VM。在一些情况下,服务器12中的任意一个或多个或另一计算设备可以直接托管客户应用程序,即,不作为虚拟机。在一些情况下,一些VM 36可以表示容器,另一种形式的虚拟化执行环境。也就是说,虚拟机和容器都是用于执行应用程序工作负载的虚拟化执行环境的示例。
通常,每个VM 36可以是任何类型的软件应用程序,并且可以被分配用于在各个虚拟网络34内使用的虚拟地址,其中每个虚拟网络可以是由虚拟路由器30A提供的不同的虚拟子网。VM 36可以被分配其自己的虚拟三层(L3)IP地址,例如用于发送和接收通信,但是可能不知道虚拟机正在其上执行的物理服务器12A的IP地址。以这种方式,“虚拟地址”是应用程序的地址,其不同于底层物理计算机系统(例如,图1或图2的示例中的服务器12A)的逻辑地址。
在一个实现中,服务器12中的每一个包括虚拟网络(VN)代理35A-35X(统称为“VN代理35”)中的控制虚拟网络34并且协调服务器12内的数据分组的路由的对应一个。通常,每个VN代理35与虚拟SDN控制器23通信,虚拟SDN控制器23生成控制通过数据中心10A的分组的路由的命令。VN代理35可以用作虚拟机36和SDN控制器23之间的控制平面消息的代理。例如,VM 36可以请求经由VN代理35A使用其虚拟地址来发送消息,并且VN代理35A反过来可以发送消息并且请求接收对于发起第一消息的VM 36的虚拟地址的消息的响应。在一些情况下,VM 36可以调用由VN代理35A的应用程序编程接口呈现的过程或函数调用,并且VN代理35A也可以处理消息的封装,包括寻址。如下面将更详细描述的,根据本公开的技术,每个VN代理35还包括用于将一个或多个策略应用于一个或多个类别的各个策略代理139A-139X(统称为“策略代理139”)。
在一个示例中,由虚拟网络域内的虚拟机36执行的应用程序的实例生成或消耗的网络分组(例如,三层(L3)IP分组或二层(L2)以太网分组)可以封装在由物理网络传输的另一分组(例如,另一IP分组或以太网分组)中。在虚拟网络中传输的分组在本文中可以被称为“内部分组”,而物理网络分组在本文中可以被称为“外部分组”或“隧道分组”。物理网络分组内的虚拟网络分组的封装和/或解封装可以在虚拟路由器30内(例如,在运行在服务器12中的每一个上的管理程序或主机操作系统内)执行。作为另一示例,封装和解封装功能可以在第一跳TOR交换机16处在交换结构14的边缘处执行,该第一跳TOR交换机16是从发起分组的应用实例移除的一跳。该功能在本文中被称为隧穿,并且可以在数据中心10A内用于创建用于互连服务器12的一个或多个隧道。除了IPinIP之外,可以使用的其它示例隧穿协议包括GRE上的IP、VXLAN、GRE上的MPLS、UDP上的MPLS等。
如上所述,SDN控制器23提供逻辑集中的控制器,用于促进数据中心10A内的一个或多个虚拟网络的操作。例如,SDN控制器23可以维护路由信息库,例如存储物理网络以及数据中心10A的一个或多个网络的路由信息的一个或多个路由表。类似地,交换机16、18和虚拟路由器30维护路由信息,例如一个或多个路由和/或转发表。在一个示例实现中,管理程序31的虚拟路由器30A为每个虚拟网络34实现网络转发表(NFT)32。通常,每个NFT 32存储各个虚拟网络34的转发信息,并标识数据分组要被转发到哪里以及分组是否要在隧穿协议中封装,例如用可以包括虚拟网络协议栈的不同层的一个或多个报头的隧道报头封装。
在一个或多个示例中,SDN控制器23还包括策略控制器25。策略控制器25被配置为跨多个级别标记多个对象。在一些示例中,多个级别包括对象的级别,例如对象的全局环境级别、项目级别、虚拟网络级别、虚拟机级别或接口级别。在进一步的示例中,策略控制器25跨多个类别标记多个对象。在一些示例中,多个类别包括在VM 36、部署、应用层、地理站点、虚拟网络、VM 36、接口、项目、安全要求、质量要求、用户或合规性要求内执行的应用程序。
在一些示例中,策略控制器25还向VN代理35的各个策略代理139分发多个策略。多个策略中的每个策略包括用于控制网络流量的一个或多个策略规则。多个策略规则中的每个策略规则指定一个或多个标签,每个标签进一步指定类别的一个或多个维度。
在接收到多个策略时,每个策略代理139将多个策略中的每个策略的一个或多个策略规则应用于与一个或多个策略规则的标签相对应的带标签的对象,以控制带标签的对象之间的网络流量。例如,在策略控制器25的指导下,策略代理139在用与一个或多个策略规则的标签相对应的标签标记的VM 36的逻辑接口处表达一个或多个策略规则。策略代理139基于该一个或多个策略规则来允许或阻塞到逻辑接口和/或来自逻辑接口的网络流量。
作为以上的说明,在图2的示例中,在策略控制器25的指导下的策略代理139A已经将虚拟机VM0 36、VM1 36、VM2 36和VM3 36标记为属于标签1所描述的类别。此外,策略代理139A已经将虚拟网络VN0 34、VN1 34和VN2 34分别分类在由标签2描述的类别中。此外,虚拟机VM036、VM1 36和VM2 36属于第一项目33,策略代理139A已经将该第一项目33分类为属于标签3所描述的类别。更进一步地,策略代理139A已将服务器1 12A分类为属于标签4所描述的类别。
在一些示例中,一个或多个策略规则描述安全或防火墙规则,并且基于一个或多个安全或防火墙规则,每个策略代理139可以允许或拒绝由一个或多个标签描述的类别之间的网络流量。此外,每个策略代理139可以基于标签来加密或不加密网络流量(例如,通信)。在其他示例中,一个或多个策略规则中的每一个描述一个或多个防火墙、网络、应用程序或全局策略规则。因此,通过应用如本文所述的策略,策略代理139可以应用特定的策略规则,以便能够启用具有特定维度的应用程序工作负载。因此,本公开的技术可以允许跨多个数据中心10内的不同环境可扩展地部署策略。此外,本公开的技术可以降低多个数据中心10内的此类策略的复杂性并简化其管理。
作为安全策略的一个示例,策略控制器25可以定义哪些类型的应用程序工作负载需要增强的加密通信。策略控制器25可以定义这种安全策略的一种方式是调出应用程序工作负载类型的标签,并指示具有特定标签的应用程序工作负载类型是接收或发送增强的加密通信。下面将更详细地描述安全策略的数据结构的示例。策略控制器25可以将指示哪些类型的应用程序工作负载需要增强的加密通信的安全策略分发到策略代理139,然后策略代理139确保安全策略在各个服务器12上实现。
例如,服务器12A可以属于由标签4描述的类别,如上文所描述和图2中所示。在一些示例中,标签4可以指示服务器12中的特定一个是加密增强的计算设备。编制引擎22可以访问指定服务器12中的一个或多个作为加密增强的计算设备的数据(例如,访问指示哪些服务器12属于由标签4描述的类别的数据)。基于指示哪些服务器12是加密增强的计算设备的数据以及基于指示需要哪些应用程序工作负载来接收和/或发送加密通信的安全策略,编制引擎22可以选择应用程序工作负载要在其上执行的一个或多个服务器12。各个策略代理139可以使得服务器12在向执行中的应用程序工作负载发送通信之前执行增强的加密,或者基于由策略控制器25分发的安全策略对由应用程序工作负载生成的通信执行增强的加密。
以这种方式,服务器12A的策略代理139A接收由策略控制器25分发的安全策略,该安全策略指示与多个应用程序工作负载中的一应用程序工作负载的通信需要加密。如上所述,服务器12A是计算设备的示例,该计算设备是与网络互连的多个计算设备中的一个,每个计算设备为多个应用程序工作负载提供执行环境。在该示例中,服务器12A被指定为加密增强的计算设备。
在一些示例中,策略是“继承的”,因为应用于父对象的策略同样以分层的方式应用于作为父对象的子对象的对象。作为一个示例,策略代理139A接收包括应用于项目33的标签3的第一策略规则。策略代理139A将第一策略规则应用于项目33。策略代理139A还将第一策略规则应用于第一项目的子项目,例如第一项目内的虚拟网络、虚拟机和接口,但不应用于第二项目内的虚拟网络、虚拟机和接口,以便允许或拒绝到第一项目以及到由第一策略规则所指定的第一项目内的对象的网络流量。在图2的示例中,策略代理139A将第一策略规则应用于虚拟机VM0 36、VM1 36和VM2 36,因为虚拟机VM0 36、VM1 36和VM2 36是项目33的子级。然而,策略代理139A不将第一策略规则应用于虚拟机VM3 36,虚拟机VM3 36不是项目33的部分。
继续前述示例,策略代理139A接收包括描述虚拟机36的标签1的第二策略规则。因此,策略代理139A将第一策略规则和第二策略规则两者应用于虚拟机VM0 36、VM1 36和VM236。此外,策略代理139A将第一策略规则和第二策略规则两者应用于虚拟机VM0 36、VM1 36和VM2 36的接口(未示出),虚拟机VM0 36、VM1 36和VM2 36是虚拟机36的子对象。然而,策略代理139A不对项目33应用第二策略规则,因为项目33是虚拟机VM0 36、VM1 36和VM2 36的父级而不是子级。
在本公开技术的一些示例中,策略框架实现复杂的正则表达式以将这种策略的标签应用于特定环境或基础设施。例如,这样的策略规则包括对工作负载进行分组和/或分段的标签表达式。作为另一示例,策略代理139A应用匹配条件以将标签表达式与对应于标签表达式的带标签的对象进行匹配。因此,全局策略可以被分发到多个策略代理139,并且每个策略代理139可以选择性地仅应用那些包括对应于带标签对象的标签表达式的策略规则。
在一些示例中,策略控制器25经由边界网关协议(BGP)分发一个或多个策略规则。这种BGP消息可以包括用于特定业务流的动作,例如允许或拒绝该流以及用于应用指定动作的一个或多个目的地协议和端口的列表。在这样的示例中,BGP消息可以进一步指定对象的一个或多个标签作为BGP的扩展团体。关于BGP的附加信息被描述在“BGP MPLS-BasedEthernet VPN”,RFC7432,因特网工程任务组(IETF),2015年2月,可在http://tools.ietf.org/html/rfc7432获得,其全部内容通过引用结合于此。
在一个或多个示例中,在接收到安全策略之后,策略代理139各自被配置为确定与在各个计算设备上执行的应用程序工作负载的通信是否包括与安全策略中指示的应用程序工作负载的通信。例如,策略代理139A可以将在服务器12A上执行的应用程序工作负载的标签与应用程序工作负载的安全策略中指示的标签进行比较。如果标签匹配,则策略代理139A确定在安全策略中指示了该应用程序工作负载,并确保服务器12A遵循安全策略(例如,通过加密通信)。如果标签不匹配,则策略代理139A确定该特定安全策略不影响与该应用程序工作负载的通信。
图3是示出其中可以实现本文描述的技术的示例的多个数据中心10的示例的框图。每个数据中心10A-10X(统称为“数据中心10”)可以以与图1和图2的数据中心10基本类似的方式操作。在一些示例中,一个或多个数据中心10实现执行Openstack的云环境,而在另一示例中,一个或多个数据中心10是执行Kubernetes的云环境,而又在另一示例中,一个或多个数据中心10实现执行Amazon Web服务的云环境,而在又一示例中,一个或多个数据中心10在“裸金属”基础设施上执行。在一些示例中,每个数据中心10执行与每个其他数据中心10不同的基础设施。
在图3的示例中,每个数据中心10包括数据库308和三个不同的环境:开发环境310、登台(staging)环境312和生产环境314。每个数据中心10的每个环境能够执行一个或多个应用程序302A-302D(统称为“应用程序302”),例如在数据中心10A的开发环境310A内执行的应用程序302A、在数据中心10A的生产环境314A内执行的应用程序302B、在数据中心10B的开发环境310B内执行的应用程序302C以及在数据中心10B的登台环境312B内执行的应用程序302D。在一个示例中,每个应用程序302是财务应用程序的实例。本文所述的策略对于上述许多不同类型的云环境中的应用程序是稳健的和可扩展的。
在一个环境内,每个应用程序可以包括多个应用程序。在图3的示例中,开发环境310A的应用程序302A执行web进程304A和应用程序接口(API)进程306A。此外,生产环境314A的应用程序302B执行web进程304B和API进程306B。开发环境310B的应用程序302C执行web进程304C和API进程306C。更进一步,登台环境312B的应用程序302D执行web进程304D和API进程306D。然而,在其他示例中,相应环境310A、312A、314A、310B、312B或314B的每个应用程序302可以执行与彼此的应用程序302附加的或不同的进程。此外,在一些示例中,在每个相应环境310A、310B、312A、312B、314A和314B内执行的应用程序可以与在彼此的环境310A、310B、312A、312B、314A和314B内执行的应用程序相似或不同。
可能希望确保相应环境310、312、314的每个应用程序302的进程304、306不与不同环境310、312、314内的应用程序302的进程304、306交换网络流量,同时仍然允许网络流量在同一应用程序302内的不同进程304、306之间流动。例如,管理员可能希望允许web进程304A和API进程306A之间的网络流量,因为web进程304A和API进程306A中的每一个在开发环境310A内的同一应用程序302A内操作。此外,管理员可能希望阻止web进程304A(例如,在数据中心10A的开发环境310A内操作)和API进程306B(例如,在数据中心10A的生产环境314A内操作)之间或web进程304A(例如,在数据中心10A的开发环境310A内操作)和API进程306C(例如,在数据中心10B的开发环境310B内操作)之间的网络流量。此外,管理员可能希望允许在同一数据中心10内的应用程序302内执行的进程304、306访问同一数据库308,而不管特定应用程序302在其中执行的特定环境310、312或314。例如,管理员可能希望允许在应用程序302A内执行的API进程306A和在应用程序302B内执行的API进程306B访问每个访问数据库308A。
如果管理员要独立地管理每个数据中心10内的每个环境310、312和314内的每个应用程序302内的每个进程304、306的网络流量策略,则管理员可能难以确保每个网络流量策略满足安全性、可靠性和质量要求。此外,跨多个数据中心10升级一个或多个策略可能变得麻烦或难以管理。
根据本公开的技术,将指定一个或多个类别的一个或多个标签应用于每个进程304、306。如图3的示例中所示,VNC 22的策略控制器25将标签“1A”应用于web进程304A,该标签指定web进程304A属于开发环境310A。类似地,策略控制器25将标签“2A”应用于API进程306A,该标签指定web进程304A属于开发环境310A。相反,策略控制器25将标签“1B”应用于web进程304B,并将标签“2B”应用于API进程306B,每个标签指定相应应用程序属于生产环境314A。此外,标签“1C”应用于web进程304C,标签“2C”应用于API进程306C,每个标签指定相应应用程序属于开发环境310B;并且标签“1D”应用于web进程304D,并且标签“2D”应用于API进程306D,每个标签指定相应应用程序属于登台环境312B。
在一些示例中,策略控制器25可以指定指示进程304和306中的哪些进程需要加密通信的安全策略。作为一个示例,策略控制器35可以定义安全策略,该安全策略指示从web304A到API 306A的通信不需要加密,但是从API 306A到数据库308A的通信要加密。在该示例中,安全策略可以指示具有标签2A的应用程序将输出具有增强加密的通信,并且具有标签1A的应用程序不需要输出具有增强加密的通信。
在一个示例中,VN代理35的策略代理139从策略控制器25接收指定一个或多个策略规则的一个或多个策略,该一个或多个策略规则用于允许或阻塞进出应用程序302的网络流量,或用于使用增强加密或不使用增强加密来加密通信。该一个或多个策略规则中的每一个指定一个或多个标签,该标签中的每一个指定用于应用策略规则的一个或多个类别。策略代理139仅对每个应用程序302的每个进程304、306应用那些策略规则,该策略规则包括与应用于各个进程304、306的标签相匹配的标签。
例如,策略代理139可以接收第一策略规则,该第一策略规则允许去往API进程306B并且包括标签1B的网络流量。策略代理139可以检查进程304、306中的每一个的标签,但仅将策略规则应用于web进程304B,因为web进程304B被分类在由标签1B指定的同一类别内。VN代理35随后可以允许从执行web进程304B的虚拟机的接口流向执行API进程306B的虚拟机的接口的网络流量,并且阻塞流向执行API进程306B的虚拟机的接口的其它流量,例如从执行web进程304A的虚拟机的接口流出的流量。
类似地,策略代理139可以接收第二策略规则,该第二策略规则允许去往数据库308A并且包括标签2A和2B的网络流量。策略代理139可以检查应用于进程304、306中的每一个的类别。策略代理139仅将策略规则应用于API进程306A和306B,因为API进程306A和306B分别被分类在由标签2A和2B指定的同一类别内。VN代理35随后可以允许从执行API进程306A的虚拟机的接口或执行API进程306B的虚拟机的接口流向数据库308A的接口的网络流量,并且阻塞流向数据库308A的接口的其它流量,例如从执行API进程306D的虚拟机流出的流量。
如在前述示例中所描述的,第二策略规则可在布尔表达式(例如,(2A OR 2B))中指定标签2A和2B。然而,根据本公开的技术,每个策略规则可以进一步包括为一个或多个对象指定标签的复杂正则表达式。例如,策略规则可以包括一个或多个布尔运算符(例如,AND、OR、NOT)、数学运算符(例如,加、减、乘、除)、比特移位运算符、矩阵运算符、文本解析运算符、或前述任一项的组合。
作为另一示例,策略代理139可以接收指示来自API 306A(例如,具有标签2A的应用程序工作负载)的通信将在存储在数据库308A中之前被加密的第三策略规则。在该示例中,策略代理139可以使得策略代理139正在其上执行的服务器12A-12N中的相应一个使用增强的加密来加密API 306A输出的通信,并且将加密通信存储在数据库308A中。
在前述示例中,策略代理139实现列入白名单,因为虚拟机的指定接口之间的所有流量被抢先阻塞,并且一个或多个策略规则将特定业务流(例如,指定允许虚拟机的接口之间的特定业务流)列入白名单。在可选示例中,策略代理139实现列入黑名单,因为虚拟机的接口之间的所有流量被抢先允许,并且一个或多个策略规则将特定业务流(例如,指定阻塞虚拟机的接口之间的特定业务流)列入黑名单。在可选示例中,一个或多个策略规则可以包括在虚拟机的接口之间将特定业务流或业务流组列入白名单或列入黑名单的组合。
在图3的示例中,策略代理139被描述为从策略控制器25接收指定进程304、306所属的特定环境的标签。然而,在其他示例中,策略代理139可以接收指定用于组织进程304、306的其他类别的标签。例如,进程304、306的标签可以附加地或可选地指定一个或多个应用程序类型、部署、应用层、地理站点、虚拟网络、虚拟机、接口、项目、安全要求、质量要求、用户或合规性要求。
例如,一个或多个数据中心10实现执行OpenStack的云环境。在该示例中,云环境支持三个项目,每个项目提供一个包括三个虚拟网络的财务应用程序。在这样的数据中心10内,策略控制器25可以在项目级别分配一个或多个标签。例如,策略控制器25可以将包括“应用程序”的键和“财务”的值的标签以及包括“部署”的键和“开发”的值的标签分配给第一项目。策略控制器25可以将包括“应用程序”的键和“财务”的值的标签以及包括“部署”的键和“登台”的值的标签分配给第二项目。策略控制器25可以将包括“应用程序”的键和“财务”的值的标签以及包括“部署”的键和“生产”的值的标签分配给第三项目。此外,在每个项目内,策略控制器25可以将标签分配给三个虚拟网络中的每一个。例如,策略控制器25将包括“层”的键和“web”的值的标签分配给第一虚拟网络,将包括“层”的键和“应用程序”的值的标签分配给第二虚拟网络,以及将包括“层”的键和“数据库”的值的标签分配给第三虚拟网络。此外,策略控制器25可以将“计算设备”的键和“增强加密”的值分配给提供增强加密能力的一个或多个服务器12。策略控制器25还可以定义指示哪些应用程序工作负载需要加密通信的策略规则。策略控制器25将一个或多个策略规则分发到策略代理139,策略代理139基于应用于项目和虚拟网络的标签将一个或多个策略规则应用于数据中心10内的虚拟机的接口。
在一些示例中,数据中心10中的一个或多个是执行Kubernetes的云环境。在该示例中,云环境支持两个命名空间,每个命名空间提供一个包括三个虚拟网络的财务应用程序。在这样的数据中心10内,策略控制器25可以在命名空间级别分配一个或多个标签。例如,策略控制器25可以将包括“应用程序”的键和“财务”的值的标签、包括“部署”的键和“开发”的值的标签、以及包括“站点”的键和“用户”的值的标签分配给第一命名空间。策略控制器25可以将包括“应用程序”的键和“财务”的值的标签、包括“部署”的键和“生产”的值的标签、以及包括“站点”的键和“用户”的值的标签分配给第二命名空间。此外,在每个命名空间内,策略控制器25可以将标签分配给三个虚拟网络中的每一个。例如,策略控制器25将包括“层”的键和“web”的值的标签分配给第一虚拟网络,将包括“层”的键和“应用程序”的值的标签分配给第二虚拟网络,以及将包括“层”的键和“数据库”的值的标签分配给第三虚拟网络。类似于OpenStack示例,对于Kubernetes,策略控制器25可以将“计算设备”的键和“增强加密”的值分配给提供增强加密能力的一个或多个服务器12。策略控制器25还可以定义指示哪些应用程序工作负载需要加密通信的策略规则。策略控制器25将一个或多个策略规则分发到策略代理139,策略代理139基于应用于项目和虚拟网络的标签将一个或多个策略规则应用于数据中心10内的虚拟机的接口。
在一些示例中,第一数据中心10A实现执行Amazon Web服务的云环境,并且第二数据中心10B在“裸金属”基础设施上执行。在该示例中,数据中心10A支持包括三个虚拟网络并且在开发部署内执行的第一财务应用程序,而数据中心10B支持包括三个虚拟网络并且在生产部署内执行的第二财务应用程序。在该示例中,策略控制器25可以在应用程序级别分配一个或多个标签。例如,策略控制器25可以将包括“应用程序”的键和“财务”的值的标签、包括“部署”的键和“开发”的值的标签、以及包括“站点”的键和“用户”的值的标签分配给在数据中心10A内执行的第一应用程序。策略控制器25还可以将包括“应用程序”的键和“财务”的值的标签、包括“部署”的键和“生产”的值的标签、以及包括“站点”的键和“用户”的值的标签分配给在数据中心10B内执行的第二应用程序。此外,在每个应用程序内,策略控制器25可以将标签分配给三个虚拟网络中的每一个。例如,策略控制器25将包括“层”的键和“web”的值的标签分配给第一虚拟网络,将包括“层”的键和“应用程序”的值的标签分配给第二虚拟网络,以及将包括“层”的键和“数据库”的值的标签分配给第三虚拟网络。策略控制器25将一个或多个策略规则分发到策略代理139,策略代理139基于应用于项目和虚拟网络的标签将一个或多个策略规则应用于数据中心10内的虚拟机的接口。
在图3的示例中,策略控制器25被描述为在项目级别分发包括用于对象的标签的策略规则。然而,策略控制器25可以附加地或可选地分发策略规则,该策略规则包括指定各种不同对象级别(例如全局环境级别、项目级别、虚拟网络级别、虚拟机级别或接口级别)的标签。
在本公开技术的示例实现中,策略控制器25使用多个配置对象来实现一个或多个策略。作为一个示例,策略控制器25在全局级别应用第一组配置对象。第一组配置对象包括跨多个级别和/或类别的全局应用策略集、全局防火墙策略、全局防火墙规则和全局标签。策略控制器25将全局级别的第一组配置对象分发给策略代理139。策略代理139将与全局应用策略集、全局防火墙策略和全局防火墙规则相关联的全局标签匹配到用全局标签标记的对象。基于全局应用策略集、全局防火墙策略和全局防火墙规则,策略代理139允许或阻塞用全局标签标记的对象的接口之间的网络流量。
此外,策略控制器25在项目级别应用第二组配置对象。第二组策略规则可以包括跨多个级别的特定于项目的应用策略集、防火墙策略、防火墙规则和标签。策略控制器25在项目级别将第二组配置对象分发给策略代理139。策略代理139将与特定于项目的应用策略集、防火墙策略和防火墙规则相关联的项目标签匹配到用项目标签标记的对象。基于特定于项目的应用策略集、防火墙策略和防火墙规则,策略代理139允许或阻塞用项目标签标记的对象的接口之间的网络流量。
在进一步的示例中,策略控制器25可以指定较低级别的配置对象,例如在虚拟网络特定级别、虚拟机特定级别和/或接口特定级别定义的应用策略集、防火墙策略、防火墙规则和标签。通过这样做,策略控制器25可以将分层策略集应用于一个或多个数据中心10内的多个对象。因此,本公开的技术允许跨许多不同类型的部署和执行环境分布可扩展和稳健的简化流量策略。
图4是示出根据本文描述的技术执行用于虚拟网络的虚拟路由器120的示例计算设备100的框图。计算设备100可以表示图1至图3的服务器12中的任一个或例如TOR交换机16中的任一个的其它设备。
在该示例中,计算设备100包括耦接计算设备100硬件环境的硬件组件的系统总线142。系统总线142耦接存储器144、网络接口卡(NIC)106A-106B(统称为“NIC 106”)、存储盘107和具有多个处理核108A-108J(统称为“处理核108”)的多核计算环境102。网络接口卡106包括被配置为使用底层物理网络的链路交换分组的接口。多核计算环境102可以包括任意数量的处理器和任意数量的硬件核,例如从4个到数千个。处理核108中的每一个各自包括独立执行单元,以执行符合用于核的指令集架构的指令。每个处理核108可以被实现为单独的集成电路(IC)、或者可以被组合在一个或多个多核处理器(或“多核”处理器)内,该一个或多个多核处理器(或“多核”处理器)各自使用单个IC(即,芯片多处理器)来实现。
盘107表示计算机可读存储介质,其包括以用于信息(例如处理器可读指令、数据结构、程序模块或其它数据)的存储的任何方法或技术实现的易失性和/或非易失性、可移除和/或不可移除介质。计算机可读存储介质包括但不限于随机存取存储器(RAM)、只读存储器(ROM)、EEPROM、闪存、CD-ROM、数字多功能盘(DVD)或其他光学存储器、盒式磁带、磁带、磁盘存储器或其他磁存储设备、或可用于存储所需信息并可由核108访问的任何其他介质。
主存储器144包括一个或多个计算机可读存储介质,其可包括随机存取存储器(RAM),例如各种形式的动态RAM(DRAM)(例如DDR2/DDR3SDRAM)或静态RAM(SRAM)、闪存或任何其他形式的固定或可移动存储介质,其可用于以指令或数据结构的形式承载或存储所需的程序代码和程序数据并且其可由计算机访问。主存储器144提供由可寻址存储器位置组成的物理地址空间。
存储器144可以在一些示例中呈现到多核计算环境102的非均匀存储器访问(NUMA)架构。也就是说,核108对构成存储器144的各种存储介质的存储器访问时间可能不相等。在一些情况中,核108可以被配置为使用为核提供最低存储器等待时间的存储器144的部分来减少总存储器等待时间。
在一些情况下,用于计算机可读存储介质的物理地址空间可以在一个或多个核108之间共享(即,共享存储器)。例如,核108A、108B可以经由存储器总线(未示出)连接到呈现核108A、108B可访问的物理地址空间的一个或多个DRAM封装、模块和/或芯片(也未示出)。虽然该物理地址空间可以向存储器144的任何部分的核108A、108B提供最低的存储器访问时间,但是存储器144的剩余部分中的至少一些可以直接被核108A、108B访问。一个或多个核108还可以包括L1/L2/L3缓存或其组合。用于核108的各个缓存为核108提供任何存储介质的最低等待时间存储器访问。
存储器144、网络接口卡(NIC)106A-106B(统称为“NIC106”)、存储盘107和多核计算环境102为执行虚拟路由器120和一个或多个虚拟机110A-110k(统称为“虚拟机110”)的软件堆栈提供操作环境。虚拟机110可以表示图2的任何虚拟机36的示例实例。计算设备100将由主存储器144以及在虚拟存储器的情况下由盘107提供的虚拟和/或物理地址空间划分为用户空间111(被分配用于运行用户进程)和内核空间112,内核空间112受到保护并且通常不可被用户进程访问。操作系统内核(图4中未示出)可在内核空间中执行,并且可以包括例如可从Microsoft Corp获得的Linux、Berkeley软件分布(BSD)、另一UNIX变体内核或Windows服务器操作系统内核。在一些实例中,计算设备100可以执行管理程序以管理虚拟机110(图4中也未示出)。在图2中示出了示例管理程序31。示例虚拟机管理程序包括用于Linux内核的基于内核的虚拟机(KVM)、Xen、可从VMware获得的ESXi,可从Microsoft获得的Windows Hyper-V,以及其他开源的和专有的管理程序。在一些示例中,利用例如FIB 124的路由信息编程的专用硬件可以执行虚拟路由器120。
Eth0 114A和Eth1 114B表示根据软件设备模型的设备,并且提供用于处理用于由各个NIC106接收/发送的分组的设备驱动程序软件例程。由NIC106从虚拟网络的底层物理网络结构接收的分组可以包括外部报头,以允许物理网络结构将有效载荷或“内部分组”以隧道传送到NIC106之一的物理网络地址。外部报头不仅可以包括物理网络地址,还可以包括虚拟网络标识符,例如标识虚拟网络之一以及对应的路由实例122的VxLAN标签或多协议标签交换(MPLS)标签。内部分组包括具有目的地网络地址的内部报头,该目的地网络地址符合由虚拟网络标识符标识的虚拟网络的虚拟网络地址空间。例如,虚拟路由器转发平面128可以通过Eth1从NIC 106接收具有外部报头的分组,该外部报头包括在虚拟路由器转发平面128中与路由实例122A相关联的VxLAN。该分组可以具有内部报头,该内部报头具有目的地网络地址,该目的地网络地址是经由分接头(tap)接口146A分接到路由实例122A中的VM 110A的目的地地址。
该示例中的虚拟路由器120包括内核空间112模块:虚拟路由器转发平面128,以及用户空间111模块:VN代理35。虚拟路由器转发平面128执行虚拟路由器120的“转发平面”或分组转发功能,并且VN代理35执行虚拟路由器120的“控制平面”功能。VN代理35可以表示图2的任何VN代理35的示例实例。
虚拟路由器转发平面128包括对应于虚拟网络的多个路由实例122A-122C(统称为“路由实例122”)。每个路由实例122包括转发信息库(FIB)124A-124C(统称为“FIB 124”)和流表126A-126C(统称为“流表126”)中的对应的一个。尽管示出为单独的数据结构,但流表126在某些情况下可以是逻辑表,其被实现为单个表或其它关联数据结构,其中各个流表126的条目可由虚拟网络标识符(例如,诸如VxLAN标签或MPLS标签的VRF标识符)来标识。FIB 124包括将目的地地址映射到目的地下一跳的查找表。目的地地址可以包括3层网络前缀或2层MAC地址。流表126使得能够对流应用转发策略。每个流表126包括流表条目,每个流表条目匹配可以遍历虚拟路由器转发平面128的一个或多个流,并且包括用于应用于匹配流的转发策略。例如,虚拟路由器转发平面128尝试将由路由实例122A处理的分组匹配到流表126A的流表条目之一。如果对于给定分组存在匹配的流表条目,则虚拟路由器转发平面128将在策略中指定的流动作应用于该分组。这可以称为“快速路径”分组处理。如果对于该分组不存在匹配的流表条目,则该分组可以表示用于新分组流的初始分组,并且虚拟路由器转发平面128可以请求VN代理35在用于新分组流的流表中安装流表条目。这可以被称为用于分组流的初始分组的“慢路径”分组处理,并且在图4中由慢路径140表示。
在该示例中,VN代理35可以是由计算设备100执行的用户空间111进程。VN代理35包括配置数据134、虚拟路由和转发实例配置136(“VRF 136”)和策略表138(“策略138”)。VN代理35与一个或多个虚拟网络控制器(例如,图1至图2的VNC 22)交换控制信息。控制信息可以包括虚拟网络路由、低级配置状态(例如路由实例)以及用于安装到配置数据134、VRF136和策略138的转发策略。VN代理35还可以报告分析状态,将转发状态安装到虚拟路由器转发平面128的FIB 124,发现VM 110及其属性。如上所述,VN代理35还对遍历虚拟路由器转发平面128的每个新的流的第一(初始)分组应用慢路径分组处理,并为新的流向流表126安装相应的流条目,以便虚拟路由器转发平面128对流的后续分组进行快速路径处理。
VN代理35还包括标签数据库141。如上所述,VNC 22的策略控制器25分配为对象指定一个或多个级别和/或一个或多个类别的一个或多个标签。策略控制器25可以将标签应用于跨多个级别或类别的对象,以及将标签应用于跨多个数据中心的对象。策略控制器25将这些标签分发给VN代理35,VN代理35将分配的标签存储在标签数据库141中。
作为一个示例,策略控制器25可以将标签应用到计算设备(包括计算设备100)中的每一个计算设备,该标签指示该计算设备中的一个计算设备是否提供增强加密。VN代理35可以在标签数据库141中存储指示其对应的计算设备100是否提供增强加密的信息。在一些示例中,VN代理35可以在标签数据库141中存储包括所有计算设备的多个计算设备的信息,该信息指示该多个计算设备是否提供增强加密。以这种方式,策略控制器25可以以多播方式将标签信息分发到多个计算设备,以指示哪些计算设备提供增强加密。
VN代理35还包括策略代理139。策略代理139从策略控制器25接收一个或多个策略,并将这些策略存储在策略138中。策略138中的每一个可以包括指定应允许还是阻塞特定的网络流量的一个或多个策略规则。在一些示例中,策略规则指定哪些应用程序工作负载需要进行加密通信。
每个策略规则可以包括一个或多个策略标签,该策略标签指定策略规则应用于哪些对象,例如在VM 110上执行的应用程序工作负载的类型。例如,策略代理139可以将策略规则的一个或多个标签与标签数据库141中的一个或多个标签交叉引用,以确定策略规则应该应用于的一个或多个对象。在确定策略规则应该应用于的一个或多个对象时,策略代理139根据策略规则允许、阻塞或允许但加密源自或去往该一个或多个对象的网络流量。在一些示例中,策略代理139允许或阻塞VM 110的接口级别的网络流量。在该示例中,接口146继承来自父对象的标签,例如VM 110、虚拟网络、父项目或全局策略集10。因此,通过将一个或多个策略规则的标签与应用于接口146的标签相匹配,策略代理139允许或阻塞去往或源自VM 110的接口146的网络流量。
作为一个示例,策略代理139从策略控制器25接收第一策略规则,该第一策略规则允许源自接口146C并且包括标签1的网络流量。策略代理139可以检查应用于接口146的类别,确定接口146A的类别与第一策略规则的标签1匹配,并且仅将策略规则应用于接口146A。VN代理35随后可以允许源自接口146C并去往接口146A的网络流量。
作为另一个示例,策略代理139从策略控制器25接收阻塞源自接口146C并且包括标签2的网络流量的第二策略规则。策略代理139可以检查应用于接口146的类别,确定接口146B的类别与第二策略规则的标签2匹配,并且仅将策略规则应用于接口146B。VN代理35随后可以阻塞源自接口146C并目去往接口146B的网络流量。
作为另一示例,策略代理139从策略控制器25接收第三策略规则,该第三策略规则指示到具有标签X的财务应用程序的通信和来自具有标签X的财务应用程序的通信将被加密。在该示例中,策略代理139可以确定具有标签X的应用程序是否发起接口146C上的流量。如果应用程序具有标签X,则策略代理139然后可以应用第三策略规则以使来自应用程序的通信被加密。例如,策略代理139可以使一个或多个核108执行更高级别的加密算法以加密通信。
为了更新用于特定对象或对象组的策略,管理员可以指示策略控制器25向多个数据中心10的各个VN代理35的策略代理139分发新策略。在一些示例中,策略控制器25经由BGP消息分发新策略。以这种方式,管理员可以管理用于多个数据中心的可扩展的多维策略框架。此外,每个策略代理139可以自动应用相关策略,而不需要管理员单独地管理或更新每个VN代理35的策略。因此,本公开的技术可以极大地降低跨多个数据中心10的这种策略的复杂性并简化其管理。
图5是示出根据本文描述的技术包括标签信息的示例消息的框图。扩展的BGPUPDATE消息200符合MP-BGP并包括MP-REACH-NLRI 202通告路由。为了说明的目的,使用字形而不是使用分组字段来说明扩展的BGP UPDATE消息200。
扩展团体属性212包括字段213,字段213定义用于应用于由字段214A-214N(统称为“标签ID 214”)指定的一个或多个对象的一个或多个策略规则。标签ID 214可以在标签创建期间生成。标签ID 214进而定义一个或多个标签,该一个或多个标签包括描述带标签的对象所属的类别的基本键/值对。键/值对可以是用户定义的并且由管理员24传递。在一些示例中,键/值对的每个键指定应用程序、部署、应用层、地理站点、虚拟网络、虚拟机、接口、项目、安全要求、质量要求、用户或合规性要求中的一个,而相应的值指定键的描述符值。例如,标签ID 214的键可以描述特定类别,例如“应用”层。此外,标签的值可以表示由键描述的类别的一个或多个定义,例如“开发”应用层。在其他示例中,键可以指定用户、用户角色、操作系统、计算节点、机架、分发点、网络集群或数据中心。
此外,每个策略规则213可以与一个或多个规则集相关联,以应用于由标签ID 214描述的对象之间的流量。每个规则集可以描述是否允许、阻塞或加密并允许由标签ID 214描述的对象之间的流量。每个规则集可以进一步描述应用了每个策略规则213的一个或多个对象或对象组。
下面提供扩展的BGP UPDATE消息200的策略规则213的示例性模式:
[Order][Status][Action][Service][End Point 1][Direction][End Point 2][Match Tags Expression][Action]
[Order]字段描述策略规则的应用顺序。
[Status]字段向策略代理139指示是启用还是禁用策略规则。在一些示例中,管理员通过策略代理139的用户界面(例如命令行界面(CLI))启用或禁用[Status]字段。
[Action]字段指示是允许、拒绝还是加密并允许与策略规则的标签所描述的对象匹配的流量。
[Service]字段可以指定策略代理139应当对其应用策略规则的网络流量的目的地协议、目的地端口或服务组(例如,端口和协议的列表)。
[End Point 1]和[End Point 2]字段描述共享网络流量的对象,策略代理139应该将策略规则应用于这些对象。在一些示例中,这些字段是复杂的正则表达式,其描述了应用策略规则的多个对象。这些字段可以包括用于应用策略规则的信息,例如网络地址前缀、网络地址组、虚拟网络、一个或多个表达式标签,或一个或多个对象的域名。
[Direction]字段可以指示用于应用策略规则的会话发起的方向。[Direction]字段的示例值包括“>”(例如,“从左向右”会话,其中端点1启动与端点2的会话)、“<”(例如,“从右向左”会话,其中端点2启动与端点1的会话)或“<>”(例如,“任一”会话,其中端点1启动与端点2的会话或端点2启动与端点1的会话)。
[Match Tags Expression]字段可以向策略代理139指示将策略规则应用于匹配如关于[End Point 1]字段所描述的源和如关于[End Point 2]字段所描述的目的地的流量。在一些示例中,该动作默认匹配特定项目中的网络流量。在其他示例中,如果用户指定匹配,则重写默认值。
[Simple Action]字段指定对与标签和策略规则匹配的网络流量执行的动作。例如,在确定两个或多个对象之间的网络流量与策略规则指定的标签匹配时,策略规则可以指定策略代理139应当记录网络流量、拒绝网络流量、允许网络流量或向管理员发出警报。
根据用于策略规则213的前述示例性模式,下面描述示例性策略规则:
示例1:允许tcp 80tier=web>tier=app match deployment&&site
在示例1中,策略规则指定应允许在端口80上使用TCP协议的源自Web层内的虚拟机接口去往应用层内的虚拟机接口并同时匹配部署和站点标签的网络流量。
示例2:允许tcp 3036tier=app>tier=db match deployment&&site
在示例2中,策略规则指定应允许在端口3036上使用TCP协议的源自应用层内的虚拟机接口去往数据库层内的虚拟机接口并同时匹配部署和站点标签的网络流量。
示例3:允许any any any>address-group=legacy-svc
在示例3中,策略规则指定应该允许在任何端口上使用任何协议、具有任何源地址并且去往传统SVC地址组中的虚拟机接口的网络流量。
示例4:拒绝web-service any address-group=blacklist<>any action=log
在示例4中,策略规则指定应拒绝使用Web服务协议的源自列入黑名单的地址组中的地址并且去往任何虚拟机接口的网络流量。此外,策略规则指定应该记录该网络流量。
示例5:加密tier=application<>tier=db match finance&&site
在示例5中,策略规则指定应加密源自应用层内的虚拟机接口并且去往数据库层内的虚拟机接口并同时匹配财务和站点标签的流量。
以此方式,策略控制器25可以经由一个或多个BGP UPDATE消息200向多个数据中心10的各个VN代理35的策略代理139分发新策略。此外,策略代理139可以在接口级别应用所接收的策略,以便表达由标签ID 214描述的策略。以这种方式,管理员可以定义跨许多不同类型的部署和执行环境的可扩展的和稳健的简化流量策略。
图6是示出计算设备之间的隧道的示例的框图。在图6的示例中,SDN控制器23可以将计算设备100A-100E分配到不同的加密区中。例如,安全策略将计算设备100A-100E分组到一个或多个区中。如所示出的,区1包括计算设备100A,区2包括计算设备100B和100C,区3包括计算设备100D,并且区4包括计算设备100E。在图6的示例中,计算设备100中的每一个经由网络14彼此耦接。为了便于说明,图6示出了计算设备100中的每一个计算设备,每一个计算设备耦接到各个TOR 16,并且TOR16被示出为彼此耦接,但是可以经由IP结构20通过各个机箱交换机18耦接,如图1所示。此外,在一些示例中,TOR 16中的一个或多个可以是计算设备。
根据本公开中描述的技术,SDN控制器23配置交换结构14以在计算设备100之间形成隧道,以实现安全策略。例如,安全策略定义了需要加密通信的虚拟化应用程序工作负载的类型。安全策略还可以定义包括计算设备的区,该计算设备用于经由由配置为承载加密通信的SDN控制器23形成的隧道子集进行通信。如上所述,SDN控制器23可以定义标识哪些计算设备100是加密增强的计算设备的标签。在一些示例中,SDN控制器23基于计算设备的加密能力形成区。
如上所述,在图6中,SDN控制器23形成区1-4。区1-4不一定是单独的物理区,而是用于标识计算设备100中哪些是加密增强的计算设备100的逻辑区。例如,计算设备100B和计算设备100E可以在物理上彼此接近,并且可以在物理上比计算设备100B和100C更接近。然而,计算设备100B和100C在同一区(例如,区2)中,并且计算设备100E在不同的区(例如,区3)中。在该示例中,计算设备100B和100C是加密增强的计算设备,并且计算设备100E不是加密增强的计算设备。以这种方式,SDN控制器23分配第一组区(例如,区2),下面将更详细地描述,在该第一组区内在隧道中承载加密通信,并且分配第二组区(例如,区3和区4),在该第二组区内在隧道中承载其他通信(例如,未加密的或加密的,但不处于与区2相同的级别)。
SDN控制器23可以在安全策略中包括标识第一组区(例如,区2)的信息,第一组区包括安全策略中的第一组计算设备(例如,计算设备100B和100C),并且安全策略中包括标识第二组区(例如,区3)的信息,第二组区包括第二组计算设备(例如,计算设备100D)。
图6示出了SDN控制器23形成以实现安全策略的多个隧道。例如,计算设备100B和100C形成提供增强加密的计算设备集群。如图6所示,SDN控制器23形成隧道300,用于计算设备100B向计算设备100B发送加密通信,SDN控制器形成隧道302,用于计算设备100C向计算设备100A发送加密通信,并且SDN控制器形成隧道308,用于计算设备100B向计算设备100D发送加密通信。在该示例中,计算设备100A和计算设备100B各自形成隧道300的端点,计算设备100A和计算设备100C各自形成隧道302的端点,并且计算设备100B和计算设备100D各自形成隧道308的端点。
但是,并不是所有的通信都需要加密。因此,SDN控制器23形成隧道304,用于计算设备100E在非加密通信中与计算设备100A通信,并且形成隧道306,用于计算设备100E在非加密通信中与计算设备100D通信。在该示例中,计算设备100A和计算设备100E各自形成隧道304的端点,并且计算设备100D和计算设备100E各自形成隧道306的端点。
在本公开中描述的技术中,可以由SDN控制器23形成和维护多个隧道,而无需通过编制引擎22访问包括隧道的网络的信息。编制引擎22可以被配置为(例如,通过执行插件)访问和检索SDN控制器23实现的安全策略。然而,编制引擎22不能访问或检索指示哪些隧道由SDN控制器23形成或哪些隧道能够承载加密通信的信息。
响应于执行虚拟化应用程序工作负载的请求,编制引擎22访问安全策略和标签,并选择在其上部署虚拟化应用程序工作负载的计算设备100之一。例如,编制引擎22还可以基于标签来确定要部署的虚拟化应用程序工作负载是特定类型的。基于安全策略,编制引擎22可以确定具有特定类型的虚拟化应用程序工作负载要输出加密通信。
此外,根据安全策略,编制引擎22可以确定在安全策略中定义的哪些区包括用于经由所有隧道的子集进行通信的计算设备,其中隧道子集被配置为承载加密通信。根据标签,编制引擎22确定区2中的计算设备100B和100C是加密增强的计算设备(例如,是安全策略中定义的用于经由被配置为承载加密通信的至少一个隧道进行通信的区之一中的计算设备),并且确定虚拟化应用程序工作负载应当输出到在计算设备100A上执行的虚拟化应用程序工作负载。因此,编制引擎22选择要在其上部署虚拟化应用程序工作负载的计算设备100B。如所示出的,计算设备100B形成隧道300的端点。在一个或多个示例中,编制引擎22可能不知道计算设备100B形成隧道300的端点。从编制引擎22的角度来看,计算设备100B提供增强的加密,但是编制引擎22不知道计算设备100B将用于发送加密通信的特定隧道。以这种方式,编制引擎22可以被配置为选择要在其上执行虚拟化应用程序工作负载的计算设备,而不接收指示所选择的计算设备(例如,在此示例中的计算设备100B)用于承载加密通信的隧道的信息。SDN控制器23可以被配置为维护通过网络14的隧道,并且选择计算设备100B应当通过其输出加密通信的特定隧道。
因此,在一个或多个示例中,编制引擎22选择要在其上部署虚拟化应用程序工作负载的计算设备100B,而不选择计算设备100B要与之通信的隧道(例如,不接收指示所选择的计算设备用于承载加密通信的隧道的信息)。相反,SDN控制器23可以被配置为从计算设备100B要与之通信的各种隧道中选择隧道300。
以这种方式,编制引擎22能够选择计算设备100中的哪一个将执行需要加密通信的虚拟化应用程序工作负载,而无需确定计算设备100中的所选一个将通过其发送或接收加密通信的特定隧道。因此,编制引擎22可以基于加密的需要选择性地确定在哪个计算设备100上部署虚拟化应用程序工作负载,并且SDN控制器23可以形成和维护允许所选计算设备100发送和接收加密通信的隧道,而不是强制所有通信通过区2使得两个计算设备100之间的所有通信总是加密的。
图7是示出根据本公开的技术的示例操作的流程图。为方便起见,参照图1、图2和图3描述图7。
在图7的示例中,策略控制器23向支持应用程序工作负载的多个类别分配指定应用程序工作负载的多个维度中的一个或多个维度的标签(700)。在该示例中,应用程序工作负载由一个或多个计算设备(例如服务器12)执行。此外,该一个或多个计算设备包括多个类别。此类类别可以包括例如应用程序、部署、应用层、地理站点、虚拟网络、虚拟机、接口、项目、安全要求、质量要求、用户或合规性要求。此类类别的每种类型表示生成或消耗网络流量的应用程序工作负载的维度。在一些示例中,策略控制器23将标签分配给跨多个级别执行或以其他方式启用具有特定维度的应用程序工作负载的对象。这些对象的示例级别包括全局环境级别、项目级别、虚拟网络级别、虚拟机级别和接口级别。在一个示例中,标签映射对象的安全需求。
策略控制器23向多个数据中心10的各个策略代理139分发多个策略(702)。多个策略中的每个策略包括一个或多个策略规则。此外,一个或多个策略规则中的每个策略规则指定一个或多个标签,该一个或多个标签指定多个维度中的一个或多个维度。
例如,数据中心10A的策略代理139A接收多个策略(704)。对于一个或多个策略规则中的每个策略规则,策略代理139A将一个或多个策略规则中的每个策略规则的一个或多个标签中的每个标签与属于由该标签的一个或多个维度所描述的多个类别中的类别的一个或多个对象进行匹配(706)。此外,对于一个或多个策略规则中的每个策略规则,策略代理139A允许或拒绝属于由策略规则的标签的一个或多个维度所描述的多个类别中的类别的对象之间的业务流(708)。
在一些示例中,策略代理139允许或阻塞VM 110的接口级别的网络流量。在该示例中,接口146继承来自父对象(例如VM 110、虚拟网络、父项目或全局策略集)的标签。因此,通过将一个或多个策略规则的标签与接口146所属的类别进行匹配,策略代理139允许或阻塞去往或源自VM 110的接口146的网络流量。
作为一个示例,策略代理139从策略控制器23接收第一策略规则,该第一策略规则允许源自接口146C并且包括标签1的网络流量。策略代理139可以检查应用于接口146的类别,确定接口146A属于由第一策略规则的标签1描述的类别,并且仅将策略规则应用于接口146A。VN代理35随后可以允许源自接口146C并去往接口146A的网络流量。
作为另一示例,策略代理139从策略控制器23接收第二策略规则,该第二策略规则阻塞源自接口146C并且包括标签2的网络流量。策略代理139可以检查应用于接口146的类别,确定接口146B属于由第二策略规则的标签2描述的类别,并且仅将策略规则应用于接口146B。VN代理35随后可以阻塞源自接口146C并去往接口146B的网络流量。
图8是示出根据本公开的技术的示例操作的流程图。为方便起见,参照图1、图2和图3描述图8。
SDN控制器23将网络配置为形成隧道以实现安全策略(800)。例如,如上所述,安全策略定义了需要加密通信的虚拟化应用程序工作负载的类型。为了实现安全策略,SDN控制器23可以分配安全区,每个安全区包括被配置为提供增强加密或未被配置为提供增强加密的计算设备。SDN控制器23还可以在加密通信要在其中传送的计算设备之间定义隧道。
例如,安全策略定义了需要加密通信的虚拟化应用程序工作负载的类型,并且安全策略将计算设备分组成经由隧道的各个子集通信的一个或多个区,其中隧道子集中的至少一个被配置为承载加密通信。作为一个示例,作为网络配置的一部分,SDN控制器23可以分配包括第一组计算设备(例如,设备100B和设备100C)的第一组区(例如,区2),在第一组区内在隧道中承载加密通信,并且分配包括第二组计算设备(例如,设备100D和设备100E)的第二组区(例如,区3和区4),在第二组区内在隧道中承载其它通信。SDN控制器23可以在安全策略中标识包括第一组计算设备的第一组区,并且在安全策略中标识包括第二组计算设备的第二组区。
如上所述,计算设备(例如,服务器12)各自为多个虚拟化应用程序工作负载提供执行环境,以使虚拟化应用程序工作负载与由SDN控制器23配置的网络通信。例如,计算设备形成由SDN控制器23控制和配置的各种隧道的端点。虚拟化应用程序工作负载在计算设备上执行,并且计算设备经由由SDN控制器23配置和形成的隧道来发送从执行生成的通信。
SDN控制器23可以将标签分配给将多个计算设备中的一个或多个计算设备,该标签将该多个计算设备中的一个或多个指定为加密增强的计算设备。此外,SDN控制器23可以向虚拟化应用程序工作负载的类型分配指示各个类型的虚拟化应用程序工作负载是否需要加密通信的标签。在该示例中,安全策略指示与具有标签的一种或多种类型的虚拟化应用程序工作负载的通信需要加密通信。
响应于执行虚拟化应用程序工作负载的请求,编制引擎22访问由SDN控制器23为多个计算设备实现的安全策略(802)。作为一个示例,编制引擎22执行允许编制引擎22访问来自SDN控制器23的信息的插件。编制引擎22使用所执行的插件访问安全策略。
编制引擎22基于安全策略确定虚拟化应用程序工作负载需要加密通信(804)。作为一个示例,编制引擎22可以确定要执行的虚拟化应用程序工作负载的类型,并且基于安全策略确定要执行的虚拟化应用程序工作负载属于通信要加密的类型。例如,安全策略可以是具有多个字段的数据结构,并且一个字段可以指示应用程序工作负载的类型,而另一字段可以指示该类型的应用程序工作负载将具有加密通信。编制引擎22可以解析安全策略的数据结构,以确定应用程序工作负载是在安全策略中标识的类型,并且安全策略中标识的类型指的是需要加密通信的应用程序工作负载。
编制引擎22从安全策略中定义的用于经由被配置为承载加密通信的至少一个隧道进行通信的区之一中的计算设备中选择计算设备(806)。作为一个示例,SDN控制器23向多个计算设备中的一个或多个计算设备分配标签,该标签将在由SDN控制器23分配作为承载加密通信的区的区中的多个计算设备中的一个或多个计算设备指定为加密增强的计算设备。在该示例中,将一个或多个计算设备指定为加密增强的计算设备的数据包括将多个计算设备中的一个或多个计算设备指定为加密增强的计算设备的标签。此外,编制引擎22基于标签选择计算设备。
编制引擎22将应用程序工作负载部署到所选计算设备(808)。例如,编制引擎22使得应用程序工作负载在所选计算设备的一个或多个核108(图4)上执行,核108提供应用程序工作负载的执行环境,以经由用于通信加密的通信的隧道与由SDN控制器23配置的网络通信。
图9是示出根据本公开的技术的示例操作的流程图。为了方便起见,参照图1、图2和图3描述图9。此外,为了方便,参照策略代理139A描述图9。
策略代理139A接收指示与应用程序工作负载的通信需要加密的安全策略(900)。作为一个示例,SDN控制器23向策略代理139中的每一个分发安全策略。
在接收到安全策略之后,策略代理139A确定与服务器12A(其是计算设备的示例)上执行的应用程序工作负载的通信是否包括与安全策略中指示的应用程序工作负载的通信(902)。例如,服务器12A的核108执行应用程序工作负载。对于正在执行的应用程序工作负载,策略代理139A可以确定这些应用程序工作负载中的任何一个是否在安全策略中被指示。策略代理139可以确定与服务器12A上执行的应用程序工作负载的通信是否包括与安全策略中指示的应用程序工作负载的通信的一种方式是通过将应用程序工作负载的标签与安全策略中指示的标签进行比较来确定安全策略中指示的应用程序工作负载是否正在计算设备上执行。
基于确定与服务器12A上执行的应用程序工作负载的通信是否包括与安全策略中指示的应用程序工作负载的通信,策略代理139A使与安全策略中指示的应用程序工作负载的通信被加密(904)。如果在安全策略中指示了应用程序工作负载,则策略代理139A可以确保通信被加密,并且如果在安全策略中未指示应用程序工作负载,则策略代理139A可以不使通信被加密。例如,策略代理139A可以确保核108执行更高级别加密算法以加密与应用程序工作负载的通信。
本公开中描述的技术可以至少部分地以硬件、软件、固件或其任何组合来实现。例如,所述技术的各个方面可以在一个或多个处理器内实现,处理器包括一个或多个微处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或任何其它等效的集成或离散逻辑电路,以及这些组件的任何组合。术语“处理器”或“处理电路”通常可以指前述逻辑电路、单独地或与其它逻辑电路组合,或任何其它等效电路中的任何一个。包括硬件的控制单元还可以执行本公开的一个或多个技术。
这样的硬件、软件和固件可以在同一设备内或在单独的设备内实现,以支持本公开中描述的各种操作和功能。此外,所描述的单元、模块或组件中的任何一个可以一起或单独地实现为离散但可互操作的逻辑设备。将不同的特征描述为模块或单元旨在突出不同的功能方面,而不一定意味着这些模块或单元必须由单独的硬件或软件组件实现。相反,与一个或多个模块或单元相关联的功能可以由单独的硬件或软件组件执行,或者集成在共同的或单独的硬件或软件组件内。
本公开中描述的技术还可以体现或编码在包含指令的计算机可读介质(例如计算机可读存储介质)中。例如,当指令被执行时,嵌入或编码在计算机可读存储介质中的指令可以使得可编程处理器或其它处理器执行该方法。计算机可读存储介质可以包括随机存取存储器(RAM)、只读存储器(ROM)、可编程只读存储器(PROM)、可擦除可编程只读存储器(EPROM)、电子可擦除可编程只读存储器(EEPROM)、闪存、硬盘、CD-ROM、软盘、盒式磁带、磁性介质、光学介质或其它计算机可读介质。
已经描述了各种示例。这些示例和其它示例在所附权利要求的范围内。
Claims (16)
1.一种用于加密策略的方法,包括:
由软件定义网络SDN控制器根据安全策略配置网络以在计算设备之间形成隧道,其中,所述安全策略定义了需要加密通信的一种或多种类型的虚拟化应用程序工作负载、并将所述计算设备中的每一个分组到经由各个隧道子集进行通信的多个区中的一个区内,其中,所述隧道子集中的至少一个被配置为承载加密通信,其中,所述计算设备中的每一个为多个虚拟化应用程序工作负载提供执行环境,并且其中,配置所述网络以形成隧道包括:
由所述SDN控制器根据所述安全策略配置隧道的第一子集以承载加密通信,并且所述隧道的第一子集耦接至包括在所述多个区的第一组区中的第一组计算设备;并且
由所述SDN控制器根据所述安全策略配置隧道的第二子集以承载其它通信,并且所述隧道的第二子集耦接至包括在所述多个区的第二组区中的第二组计算设备;
响应于执行虚拟化应用程序工作负载的请求,通过编制引擎访问由所述SDN控制器实现的所述安全策略,所述安全策略包括指示包括所述第一组计算设备的所述第一组区的信息;
基于所述安全策略由所述编制引擎确定所述虚拟化应用程序工作负载需要加密通信;
由所述编制引擎从所述安全策略中定义的用于经由被配置为承载加密通信的至少一个隧道进行通信的所述第一组区中的所述第一组计算设备中选择一计算设备;以及
由所述编制引擎将所述应用程序工作负载部署到所选的计算设备。
2.根据权利要求1所述的方法,
其中,配置所述网络包括:
将所述第一组计算设备分配给所述第一组区;以及
将所述第二组计算设备分配给所述第二组区;
由所述SDN控制器根据所述安全策略,在分配给所述第一组区的所述第一组计算设备之间配置隧道的所述第一子集;并且
由所述SDN控制器根据所述安全策略,在分配给所述第二组区的所述第二组计算设备之间配置隧道的所述第二子集。
3.根据权利要求1所述的方法,其中,选择计算设备包括在不接收指示所选的计算设备用于承载加密通信的至少一个所述隧道的信息的情况下选择所述计算设备。
4.根据权利要求1至3中任一项所述的方法,还包括:
利用所述SDN控制器,从要与所选的计算设备进行通信的所述隧道子集中选择至少一个所述隧道。
5.根据权利要求1至3中任一项所述的方法,还包括:
利用所述SDN控制器给所述虚拟化应用程序工作负载的类型分配标签,所述标签指示各个类型的所述虚拟化应用程序工作负载是否需要加密通信,
其中,所述安全策略指示与具有所述标签的一种或多种类型的虚拟化应用程序工作负载的通信需要加密通信。
6.根据权利要求1至3中任一项所述的方法,还包括:
利用所述SDN控制器给用于经由被配置为承载加密通信的所述隧道的第一子集进行通信的所述第一组计算设备分配标签,
其中,选择计算设备包括基于所述标签选择所述计算设备。
7.根据权利要求1至3中任一项所述的方法,其中,所述安全策略包括具有多个字段的数据结构,其中,所述多个字段中的第一字段指示是否需要加密,并且其中,所述多个字段中的第二字段指示多个应用程序工作负载中的一个应用程序工作负载的类型。
8.根据权利要求1至3中任一项所述的方法,其中,通过所述编制引擎访问所述安全策略包括:
利用所述编制引擎执行允许所述编制引擎访问来自所述SDN控制器的信息的插件;以及
利用执行的所述插件访问所述安全策略。
9.一种用于加密策略的系统,包括:
第一处理电路,包括或被配置为执行软件定义网络SDN控制器,其中,所述SDN控制器被配置为根据安全策略配置网络以在计算设备之间形成隧道,其中,所述安全策略定义需要加密通信的一种或多种类型的虚拟化应用程序工作负载、并将所述计算设备中的每一个分组到经由各个隧道子集进行通信的多个区中的一个区内,其中,所述隧道子集中的至少一个被配置为承载加密通信,其中,所述计算设备中的每一个为多个虚拟化应用程序工作负载提供执行环境,并且其中,为了配置所述网络以形成隧道,所述SDN控制器被配置为:
根据所述安全策略配置隧道的第一子集以承载加密通信,
并且所述隧道的第一子集耦接至包括在所述多个区的第一组区中的第一组计算设备;并且
根据所述安全策略配置隧道的第二子集以承载其他通信,
并且所述隧道的第二子集耦接至包括在所述多个区的第二组区中的第二组计算设备;以及
第二处理电路,包括或被配置为执行编制引擎,其中,所述编制引擎被配置为:
响应于执行虚拟化应用程序工作负载的请求,访问由所述SDN控制器实现的所述安全策略,所述安全策略包括指示包括所述第一组计算设备的所述第一组区的信息;
基于所述安全策略确定所述虚拟化应用程序工作负载需要加密通信;
从所述安全策略中定义的用于经由被配置为承载加密通信的至少一个隧道进行通信的所述第一组区中的所述第一组计算设备中选择一计算设备;以及
将所述应用程序工作负载部署到所选的计算设备。
10.根据权利要求9所述的系统,
其中,为了配置所述网络,所述SDN控制器被配置为:
将所述第一组计算设备分配给所述第一组区;
将所述第二组计算设备分配给所述第二组区;
根据所述安全策略,在分配给所述第一组区的所述第一组计算设备之间配置隧道的所述第一子集;并且
根据所述安全策略,在分配给所述第二组区的所述第二组计算设备之间配置隧道的所述第二子集。
11.根据权利要求9所述的系统,其中,为了选择计算设备,所述编制引擎被配置为在不接收指示所选的计算设备用于承载加密通信的至少一个所述隧道的信息的情况下选择所述计算设备。
12.根据权利要求9至11中任一项所述的系统,其中,所述SDN控制器被配置为:
从要与所选的计算设备进行通信的所述隧道子集中选择至少一个所述隧道。
13.根据权利要求9至11中任一项所述的系统,其中,所述SDN控制器被配置为:
给所述虚拟化应用程序工作负载的类型分配标签,所述标签指示各个类型的所述虚拟化应用程序工作负载是否需要加密通信,
其中,所述安全策略指示与具有所述标签的一种或多种类型的虚拟化应用程序工作负载的通信需要加密通信。
14.根据权利要求9至11中任一项所述的系统,其中,所述SDN控制器被配置为:
给用于经由被配置为承载加密通信的所述隧道的第一子集进行通信的所述第一组计算设备分配标签,
其中,为选择计算设备,所述编制引擎被配置为基于所述标签选择所述计算设备。
15.根据权利要求9至11中任一项所述的系统,其中,所述安全策略包括具有多个字段的数据结构,其中,所述多个字段中的第一字段指示是否需要加密,并且其中,所述多个字段中的第二字段指示多个应用程序工作负载中的一个应用程序工作负载的类型。
16.根据权利要求9至11中任一项所述的系统,其中,为访问所述安全策略,所述编制引擎被配置为:
利用所述编制引擎执行允许所述编制引擎访问来自所述SDN控制器的信息的插件;以及
利用执行的所述插件访问所述安全策略。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/819,522 | 2017-11-21 | ||
US15/819,522 US10742690B2 (en) | 2017-11-21 | 2017-11-21 | Scalable policy management for virtual networks |
US16/024,412 US10728288B2 (en) | 2017-11-21 | 2018-06-29 | Policy-driven workload launching based on software defined networking encryption policies |
US16/024,412 | 2018-06-29 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109818918A CN109818918A (zh) | 2019-05-28 |
CN109818918B true CN109818918B (zh) | 2022-01-25 |
Family
ID=64402121
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811383529.0A Active CN109818918B (zh) | 2017-11-21 | 2018-11-20 | 基于软件定义网络加密策略的策略驱动的工作负载启动 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10728288B2 (zh) |
EP (1) | EP3486775A1 (zh) |
CN (1) | CN109818918B (zh) |
Families Citing this family (38)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9825851B2 (en) | 2015-06-27 | 2017-11-21 | Nicira, Inc. | Distributing routing information in a multi-datacenter environment |
US20170264491A1 (en) * | 2016-03-12 | 2017-09-14 | Denis DeRuijter | Intent based controller for provisioning a network |
US10938619B2 (en) * | 2016-08-30 | 2021-03-02 | ColorTokens, Inc. | Allocation of virtual interfaces to containers |
US10742690B2 (en) | 2017-11-21 | 2020-08-11 | Juniper Networks, Inc. | Scalable policy management for virtual networks |
US11902890B2 (en) * | 2018-02-03 | 2024-02-13 | Nokia Technologies Oy | Application based routing of data packets in multi-access communication networks |
US10778724B1 (en) | 2018-06-29 | 2020-09-15 | Juniper Networks, Inc. | Scalable port range management for security policies |
US11252192B1 (en) * | 2018-09-28 | 2022-02-15 | Palo Alto Networks, Inc. | Dynamic security scaling |
US11184325B2 (en) * | 2019-06-04 | 2021-11-23 | Cisco Technology, Inc. | Application-centric enforcement for multi-tenant workloads with multi site data center fabrics |
US10911330B2 (en) * | 2019-06-12 | 2021-02-02 | Cisco Technology, Inc. | Intent based application fabric |
US11374880B2 (en) * | 2019-06-17 | 2022-06-28 | Cyxtera Data Centers, Inc. | Automated deployment of internet connectivity to rack switches in a data center |
US11216309B2 (en) | 2019-06-18 | 2022-01-04 | Juniper Networks, Inc. | Using multidimensional metadata tag sets to determine resource allocation in a distributed computing environment |
US11316667B1 (en) * | 2019-06-25 | 2022-04-26 | Juniper Networks, Inc. | Key exchange using pre-generated key pairs |
US11201897B1 (en) | 2019-09-03 | 2021-12-14 | Rapid7, Inc. | Secure multiplexed routing |
US11297036B1 (en) * | 2019-09-03 | 2022-04-05 | Rapid7, Inc. | Single whitelisted ingress endpoint on 1 and 2 way TLS connections |
CN110732139B (zh) * | 2019-10-25 | 2024-03-05 | 腾讯科技(深圳)有限公司 | 检测模型的训练方法和用户数据的检测方法、装置 |
CN110912827B (zh) * | 2019-11-22 | 2021-08-13 | 北京金山云网络技术有限公司 | 一种路由更新方法和用户集群 |
US11509578B2 (en) * | 2019-12-13 | 2022-11-22 | Cisco Technology, Inc. | Flexible policy semantics extensions using dynamic tagging and manifests |
CN113163414B (zh) * | 2020-01-22 | 2023-09-22 | 大唐移动通信设备有限公司 | 一种信息处理方法和近实时无线接入网控制器 |
US11354151B2 (en) | 2020-02-12 | 2022-06-07 | International Business Machines Corporation | Hardware memory encryption and protection for containers |
WO2021168727A1 (en) * | 2020-02-27 | 2021-09-02 | Juniper Networks, Inc. | Packet steering to a host-based firewall in virtualized environments |
US11606369B2 (en) * | 2020-03-20 | 2023-03-14 | Cisco Technology, Inc. | Intelligent quarantine on switch fabric for physical and virtualized infrastructure |
US11777793B2 (en) | 2020-04-06 | 2023-10-03 | Vmware, Inc. | Location criteria for security groups |
US11088902B1 (en) | 2020-04-06 | 2021-08-10 | Vmware, Inc. | Synchronization of logical network state between global and local managers |
US11683233B2 (en) | 2020-04-06 | 2023-06-20 | Vmware, Inc. | Provision of logical network data from global manager to local managers |
US11882000B2 (en) | 2020-04-06 | 2024-01-23 | VMware LLC | Network management system for federated multi-site logical network |
US11870679B2 (en) | 2020-04-06 | 2024-01-09 | VMware LLC | Primary datacenter for logical router |
US11601474B2 (en) | 2020-09-28 | 2023-03-07 | Vmware, Inc. | Network virtualization infrastructure with divided user responsibilities |
US11743232B2 (en) * | 2021-04-08 | 2023-08-29 | Cisco Technology, Inc. | Software defined branch single internet protocol orchestration |
US11726759B2 (en) * | 2021-04-12 | 2023-08-15 | Capital One Services, Llc | Deployment of a computing environment |
US12021740B2 (en) | 2021-05-28 | 2024-06-25 | Juniper Networks, Inc. | Policy enforcement for bare metal servers by top of rack switches |
US20230037986A1 (en) * | 2021-08-09 | 2023-02-09 | International Business Machines Corporation | Autoencryption system for data in a container |
CN113923270B (zh) * | 2021-08-30 | 2024-05-17 | 北京百卓网络技术有限公司 | 一种报文的处理方法、装置、设备及可读存储介质 |
US20230108778A1 (en) * | 2021-09-28 | 2023-04-06 | Citrix Systems, Inc. | Automated Generation of Objects for Kubernetes Services |
US20230208856A1 (en) * | 2021-12-29 | 2023-06-29 | At&T Intellectual Property I, L.P. | Encrypted Applications Verification |
CN115225333B (zh) * | 2022-06-23 | 2023-05-12 | 中国电子科技集团公司第三十研究所 | 一种基于软件定义的tsn加密方法及系统 |
US12107722B2 (en) | 2022-07-20 | 2024-10-01 | VMware LLC | Sharing network manager between multiple tenants |
US11916775B1 (en) | 2023-03-17 | 2024-02-27 | Netskope, Inc. | Multi-tenant cloud native control plane system |
US11968269B1 (en) | 2023-03-17 | 2024-04-23 | Netskope, Inc. | Hybrid tag based virtual private network with scalable next hop convergence |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103414631A (zh) * | 2013-07-16 | 2013-11-27 | 国家电网公司 | 一种适用于电力应用的Openflow控制器通道加密优化方法 |
CN103763367A (zh) * | 2014-01-17 | 2014-04-30 | 浪潮(北京)电子信息产业有限公司 | 一种云计算数据中心分布式虚拟网络设计方法及系统 |
US9282164B2 (en) * | 2013-03-15 | 2016-03-08 | Cisco Technology, Inc. | Application hints for network action |
WO2017064560A1 (en) * | 2015-10-13 | 2017-04-20 | Schneider Electric Industries Sas | Centralized management of a software defined automation system |
CN106685903A (zh) * | 2015-11-10 | 2017-05-17 | 中国电信股份有限公司 | 基于sdn的数据传输方法、sdn控制器和sdn系统 |
WO2017103699A1 (en) * | 2015-12-15 | 2017-06-22 | International Business Machines Corporation | Dynamically defined virtual private network tunnels in hybrid cloud environments |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120005724A1 (en) * | 2009-02-09 | 2012-01-05 | Imera Systems, Inc. | Method and system for protecting private enterprise resources in a cloud computing environment |
US8750288B2 (en) | 2012-06-06 | 2014-06-10 | Juniper Networks, Inc. | Physical path determination for virtual network packet flows |
GB2504487A (en) | 2012-07-30 | 2014-02-05 | Ibm | Automated network deployment of cloud services into a network by matching security requirements |
US9130901B2 (en) * | 2013-02-26 | 2015-09-08 | Zentera Systems, Inc. | Peripheral firewall system for application protection in cloud computing environments |
US20150081893A1 (en) | 2013-09-17 | 2015-03-19 | Netapp. Inc. | Fabric attached storage |
US20150124824A1 (en) | 2013-11-05 | 2015-05-07 | Cisco Technology, Inc. | Incast drop cause telemetry |
US9680875B2 (en) * | 2015-01-20 | 2017-06-13 | Cisco Technology, Inc. | Security policy unification across different security products |
US9806985B2 (en) | 2015-03-02 | 2017-10-31 | Cisco Technology, Inc. | Symmetric routing enforcement |
US10454821B2 (en) * | 2016-10-14 | 2019-10-22 | Cisco Technology, Inc. | Creating and maintaining segment routed traffic engineering policies via border gateway protocol |
US10419446B2 (en) * | 2017-07-10 | 2019-09-17 | Cisco Technology, Inc. | End-to-end policy management for a chain of administrative domains |
US10742690B2 (en) | 2017-11-21 | 2020-08-11 | Juniper Networks, Inc. | Scalable policy management for virtual networks |
-
2018
- 2018-06-29 US US16/024,412 patent/US10728288B2/en active Active
- 2018-11-20 CN CN201811383529.0A patent/CN109818918B/zh active Active
- 2018-11-20 EP EP18207324.7A patent/EP3486775A1/en not_active Ceased
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9282164B2 (en) * | 2013-03-15 | 2016-03-08 | Cisco Technology, Inc. | Application hints for network action |
CN103414631A (zh) * | 2013-07-16 | 2013-11-27 | 国家电网公司 | 一种适用于电力应用的Openflow控制器通道加密优化方法 |
CN103763367A (zh) * | 2014-01-17 | 2014-04-30 | 浪潮(北京)电子信息产业有限公司 | 一种云计算数据中心分布式虚拟网络设计方法及系统 |
WO2017064560A1 (en) * | 2015-10-13 | 2017-04-20 | Schneider Electric Industries Sas | Centralized management of a software defined automation system |
CN106685903A (zh) * | 2015-11-10 | 2017-05-17 | 中国电信股份有限公司 | 基于sdn的数据传输方法、sdn控制器和sdn系统 |
WO2017103699A1 (en) * | 2015-12-15 | 2017-06-22 | International Business Machines Corporation | Dynamically defined virtual private network tunnels in hybrid cloud environments |
Also Published As
Publication number | Publication date |
---|---|
US10728288B2 (en) | 2020-07-28 |
EP3486775A1 (en) | 2019-05-22 |
CN109818918A (zh) | 2019-05-28 |
US20190158537A1 (en) | 2019-05-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109818918B (zh) | 基于软件定义网络加密策略的策略驱动的工作负载启动 | |
US11323487B1 (en) | Scalable policy management for virtual networks | |
US11418546B1 (en) | Scalable port range management for security policies | |
EP3611883B1 (en) | Secure forwarding of tenant workloads in virtual networks | |
CN114745332B (zh) | 促进计算机网络中的服务链的流对称的系统和网络控制器 | |
US20210344692A1 (en) | Providing a virtual security appliance architecture to a virtual cloud infrastructure | |
US11700236B2 (en) | Packet steering to a host-based firewall in virtualized environments | |
CN110838992B (zh) | 在不同网络堆栈中的内核模块间传送分组的系统和方法 | |
US11165703B2 (en) | Prefix-based fat flows | |
CN113472729A (zh) | 基于角色的访问控制策略自动生成 | |
US20240259311A1 (en) | Automatic policy configuration for packet flows | |
US20240291753A1 (en) | Policy enforcement for bare metal servers by top of rack switches | |
US11929987B1 (en) | Preserving packet flow information across bump-in-the-wire firewalls |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB02 | Change of applicant information |
Address after: California, USA Applicant after: Juniper Networks, Inc. Address before: California, USA Applicant before: Jungle network |
|
CB02 | Change of applicant information | ||
GR01 | Patent grant | ||
GR01 | Patent grant |