CN111819544B - 用于虚拟计算资源的部署前安全分析器服务 - Google Patents

用于虚拟计算资源的部署前安全分析器服务 Download PDF

Info

Publication number
CN111819544B
CN111819544B CN201980017126.0A CN201980017126A CN111819544B CN 111819544 B CN111819544 B CN 111819544B CN 201980017126 A CN201980017126 A CN 201980017126A CN 111819544 B CN111819544 B CN 111819544B
Authority
CN
China
Prior art keywords
security
configuration
virtual
virtual computing
resource
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
Application number
CN201980017126.0A
Other languages
English (en)
Other versions
CN111819544A (zh
Inventor
N·朗格塔
P·V·博里格纳诺
C·道奇
C·瓦名
J·库克
R·维斯瓦纳坦
D·S·库克
S·卡尔严克里施南
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Amazon Technologies Inc
Original Assignee
Amazon Technologies Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Amazon Technologies Inc filed Critical Amazon Technologies Inc
Publication of CN111819544A publication Critical patent/CN111819544A/zh
Application granted granted Critical
Publication of CN111819544B publication Critical patent/CN111819544B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44505Configuring for program initiating, e.g. using registry, configuration files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Bioethics (AREA)
  • Health & Medical Sciences (AREA)
  • Databases & Information Systems (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)
  • Computer And Data Communications (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

计算资源服务提供商的安全评估系统对诸如虚拟机实例和虚拟数据存储库实例之类的虚拟资源实例执行安全分析,以验证实例的相应配置是否满足某些不变的安全要求;在提供和部署实例之前执行这些分析。如果可以由资源的管理员选择的安全检查失败,则拒绝所请求的资源的部署。识别缺陷配置的通知可以被发送给管理用户。例如可以通过将执行检查所需要的信息存储在优化模板自身内,将用于启动虚拟资源实例的模板转换成用于执行部署前安全检查的优化模板。

Description

用于虚拟计算资源的部署前安全分析器服务
相关申请的交叉引用
本申请要求于2018年3月6日提交的美国专利申请第15/913741号的优先权权益,其通过引用合并于此并且其全部内容被依赖。
背景技术
一般而言,计算设备利用通信网络或一系列通信网络来交换数据。公司和组织运营计算机网络,计算机网络将许多计算设备互连在一起以支持操作或向第三方提供服务。计算系统可以位于单个地理位置或位于多个不同的地理位置(例如,经由私有或公共通信网络互连)。具体地,数据中心或数据处理中心(在本文中通常被称为“数据中心”)可以包括多个互连的计算系统,以向数据中心的用户提供计算资源。数据中心可以是代表组织运营的私有数据中心,或者可以是代表公众或为公众利益运营的公共数据中心。
为了促进对数据中心资源的增加的利用,虚拟化技术可以允许单个物理计算设备托管一个或多个虚拟计算资源实例,例如对于数据中心用户而言作为独立计算设备出现并且运行的虚拟机。单个物理计算设备可以以动态方式创建、维护、删除或以其他方式管理虚拟资源。在一些情形下,各种虚拟机可以与操作系统或操作系统配置、虚拟化的硬件和联网资源以及软件应用的不同组合相关联,以使得物理计算设备能够提供不同的期望功能、或者更有效地提供类似的功能。
反过来,用户可以从数据中心请求计算机资源,包括单个计算设备或联网的计算设备的配置,并且用户可以被提供有不同数量的虚拟机资源。虚拟化还从虚拟机向上扩展;整个数据中心并且甚至多个数据中心可以实现具有不同容量的计算环境,例如虚拟私有网络和虚拟私有云。在硬件计算设备(诸如彼此连接以向计算资源服务提供商的用户提供虚拟计算资源和服务的服务器)的网络中,确保资源和数据的安全具有巨大的价值。可以基于许多不同的参数(例如用户凭证、资源属性、网络配置等)严格控制对资源的访问。在计算资源服务提供商的上下文中,可以使用安全策略来定义用户和资源的访问权限,所述安全策略指定是准予还是拒绝请求设备访问计算资源。网络配置还可以具有安全策略,和/或可以以其他方式具有参数,所述参数的值确定网络的安全。
访问权限可能随着时间而改变,通常需要改变受影响的安全策略。网络控制可能类似地改变。随着计算机系统或计算机网络中支持的用户数量和类型和/或可访问计算资源的数量和类型扩大,对安全策略进行管理以及验证适当地利用安全的网络配置和有效的安全策略使计算资源可用可能变得越来越困难。
附图说明
将参考附图描述各种技术,在附图中:
图1示出计算资源服务提供商的计算环境,在该计算环境中可以根据本公开来实现本系统和方法的各种实施例;
图2A至图2D示出根据本公开的示例计算环境,该示例计算环境实现在部署虚拟计算资源实例之前针对安全漏洞检查虚拟计算资源实例的示例方法的过程;
图3是用于提供并且部署虚拟计算资源的示例模板的图;
图4A是根据本公开的虚拟计算资源的部署前安全分析的示例方法的流程图;
图4B是结合图4A的方法来处理实例启动失败的示例方法的流程图;
图5A至图5B示出根据本公开的另一示例计算环境,该另一示例计算环境实现在部署虚拟计算资源实例之前针对安全漏洞检查虚拟计算资源实例的另一示例方法的过程;
图6是根据本公开的虚拟计算资源的部署前安全分析的另一示例方法的流程图;
图7是实现本公开的系统和方法的硬件计算设备的图;以及
图8是转换用于提供并且部署虚拟计算资源的模板的示例方法的图。
具体实施方式
在计算资源服务提供商的上下文中,客户端进行请求以使计算资源服务提供商的计算资源被分配给客户端使用。计算资源服务提供商的一个或多个服务接收请求并且向客户端分配物理计算资源,例如计算机处理器、存储器、存储驱动器、计算机网络接口和硬件计算设备的其他组件的使用。在一些计算系统中,计算系统的虚拟化层生成“虚拟”计算资源实例,所述“虚拟”计算资源实例表示对应物理计算资源的分配部分。因此,客户端可以操作和控制虚拟计算资源实例,包括但不限于:虚拟机实例,每个虚拟机实例模拟具有操作系统、处理能力、存储容量和网络连接的完整计算设备;用于执行特定处理的其他容器或虚拟机实例;虚拟网络接口,每个虚拟网络接口使得一个或多个虚拟机实例能够彼此隔离地使用底层网络接口控制器;虚拟数据存储库,虚拟数据存储库与硬驱动器或数据库相类似地运行;等等。计算资源服务提供商可以在客户端自己的虚拟计算环境中将虚拟计算资源提供给客户端,该客户端自己的虚拟计算环境可以与其他客户端的环境通信地隔离。计算资源服务提供商可以允许客户端配置其虚拟计算资源,以便虚拟计算资源可以接收来自最终用户的计算设备的连接;客户端的虚拟计算资源可以向最终用户提供软件应用、网络(Web)服务和其他计算服务。
如下面进一步描述的,计算资源服务提供商的一个或多个服务可以负责分配虚拟计算资源、配置虚拟计算资源以及将虚拟计算资源部署到客户端的虚拟计算环境中。客户端可以创建定义虚拟计算资源的特定类别的配置模板。例如,“网络(web)服务器”配置模板可以包括具有默认值和/或可定制值的参数;虚拟机实例采用这些参数在客户端的虚拟计算环境中充当网络(web)服务器。客户端可以将指定虚拟机实例的类别的请求配置为“网络(web)服务器”,并且处理该请求的资源分配系统可以将网络(web)服务器配置模板解释为将新的虚拟机实例“加快旋转(spin up)”为具有相同参数的网络(web)服务器。
通过在分配给环境的对应资源内创建实例,以及将实例连接到其他虚拟计算资源并且有时还连接到与最终用户设备进行接口连接的计算网络,将虚拟计算资源部署到客户端的虚拟计算环境中。在一个实现方式中,计算系统的虚拟化层(例如,包含一个或多个管理程序)在环境中生成一个或多个虚拟网络,以及新实例接收虚拟网络上的地址(例如,IPv4地址)并且然后可以与虚拟网络上的其他组件进行通信。物理或虚拟联网组件(例如网络接口、防火墙、负载均衡器等)可以参与虚拟网络,所述物理或虚拟联网组件实现通信协议、地址空间以及组件之间的连接和与外部通信网络(例如因特网和其他广域网)之间的连接。在各种实现方式中,客户端可以配置虚拟网络及其附属组件的各个方面。这些配置可能创建安全漏洞。例如,客户端可以将虚拟网络接口配置为用作具有最终用户设备可以连接到的公共可用IP地址的“端点”(例如,通过将IP地址键入到浏览器程序中);该配置可能会使某些端口不期望地打开,以供正在寻找打开端口的最终用户设备访问。因此,应该针对安全问题检查虚拟网络的配置。
附加地或替选地,客户端可以创建安全策略并且将该安全策略与例如特定的最终用户、最终用户组、特定的虚拟计算资源(例如,虚拟机实例)、虚拟计算资源的特定类型、虚拟计算资源的特定类别、计算网络、来自地理区域的流量等相关联。接收和评估由最终用户访问虚拟计算资源的请求的计算资源服务提供商和/或客户端的服务可以使用安全策略来确定是否向请求用户准予所请求的访问。在一个示例中,客户端可以通过在上述配置模板中指定安全策略来将安全策略应用于虚拟计算资源的类别;如果计算系统的各个组件被正确地配置,则应该利用附加到模板的所指定的安全策略(即与实例相关联并且控制对实例的访问)来部署要使用该模板来配置和启动的实例。
一些安全策略可以评估虚拟计算资源实例与在客户端的虚拟计算环境中执行的其他虚拟计算资源和虚拟网络的交互。这样的策略可以检查实例的属性,所述属性在实例已被创建并且准备好部署之前没有被设定。例如,用于虚拟机实例的策略可以检查实例的地址是将实例放置在虚拟网络上的防火墙内部还是外部;在策略可以评估地址的位置之前,实例需要接收该地址。在一些实现方式中,由策略评估的实例配置的部分可能取决于虚拟网络的客户端配置。此外,可以在实例运行的同时和/或在从相同模板生成的实例的部署之间改变虚拟网络配置,使得被检查的参数的值可以改变以及需要在部署时并且之后定期地被重新检查。
本公开提供用于对计算资源服务提供商的计算环境内的虚拟计算资源、安全策略和网络配置(诸如以上描述的那些)执行主动安全检查的系统和方法。特别地,所提供的系统的实施例实现了自动方法,所述自动方法用于一旦基本上或完全地解析了虚拟计算资源的实例的配置,但是在该实例被部署到虚拟计算环境中之前,就评估该配置。这样的评估可以包括将实例的配置参数与体现合适配置(例如“安全最佳实践”配置)的评估参数集合进行比较。例如,系统可以测试配置是否将实例或虚拟计算环境的其他组件暴露给多个“常见漏洞和披露”(CVE)中的任何一个,例如容许任何最终用户设备访问、读取和/或写入实例的已分配存储空间的设定。
如上所述的安全策略可以与虚拟计算资源、与一个或多个最终用户和/或与虚拟计算环境的其他参数相关联,使得安全策略附加到虚拟计算资源的实例、或者以其他方式控制对虚拟计算资源的实例的访问。在一些实施例中,将安全策略与实例相关联或将安全策略附加到实例包括:创建不依赖于外部数据的“已解析”安全策略(即,安全策略的所有参数具有与其相关联的设定值),以及然后将安全策略数据添加到相关联的虚拟资源实例的记录或数据对象(例如,元数据)。系统可以检查由附加的安全策略确定的实例配置的元素。如果检查失败,则系统可以阻止实例的部署。在一些情况下,客户端可能能够部署可作为单个单元进行管理的资源集合或“堆栈”。用于向最终用户提供网络(web)应用的堆栈的非限制性示例包括被配置成作为网络(web)服务器运行的虚拟机、用于存储应用数据的数据存储库以及设定联网规则的安全策略。系统可以确定失败的部署影响与堆栈的启动相关联的实例,并且可以终止堆栈或重复堆栈的执行(例如通过挂起或销毁已为堆栈实例分配或部署的一个或多个其他资源)。附加地或替选地,系统可以向客户端生成描述失败的部署的警告,并且可以识别负责设定任何违规参数的安全策略。系统可以直接评估安全策略本身。在一些实施例中,系统可以在评估安全策略之前充分准备用于部署的实例,以便解析安全策略中的任何变量(例如,对其他资源的引用;输入值)以进行测试。在一些情况下,安全策略分析器服务可被用来比较安全策略,并且确定两个安全策略是否等效、第一安全策略是否比第二安全策略更宽松(permissive)等。如果评估失败,则系统可以从安全策略分析器服务接收失败报告,并且可以向客户端提供信息以纠正由安全策略引起的任何错误配置。
系统可以允许通过检查的实例被部署到所配置的虚拟计算环境中。随后,系统可以周期性地或者响应于请求或另一触发事件来重新检查实例配置。在一些情况下,资源监视服务可被用来从监视的实例收集配置数据和/或遥测数据,并且可以执行(和/或使安全策略分析器服务执行)与部署前评估相同的检查、或与部署前评估不同的检查。在一个实施例中,在任何适当的时间段内自动地检查配置和/或安全策略。在另一实施例中,响应于对安全策略、实例配置或虚拟网络的配置参数的改变而进行检查。
在一些情况下,启动虚拟计算资源实例的请求识别配置模板,以及资源分配系统使用所识别的模板来设定新实例的初始配置并且准备用于部署的新实例。模板可以识别要附加到实例的一个或多个安全策略,并且可以进一步包括对安全策略的上述评估进行配置的指令或其他数据。例如,在一些实施例中,模板可以从预先配置检查集合中识别应该针对模板的资源和安全策略运行哪些检查。
在一些情况下,转换服务可被用来修改模板,以便转换后的模板使资源分配系统(1)确定应该对要启动的虚拟计算资源执行部署前安全检查,(2)请求提供商的安全评估系统来执行所识别的检查,以及(3)在提供和/或部署对应虚拟计算资源实例或者拒绝对应虚拟计算资源实例的部署之前等待安全评估的结果。在一个实施例中,如以下进一步描述的,转换后的模板可以使资源分配系统向一个或多个虚拟资源实例分配资源和/或创建一个或多个虚拟资源实例,使得原始模板的配置参数和安全策略内的变量和引用可以被完全地解析,以便配置和/或安全策略可以被发送给配置分析器服务并且由配置分析器服务进行评估。转换后的模板还可以在与安全策略之一相关联的每个资源的配置中包括依赖,该依赖使得资源分配系统在部署对应虚拟资源实例之前等待安全策略被成功地创建并且被附加到所提供的虚拟资源实例。
在模板的转换之后,系统可以更新现有资源(例如,执行实例)以使用转换后的模板,和/或可以使用转换后的模板来满足对识别该模板的新实例的请求。附加地或替选地,系统可以采用模板验证API来使得客户端能够在使用转换后的模板分配一个或多个虚拟计算资源之前针对转换后的模板执行资源和安全策略的检查。
在前面和下面的描述中,描述了各种技术。为了说明的目的,阐述了具体的配置和细节,以便提供对实现这些技术的可能方式的透彻理解。然而,还将明显的是,以下描述的技术可以在没有具体细节的情况下以不同的配置来实践。此外,可以省略或简化众所周知的特征,以避免使所描述的技术模糊。
参考图1,本公开的实施例可以在可由用户计算设备102、103的用户经由诸如因特网之类的计算机网络104访问的计算资源服务提供商199的计算系统内或之上运行。特别地,要部署的虚拟计算资源的“客户端”或管理员可以使用计算设备102连接到第一用户接口108来访问计算资源服务提供商199的计算系统(例如,使用客户端的用户帐户凭证);最终用户可以使用计算设备103连接到第二用户接口110或与计算机网络104连接的另一端点来访问客户端的虚拟计算资源。用户接口108、110可以是网站、网络(web)应用、命令控制台等等,如下面进一步所述。
计算资源服务提供商199实现至少一个虚拟计算环境100,在该虚拟计算环境100中,用户可以获得虚拟计算资源,所述虚拟计算资源使得用户能够运行程序,存储、检索和处理数据,访问计算资源服务提供商199的服务,等等。虚拟计算环境100可以是在一个或多个物理计算设备上实现的计算资源虚拟化平台的任何合适类型和/或配置之一。虚拟计算环境100的非限制性示例包括数据中心、被组织成地区或区域的数据中心集群、公共或私有云环境等。虚拟计算环境100可以与客户端相关联并且由客户端控制和管理(例如,经由用户接口108)。在一些实施例中,特定客户端的虚拟计算环境100可以专用于该客户端,并且除非根据由客户端所授予的访问许可,否则禁止由计算资源服务提供商199的任何其他用户对该特定客户端的虚拟计算环境100进行访问,如本文中详细描述的那样。
计算资源服务提供商199可以包括实现系统和服务的数据处理架构,所述系统和服务在任何特定虚拟计算环境的“外部”运行并且执行各种功能,例如管理与虚拟计算环境的通信,提供电子数据存储,以及执行安全评估和其他数据分析功能。这些系统和服务可以彼此通信,与计算资源服务提供商199外部的设备和服务通信和/或与计算环境通信。将理解的是,附图中被描绘为在特定虚拟计算环境100内部或在所有虚拟计算环境外部的服务可以被适当地修改,以按照与所描绘的方式不同的方式在数据处理架构中运行。
通常,用户计算设备102、103可以是任何计算设备,例如台式机、膝上型计算机、移动电话(或智能电话)、平板计算机、自助服务终端、无线设备以及其他电子设备。另外,用户计算设备102、103可以包括在相同或不同的数据中心上运行的网络(web)服务,其中,例如,不同的网络(web)服务可以以编程方式彼此通信以执行本文中描述的一种或多种技术。此外,用户计算设备102、103可以包括诸如因特网电器和连接的设备之类的物联网(IoT)设备。这样的系统、服务和资源可以具有其自己的用于连接其他组件的接口,下面将介绍其他组件中的一些。尽管本文中可以将一个或多个实施例描述为使用用户接口,但是应当理解,这样的实施例可以附加地或替选地使用任何CLI、API或其他编程接口。
将用户设备102连接到计算资源服务提供商199的网络104可以是任何有线网络、无线网络或其组合。另外,网络104可以是个人局域网、局域网、广域网、空中广播网络(例如,用于无线电或电视)、有线网络、卫星网络、蜂窝电话网络或其组合。在一些实施例中,网络104可以是私有或半私有网络,例如公司或大学的内联网。网络104可以包括一个或多个无线网络,例如全球移动通信系统(GSM)网络、码分多址(CDMA)网络、长期演进(LTE)网络或任何其他类型的无线网络。网络104可以使用协议和组件来经由因特网或任何其他前述类型的网络进行通信。例如,由网络104使用的协议可以包括超文本传输协议(HTTP)、HTTP安全(HTTPS)、消息队列遥测传输(MQTT)、受约束的应用协议(CoAP)等。用于经由因特网或任何其他前述类型的通信网络进行通信的协议和组件对于本领域技术人员而言是众所周知的,因此在本文中不再更详细地描述。
因此,用户设备102、103的用户可以经由用户接口108、110访问计算资源服务提供商199,该用户接口可以是与用户设备102、103和网络104兼容的任何合适的用户接口,例如API、网络(web)应用、网络(web)服务或可由用户设备102、103使用网络(web)浏览器或其他软件应用来访问的其他接口、命令行接口等。在一些实施例中,用户接口108、110可以包括用于使用例如标记语言和其他常见的网络(web)技术在用户设备102、103上生成图形控制台的代码和/或指令。第一或管理接口108可以经由连接设备102向用户呈现用于在一个或多个计算环境100中配置、请求、启动以及以其他方式操作虚拟计算资源的各种选项。第二或最终用户接口110可以经由连接设备103向用户呈现经由在客户端的虚拟计算环境100中执行的虚拟计算资源142处理和提供的静态、动态和/或交互式内容。由用户输入到用户接口108、110中的用户输入(例如,文本、计算机文件、从列表或菜单中选择的元素、按钮上的鼠标点击以及其他交互)可以由计算资源服务提供商199的一个或多个组件来接收和处理,例如安全评估系统106、模板转换服务112和/或计算环境100中的一个或多个组件(例如资源分配系统120)。
例如,客户端可以使用用户接口108来配置虚拟网络,创建用于启动虚拟计算资源142并且将虚拟计算资源142连接到虚拟网络和/或外部通信网络104的模板114,以及创建管理最终用户可以如何访问虚拟计算资源的安全策略116。这样的处理可以生成描述客户和/或最终用户的用户帐户的记录,并且在用户数据存储库180中存储用户帐户记录。所述记录可以包括指示与该用户帐户相关联的最终用户被授权或被批准来请求并且使用计算环境100中的虚拟计算资源的信息。该信息可以描述对最终用户使用虚拟计算资源的能力的限制。例如,用户帐户信息可以指定允许最终用户请求的虚拟计算资源的类型和/或允许最终用户执行的动作(例如,读取、写入、复制)。根据本公开,客户端可以进一步输入其他配置设定,系统以后可以使用所述其他配置设定来执行虚拟计算资源的安全评估。
计算环境100可以被配置为向被授权使用计算环境100的全部或一部分的用户提供计算资源。计算资源可以包括例如任何硬件计算设备资源,例如处理器计算能力/容量、只读和/或随机存取存储器、数据存储和检索系统、设备接口(例如网络或外围设备连接和端口)等。在一些实施例中,这些资源可以分散在多个分立的硬件计算设备(例如,服务器)之间;这些硬件计算设备可以实现虚拟化层和对应的虚拟化系统(例如,服务器上的管理程序)或者与虚拟化层和对应的虚拟化系统进行通信,由此计算资源由虚拟计算资源来表示并且可作为虚拟计算资源来访问。虚拟计算资源可以是与某些计算资源相对应的逻辑构造,例如数据卷、数据结构、文件系统等。虚拟计算资源的非限制性示例包括虚拟机和容器(如下所述)、能够存储文件和其他数据的逻辑数据存储卷、软件程序、数据处理服务等。
计算环境100可以被配置为通过虚拟化对应硬件计算设备的计算资源以产生固定数量或可变数量的可用虚拟计算资源132来分配对应硬件计算设备的计算资源。可以以有限的方式将可用资源132提供给一个或多个用户,所述一个或多个用户对计算环境100中的虚拟计算资源提交请求;由虚拟资源142来表示分配给特定用户和/或由特定用户使用的这样的资源。可以由在计算环境100内和/或在计算环境100外部(即,在计算资源服务提供商199的数据处理架构中)执行的一个或多个服务来执行根据本系统的与以下各项有关的各种功能:处理使用虚拟资源的请求,以其他方式管理可用资源132和所分配的虚拟资源142的分配和配置,以及限制分配给特定用户的虚拟资源142的数量。
在一些实施例中,如图1中所示,在计算环境100内运行的资源分配系统120可以与在计算环境100外部实现的安全评估系统106合作,以根据虚拟资源配置的安全检查来管理虚拟资源的分配。在一些实施例中,资源分配系统120至少接收包含请求、命令、指令等(在本文中被统称为“请求”)的通信,以分配、启动、执行、运行或以其他方式提供计算环境100中的一个或多个虚拟计算资源,以供可识别的用户(例如,请求用户或另一指定用户)使用。由安全评估系统106接收到的请求可以由客户端(例如,使用管理用户接口108)或由连接的最终用户(例如,使用用户接口110)直接生成,或者可以作为或响应于计算资源服务提供商199的另一组件或外部设备的输出(例如,触发事件消息)来生成请求。
资源分配系统120可以包括以软件或硬件设备实现的用于执行相关任务的一个或多个服务。在一些实施例中,资源分配系统120可以包括请求处理器170,请求处理器170被可执行程序指令配置为接收对虚拟计算资源的请求,将请求解析为传递和其他参数,基于可用资源132、本文中描述的安全评估和其他参数来确定是否可以满足该请求,以及如果可以满足该请求,则提供虚拟计算资源142,该虚拟计算资源142被配置为根据该请求的参数来使用。请求处理器170可以附加地被配置为向安全评估系统106发送请求或者包含在请求中或描述请求的一些或全部数据,以进行如本文中描述的相关联的处理。请求处理器170或资源分配系统120的另一组件可以被配置为向用户接口108发送与处理请求有关的信息,例如错误、完成和其他状态消息。
资源分配系统120可以附加地收集和/或生成描述虚拟计算资源142的各方面的使用数据。这样的使用数据的非限制性示例可以包括:在启动或启动失败时的虚拟计算资源142的配置和/或状态参数;与使用虚拟计算资源的请求的处理有关的信息;通过监视虚拟计算资源142的操作(例如网络通信、数据存储和检索以及其他磁盘访问操作、软件程序的执行等)来监视所收集的数据;以及状态数据,例如在虚拟计算资源142被提供、部署、终止、失败或产生错误时或在任何其他时间的虚拟计算资源142的状态的快照。使用数据可以存储在计算资源服务提供商199的使用数据存储库182中。附加地或替选地,用于计算环境100的使用数据存储库182可以被实现在计算环境100本身内。存储在使用数据存储库182中的使用数据可以仅对客户端可访问,或者可以由某些其他系统和/或服务来访问。例如,安全评估系统106可以默认地或通过用户授权来访问和使用一个用户或多个用户的使用数据,以更新或解释安全模型190,如下面进一步描述的。
安全评估系统106基于安全模型190、相关模板114和安全策略116中的信息以及对用户数据执行的安全评估的结果,确定所请求的虚拟资源142的所提议的配置是否在提供和部署虚拟资源142之前和之后是否满足客户端提供的安全要求。在一些实施例中,安全评估系统106可以是全局(即与计算资源服务提供商199的所有计算环境进行通信)的系统,并且可以被实现在计算资源服务提供商199的数据处理架构中。例如,安全评估系统106可以是控制平面的一部分,该控制平面处理进入计算环境和离开计算环境的一些或全部网络通信。在其他实施例中,安全评估系统106可以包括分布在计算环境之内和跨计算环境分布的一个或多个组件,例如服务。以软件或硬件实现的一个或多个组件服务可以执行本文中描述的各种离散任务,或者在一些实施例中可以使本文中描述的各种离散任务由其他服务来执行。例如,在一些实施例中,安全评估系统106自身可以执行资源配置的安全评估,而在其他实施例中,安全评估系统106可以向安全评估系统106外部的另一服务发送请求以进行评估。附加地或替选地,资源分配系统120可以执行安全评估系统106的任务中的一些或全部,如本文中进一步描述的。
安全评估系统106可以包括配置分析器服务160,该配置分析器服务160被配置为将任何合适的安全评估算法应用于可用数据,以便确定所请求的虚拟计算资源的所提议的配置是否通过在安全模型190中定义的一个或多个安全检查中的每个。在一些实施例中,客户端可以指定检查的子集,或者所请求的虚拟资源的类型可以隐含检查的子集;因此,一般地,执行这些检查可能需要首先根据指令194的集合来确定要执行哪些检查。检查可以是不同的类型,例如与某个资源类型相关联的资源检查,或在使用某些网络设备或结构时相关的网络配置检查。安全模型190的一个示例是数据库或其他结构化数据存储库,该数据库或其他结构化数据存储库可以被包含在评估数据存储库152或安全评估系统106的存储器(例如,实现安全评估系统106的硬件计算设备的存储器模块)中或由评估数据存储库152或安全评估系统106的存储器引用。这样的数据库可以包括一个或多个记录,每个记录包含关于特定检查的信息。记录中的信息可以包括用于检查的目标的描述符、用于执行检查的信息(例如,由指令194引用)以及可选地由用户(即,客户端)提供的用于定制检查以针对用户的虚拟资源进行操作的参数和值。在一个实施例中,安全模型190可以是描述安全评估系统106可以执行的所有检查的“主”安全模型,并且针对每个客户端账户单独地存储的数据结构或指令194可以为相关联的客户端识别期望的检查和用户参数/值对。在另一实施例中,可以为每个客户端账户创建并且存储唯一安全模型190,该唯一安全模型190包含特定于客户的信息(即,由客户端选择的检查;由客户端提交的用户值)。
资源检查可以测试安全漏洞,所述安全漏洞可能在一个或多个资源类型(包括相关联的资源类型)之间是共同的,或者可能是特定于相关联的资源类型。基于资源的安全检查的非限制性示例包括:对于虚拟机实例,该实例拒绝出站流量,不打开不安全的通信端口(例如,与诸如远程登录(Telnet)之类的未使用的协议相关联),并且不充当堡垒主机(bastion host)或蜜罐(honeypot)(除非其明确地是实例的类别);对于数据存储实例,该实例对传输中的数据进行加密,对所存储的敏感数据进行加密,检查连接用户经过身份验证和授权,并且对交易信息进行日志记录;对于任何虚拟计算资源实例,该实例通过指定显式的“拒绝”参数来拒绝所有非https流量;以及对于安全策略,该策略禁止对数据存储库的不受限制的公共写入访问,并且禁止对任何虚拟资源实例、安全策略和安全设定的不受限制的公共访问。如本文中所解释的,资源检查可以符合安全最佳实践。根据所示出的示例,可以将用于执行资源检查的参数存储在安全模型190中包含的资源检查记录192A中。资源检查记录192A可以包含识别对其进行检查的资源的类型的信息(例如,虚拟机、数据存储库、消息队列等)。资源检查记录192A可以进一步包含用于执行检查的信息,例如安全评估系统106读取和/或执行的源代码或可执行文件。资源检查记录192A可以附加地包含一个或多个参数,所述一个或多个参数具有由客户端(例如,经由管理员接口108)提供的所存储的值;这些参数/值对可以由安全评估系统106在执行检查时使用,以便针对某些目标虚拟资源和/或最终用户帐户来定制检查的性能。例如,如果资源检查记录192A的检查对到虚拟机实例中的不安全端口是否打开进行测试,则用户提供的值可以识别某些端口号,这些端口号需要或不需要进行检查。
网络配置检查可以测试由物理和虚拟网络组件(例如,网络适配器、路由器、路由表、网关、负载均衡器、防火墙、代理服务器、虚拟私有网络(VPN)服务器、通信软件、协议(例如,在IP协议栈中)等)的配置参数引起的安全漏洞。这样的检查还可以基于安全最佳实践,并且可以对网络和网络流量执行静态和/或动态分析。例如,检查可以是对实现虚拟计算环境100的物理计算资源的快照的语义分析。在另一示例中,检查可以评估虚拟资源之间的连接(例如,“X资源连接到Y资源吗”)或在虚拟资源和外部网络之间的连接(例如,“公共IP地址可以连接到端口Z上的X资源吗”)。在另一示例中,检查可以分析遥测数据以确定网络流量是否具有异常特征。根据所示出的示例,可以将用于执行网络配置检查的参数存储在安全模型190中包含的网络检查记录192B中。网络检查记录192B可以包含识别网络的参数或网络上的对象的信息,网络上的对象是检查的直接目标(例如,路由表)或间接目标(例如,连接到目标虚拟资源的负载均衡器)。网络检查记录192B可以进一步包含用于执行检查的信息,例如安全评估系统106读取和/或执行的源代码或可执行文件。网络检查记录192B可以附加地包含一个或多个参数,所述一个或多个参数具有由客户端(例如,经由管理员接口108)提供的所存储的值;这些参数/值对可以由安全评估系统106在执行检查时使用,以便针对某些目标虚拟资源和/或最终用户帐户来定制检查的性能。例如,如果网络检查记录192B的检查对路由表是否将资源X连接到资源Y进行测试,则客户端可以提供资源Y的标识符以用于存储在网络检查记录192B中。
配置分析器服务160可以针对相应的配置参数执行检查,以确定配置的安全简档是否有效。在一些实施例中,有效性确定可以是“是”或“否”命题:如果配置未确认期望的安全简档,则将该请求分类为无效。在其他实施例中,系统可以被配置为评估用户和请求有效的多个置信度,并且可以存在多个阈值和/或值范围,每个阈值和/或值范围表示对应的置信度。指导关于资源或请求是否有效的确定的特定度量和阈值、以及安全评估评分算法和用于产生度量的值的其他方法可以取决于当前描述的系统的特定实现方式的许多不同方面。尽管本文中描述了一些示例,但是本系统不限于用于测量活动有效的可能性的任何特定方法。
安全评估系统106还可以包括监视服务166,该监视服务166在虚拟资源142已被部署之后针对虚拟资源142的配置调用配置分析器服务160或以其他方式执行检查。指令194和/或相关检查记录可以指定要执行的监视的监视周期和/或其他属性。在一个实施例中,监视实质上可以包括周期性确认虚拟资源实例的配置没有从其启动配置改变。每当确认间隔过去时,监视服务166可以使用安全模型190和确认间隔(例如,存储在指令194中)来执行与部署前执行的检查相同的检查。在另一实施例中,监视服务166可以附加地或替选地执行与部署前检查不同和/或互补的监视检查。例如,网络检查记录192B可以包括描述虚拟资源142可接受的网络流量的信息(例如,如上所述由客户端提供);监视服务166可以获得即时点(point-in-time)和/或聚合的网络流量数据并且对其进行分析(或将其传递给配置分析器服务160),以确定实际流量是否符合可接受的流量参数。
配置分析器服务160和监视服务166的算法可以作为安全模型190的一部分或与安全模型190分开地存储在评估数据存储库152中。附加地或替选地,评估数据存储库152中的安全模型190和/或其他数据可以包含规则或规则集合,所述规则或规则集合将服务160、166配置为根据预定参数来应用一个或多个算法。在目标数据上运行时,配置分析器服务160产生与期望的安全模型190相对应的结果。在各个实施例中,安全模型190可被设计为评估CVE、相对于安全最佳实践的缺陷、自定义安全属性集合等。在各个实施例中,可以使用机器学习和其他统计模型并且基于与历史模式的比较来进行评估。安全评估系统106可以被配置为基于任何可用数据来产生结果,所述可用数据包括但不限于以下各项中的任一个或组合:用户数据,例如用户账户信息和用户供应的或自动生成的用户简档数据;使用数据,例如描述由用户或由其他用户启动的虚拟计算资源的活动的数据;来自其他安全评估(例如其他类型的评估或相同类型的以前评估)的结果;以及对虚拟计算资源的请求中包括的信息。
在一些实施例中,评估数据存储库152可以包括由相应用户帐户的客户端或管理员提供的安全评估参数的值。例如,诸如管理员用户接口108之类的API可以呈现提示(例如,在用户设备102上以图形方式),以供管理员输入任何合适参数的值;管理员可以输入值,以及安全评估系统106可以接收值,并且将其与安全模型190相关联地存储在评估数据存储库152中。这样的参数及其相关联的值可以用作评估中的因素(例如,确定虚拟资源配置的有效性);因此,管理员可以识别构成可允许的(即有效的)配置参数的内容,从而在需要时改变配置分析器服务160将允许的参数。
附加到或替选于配置、部署和管理虚拟计算环境100的计算资源和虚拟网络,客户端可以使用管理员用户接口108来开始本文中描述的各种安全验证和/或补救过程。以下是API的非限制性示例,用户接口108可以是所述API或包括所述API来执行这样的过程。模板创建API可以使得客户端能够提交或编程一个或多个模板114,所述一个或多个模板114包括虚拟计算资源定义和其他参数,资源分配系统120和/或计算资源服务提供商199的其他系统使用计算资源定义和其他参数来分配、配置并且将虚拟计算资源实例部署到虚拟计算环境100中。模板114可以是可以在虚拟计算环境100中实例化的虚拟资源的逻辑表示。模板114可以符合模板语言,相应系统被配置为解释所述模板语言。例如,模板114可以是用诸如JavaScript对象标记(JSON)或YAML之类的面向对象的编程语言编写的结构化文档。在一些实施例中,模板创建API可以使得客户端能够基于当时正在虚拟计算环境100中执行的虚拟计算实例142的配置来生成模板114。下面参考图3来讨论示例模板。
类似地,安全策略创建API可以使得客户端能够提交或编程一个或多个安全策略116,所述一个或多个安全策略116通常包括要附加到虚拟资源实例、用户帐户或虚拟计算环境100本身的操作语句,以授权某些用户对虚拟资源实例执行某些动作。安全策略116可以是指定一个或多个安全许可的信息(例如,被编码在文件中)。安全许可可以是安全策略116的元素,所述元素定义与系统的资源和/或主体相关联的访问权限。例如,许可可以用于准予或拒绝对计算资源服务提供商的计算资源的访问。可以以与语言无关的格式(例如JSON或YAML)来表达策略。本公开中讨论的示例可以是JSON格式或类似于JSON的格式,并且可以是可以实现的各种实施例的说明。当然,在本公开的范围内,还想到可以以结合JSON和类似JSON的格式描述的方式利用的各种其他格式。安全策略可以包括一个或多个许可声明以及附加信息,例如版本信息和策略范围信息。在一些情况下,策略范围信息被包括在安全策略116的起始处的策略头中,或者甚至可以与策略文档分开地存储(并且与策略文档相关联)。安全策略116可以包括多个策略声明,诸如结合图3在其他地方描述的那些策略声明。
验证API可以使得客户端能够在任何时候(例如,在客户端创建模板114或安全策略116之后立即)开始部署前安全检查集合。例如,验证API可以生成请求,该请求开始下面关于图2A至图2D描述的虚拟资源实例创建处理;然而,在模板114和/或策略116被确认为有效之后但是在实例被实际部署之前,验证API可以控制资源分配系统120终止该处理并且释放任何分配的资源。相关地,如果由于模板114和/或策略116中的缺陷而导致实例创建失败,则验证API可以接收到通知,该通知识别模板114或策略116中安全检查失败的部分,因此客户端可以修复错误并且重新运行验证。
安全设定API可以使得客户端能够添加参数、改变现有参数的值以及以其他方式修改虚拟计算环境100和相应的虚拟网络和虚拟计算资源的配置,以便改变或改进配置中与安全策略112交互或者以其他方式影响客户端资源和数据的安全的那些方面。例如,客户端可能能够添加、移除或修改访问控制列表、授权的用户简档、安全组等。通知API可以使得客户端能够在启动(即分配物理资源、提供虚拟资源实例和部署实例)并且监视实例时访问描述各种系统和服务的活动的通知、警报、日志和其他信息。这样的信息可以被存储在例如本文中描述的使用数据存储库182中。模板转换API可以使得客户端能够使转换服务112将所识别的模板114从其原始形式转换为优化形式,该优化形式使资源分配系统120和安全评估系统106在提供或部署虚拟资源实例之前以及可选地还在监视虚拟资源实例的同时执行安全检查。下面关于图8描述示例转换。
在一些实施例中,安全评估结果可以存储在用户数据存储库180中(例如,存储在对应的用户帐户记录中);为了确定有效性,安全评估系统106可以简单地从用户数据存储库180中检索安全评估结果,并且将其与存储的阈值进行比较。在其他实施例中,可以预先进行有效性比较,并且安全评估系统106可以检索比较的结果。在其他实施例中,安全评估系统106可以将安全评估结果发送到计算环境100内的相应资源分配系统120或另一服务,然后该服务可以将其与存储的阈值进行比较。
图2A至图2D示出了在计算资源服务提供商299(其可以与图1的计算资源服务提供商199相同或相似,或者可以是完全不同类型的系统)内的示例性操作,通过所述示例性操作,安全评估系统206(如以上关于图1的安全评估系统106所述)响应于系统活动来执行(例如,图1的安全模型190的)虚拟资源实例的部署前和部署后安全检查。图2A至图2D的示例是针对验证在特定网络可访问服务系统210内启动和执行的虚拟资源实例的访问和控制许可的遵从性(例如,以安全最佳实践),该特定网络可访问服务系统210在虚拟计算环境200内执行并且与计算资源服务提供商299的特定用户相关联。虚拟机实例244和数据存储库实例246被示出为示例;可想到的是,所描述的操作可以在没有过度实验的情况下适用于在任何类型的虚拟资源实例上使用,包括但不限于:消息队列服务、通知服务、最终用户虚拟计算环境、负载均衡器、无服务器执行环境和/或虚拟机实例及其容器实例、机器学习服务、搜索引擎、分析引擎、数据加密管理服务等。
虚拟计算环境200的资源分配系统202可以执行以上关于图1的资源分配系统120所描述的任何操作。特别地,资源分配系统202可以接收在虚拟计算环境200内启动虚拟机实例的请求。附加到将请求发送给安全评估系统206、或者将请求解析为参数并且将一些或全部参数发送给安全评估系统206,资源分配系统202将请求发送给与同该请求相关联的用户相对应的网络可访问服务系统210的前端220。资源分配系统202还可以从安全评估系统206接收消息,所述消息包含所请求的和/或自动的安全评估的结果。在一些实施例中,资源分配系统202可以维护数据存储库252,例如数据库或其他存储的数据结构,该数据存储库252包含对于每个用户的记录,该记录具有有效的用户帐户并且具有在计算环境200内使用虚拟计算资源的许可。这样的记录可以包括用户标识符和足够的信息,以供资源分配系统202和/或前端220或请求处理模块222将用户与接收到的请求相关联和/或将用户信息与由该请求暗示的应用安全策略或其他安全设定进行比较。下面描述该信息的详细示例。
网络可访问服务系统210或其各种组件可以实现各种网络(Web)服务组件、托管或“云”计算环境和/或对等网络配置,以实现本文中所述的处理的至少一部分。网络可访问服务系统210被描述为在包括使用一个或多个计算机网络互连的几个计算机系统(例如,服务器202)的分布式计算环境中运行。网络可访问服务系统210也可以在具有比图2A至图2D中所示的设备更少或更多数量的设备的计算环境内运行。另外,可以存在与用户相关联的多个网络可访问服务系统,所述多个网络可访问服务系统可以都具有相同的配置、或都具有不同的配置、或其组合。因此,网络可访问服务系统210的描绘应被视为说明性的而不限于本公开。
此外,可以以硬件和/或软件来实现网络可访问服务系统210,并且该网络可访问服务系统210例如可以包括在物理计算机硬件上实现的一个或多个物理或虚拟服务器,其被配置为执行用于执行将在本文中描述的各种特征的计算机可执行指令。一个或多个服务器202可以地理上分散在或地理上共同定位在例如一个或多个数据中心中。在一些实施例中,网络可访问服务系统210可以被布置在与计算资源服务提供商299的其他计算环境(未示出)通信地隔离的计算环境200中。例如,在一些实施例中,隔离的计算环境(包括虚拟计算环境200)可以是由计算资源服务提供商299实现的总体计算资源网络的“区域”;这些区域可以彼此独立,并且可以代表总体计算资源网络的地理区域(例如,美国东部、美国西部和欧洲都可以是区域)。这样的独立性可以意味着在特定区域中可用的计算资源专用于该区域并且由网络可访问服务系统的区域实例来控制,以便将该区域与其他区域隔离。
网络可访问服务系统210可以连接到由计算环境200实现或在计算环境200内实现的通信网络204。网络204例如可以是虚拟私有网络或另一虚拟网络,或者可以包括物理组件和虚拟组件两者。在一些实施例中,网络可访问服务系统210内的任何组件可以经由网络204与计算环境200的其他组件进行通信。在其他实施例中,并非网络可访问服务系统210的所有组件都能够与计算环境200的其他组件进行通信。在一个示例中,只有前端220可以连接到网络204,并且网络可访问服务系统210的其他组件可以经由前端220与计算环境200的其他组件进行通信。另外,网络204可用于与计算环境200内部的系统和资源(例如资源分配系统202和任何本地(即,在虚拟计算环境200内实例化的)数据存储库252)进行通信和/或与计算环境200外部的系统和资源(例如计算资源服务提供商299的数据处理架构中的安全评估系统206以及其他系统和资源)进行通信。
前端220可以提供用于与外部资源和设备交换数据的接口(包括用于通过通信网络发送和接收数据的网络接口224),例如以与安全评估系统206进行通信。在一个实施例中,前端220用作由网络可访问服务系统210提供的所有其他服务的前门。前端220可以接收和处理(例如,使用请求处理模块222)在网络可访问服务系统210内启动虚拟机实例的所有请求。前端220可以使用任何合适的协议(包括例如如上所述的HTTP、MQTT和CoAP)来接收这样的请求。请求中包括的任何元数据或其他信息(例如头和参数)也可以用于处理请求。
另外,前端220可以处理来自安全评估系统206和/或资源分配系统202的消息。替选地,前端220可以处理并且响应于来自资源分配系统202和/或安全评估系统206的消息,从而请求信息,例如与用户相关联并且在网络可访问服务系统210A上同时执行的虚拟机实例的数量。前端220还可以处理和响应于来自资源分配系统202和/或安全评估系统206的消息,从而请求其他信息,例如描述特定虚拟机实例的执行的使用数据;或者,前端220可以被配置为自动地,例如在特定时间或响应于事件,将这样的信息发送给资源分配系统202、安全评估系统206或数据存储服务。
前端220可以与网络可访问服务系统210的其他组件进行通信,以便启动和管理实例。例如,前端220可以包括诸如数据存储库之类的组件,该数据存储库存储信息,例如关于使所接收到的启动或终止实例的请求待决的当前正在运行实例的信息(即,实例的标识符,实例在其上运行的服务器等)的信息,以及关于可用于托管附加实例的槽的信息。数据存储库可以耦合到调度服务,该调度服务可以使用存储在数据存储库中的数据来启动和终止虚拟机。前端220、调度服务或另一实例管理器可以管理虚拟机实例的活动池240,所述虚拟机实例与用户/用户帐户相关联以及已经启动并且同时在计算环境200内执行。
在一些实施例中,可以基于预定配置集合(例如对可用和正在执行的虚拟资源的规定限制)来配置调度服务。这样,网络可访问服务系统210可以基于限制来启动或终止与用户相关联的实例。在一些实施例中,网络可访问服务系统210可以使得能够控制(例如,增加或减少)活动池240中的可用容量。例如,系统管理员可以使用用户界面中表示的设定来增加在高峰时段内的活动池240中的容量(实例的最大数量)。在一些实施例中,可以基于预定配置集合(例如包含与分层限制有关的设定的虚拟机映像)来配置活动池240中的虚拟机实例。预定配置集合可以对应于各种类型的虚拟机实例;例如,活动池240可以被配置为最多容纳每种类型的虚拟机实例类型的限制。活动池管理器可以基于与当前或先前启动请求有关的一个或多个度量来优化活动池240中的虚拟机实例的类型和数量。
如所描述的,活动池240是当前被分配给一个或多个用户并且响应于启动虚拟机实例的请求而执行的虚拟机实例组(有时被称为池)。尽管这里将虚拟机实例描述为分配给特定用户,但是在一些实施例中,可以将实例分配给用户组,以使该实例绑定到该用户组,并且该组中的任何成员都可以利用该实例上的资源。例如,相同组中的用户可以属于相同的安全组(例如,基于他们的安全凭证),并且可以将安全检查应用于安全组而不是单个用户。
在一些实施例中,管理活动池240的前端220或调度服务可以维护活动池240中的实例列表。实例列表可以进一步指定实例的配置(例如类型、OS等)。前端220和/或资源分配系统202可以访问该列表,并且可以使用该列表来确定是否已经达到对同时执行的虚拟机实例的限制。在另一实施例中,前端220或调度服务可以被配置为确定对于计算环境200的所分配的层和/或相关联的限制,并且如果已经达到相关联的限制,则可以拒绝启动另一实例的命令。
在所描绘的示例中,为了说明的目的,图2A中表示的第一系统状态包括已经在活动池240中执行的虚拟机实例242。利用虚线框示出了另一虚拟机实例244和数据存储库实例246,以指示这些实例是由传入的资源请求所请求的并且尚未启动,从而使如下所述的安全检查的结果待决。虚拟机实例可以在其上加载操作系统(OS)和/或语言运行时(languageruntime)。例如,实例242具有OS 242A、运行时242B和容器242C;实例244将利用OS 244A、运行时244B和容器244C来启动。容器是在虚拟机实例内使用该实例上可用的资源创建的逻辑单元。在一个实施例中,这样的容器被实现为Linux容器。活动池240中的虚拟机实例可以在其上创建一个或多个容器,并且可以在其上加载与用户相关联的一个或多个程序代码(例如,在该实例的容器之一或本地高速缓存中)。每个容器中可以具有可用的凭证信息,以便在容器上执行的用户代码可以访问相应凭证信息允许他们访问的任何内容。类似地,除了默认数据存储库参数(例如,存储卷、文件系统等)之外,数据存储库实例中还可以具有可用的凭证和其他访问信息。
网络可访问服务系统210内的各种组件的图示在本质上是逻辑的,并且这些组件中的一个或多个可以由单个计算设备或多个计算设备来实现。在一些实施例中,网络可访问服务系统210可以包括用于各种类型的虚拟资源的多个前端、多个活动池以及其他执行空间。本文中描述的实施例不受所图示的所部署和所请求的资源量的限制,并且本领域的技术人员将理解,网络可访问服务系统210可以包括使用任意数量的物理计算设备202实现的任意数量的虚拟资源实例。
根据图1中描绘的示例系统,图2A至图2D示出了可以由安全评估系统206接收或提供给安全评估系统206以便执行部署前和部署后安全检查的几种类型的系统数据。安全模型254可以包括图1的模型190或其分立组件,诸如各种定义的安全检查和用于执行检查的指令,以及与安全模型有关的附加信息。用户数据256可以包括用户帐户数据、用户简档信息、用户提交和/或导出的用户偏好、用户提交的配置设定、来自与用户或用户帐户有关的先前安全评估的结果等。例如,用户数据256可以识别在安全模型254中定义的检查的子集,用户想要对可用于在网络可访问服务系统210中部署的一种或多种类型的虚拟资源执行的检查的子集。使用数据258可以是上述任何静态或动态监视数据,并且可以包括使用信息,该使用信息可以是与由一些或所有其他用户对系统的使用有关的原始数据或预先分析的数据。例如,使用数据258可以包括描述所请求的资源通过安全检查或安全检查失败的频率的聚合数据;如果这样的频率太高,则该数据可以用作对安全评估系统206的如下指示:已经传播了对虚拟网络配置的重大改变,或者该系统正被黑客攻击。启动数据260可以包括可用于细化或者以其他方式配置所请求的虚拟资源的启动的任何信息,例如虚拟机映像、虚拟机实例模板、来自先前实例执行的状态数据、以及从请求和/或先前的类似启动请求获得的参数值和其他信息。
在一些实施例中,安全评估系统206可以连接到包含模型安全策略的安全策略数据存储库250,安全评估系统206可以将模型安全策略与客户端的安全策略进行比较。例如,模型安全策略可以包括与所有或各种单独类型的虚拟资源相对应的最佳实践策略集合。最佳实践策略可以是被确定为不应被允许的许可集合的安全策略集合。例如,第一最佳实践策略可以是特定数据容器不应是世界可写的(例如,任何主体、甚至访客用户或匿名用户都可以写入该容器)。API可以通过确定接收到的策略没有比每个最佳实践策略更宽松来验证遵循了最佳实践策略。最佳实践策略的示例可以包括世界可写、世界可读、世界可访问的资源等。在一些实施例中,可以基于用户输入、所请求的计算资源的类型以及其他上下文信息来确定最佳实践策略的集合。例如,计算资源服务提供商可以对于各种类型的计算资源支持几种服务,并且最佳实践规则集合可以基于安全策略所应用于的计算资源的类型而不同。
在以上系统的上下文中,图2A至图2C示出了示例数据处理流程,由此在部署虚拟资源实例之前针对安全漏洞来检查虚拟资源实例。参考图2A,系统接收对虚拟资源的请求。在一些实施例中,该请求可以源自于来自最终用户的用户输入、或者源自于由客户端发出的命令、或者源自于另一触发事件,并且可以由资源分配系统202经由前端220来接收。该请求可以是针对单个虚拟资源实例、虚拟资源类型的多个实例或多种资源类型的多个实例,其中这些实例可以以某种方式互连或者可以不互连。例如,并且如图所示,该请求可以是创建多个资源的“堆栈”—具体地,是虚拟机实例和该虚拟机实例可以访问的数据存储库实例。该请求可以识别模板(即,图1的模板114),该模板可以被存储在本地数据存储库252或另一数据存储库中。如下文进一步解释的,资源分配系统202可以获得所识别的模板,并且使用该模板来确定应当根据该模板的资源定义来准备虚拟资源实例244和数据存储库实例246以供启动。模板可以进一步指定要在部署之前针对虚拟资源实例配置执行的安全检查;附加地或替选地,该请求可以包括一些或全部安全检查。
资源分配系统202可以识别安全检查并且将安全检查与所提议的虚拟资源实例的配置一起发送给安全评估系统206。在一个实施例中,资源分配系统202可以立即将所有检查和所有配置发送给安全评估系统206,并且安全评估系统206可以确定哪些检查应用于每个所请求的资源类型。在所示的实施例中,资源分配系统202可以识别与虚拟机资源类型相关联的安全检查,并且可以将所识别的检查和所提议的虚拟机实例244的配置(至少从模板导出)发送给安全评估系统206作为对要执行的安全检查的第一请求。使用安全模型254和/或来自安全策略数据存储库250的模型虚拟机安全策略,安全评估系统206可以针对第一请求执行安全检查。
参考图2B,假设虚拟机实例244的配置通过安全检查,则资源分配系统202从安全评估系统206接收指示该配置有效的信号。然后,资源分配系统202可以格式化并且发送对数据存储库实例246的配置的安全检查的第二请求。假设数据存储库实例246的配置通过了相应的安全检查,则资源分配系统202从安全评估系统206接收指示该配置有效的信号。如图2C中所示,资源分配系统202然后可以提供如上所述的虚拟资源实例244、246,将对应的安全策略246A、244D附加到虚拟资源实例244、246,并且将实例244、246部署到网络可访问服务系统210中。资源分配系统202还可以将有关实例的启动的信息发送到包含用户数据256、使用数据258和/或启动数据260的数据存储库。
参考图2D,一旦部署了所请求的虚拟资源实例244、246,安全评估系统206可以进一步监视执行的实例244、246并且重新检查安全检查以确认配置没有变得无效。在一些实施例中,安全评估系统206可以直接与执行的实例244、246交互。例如,如果针对数据存储库实例246的检查之一是为了确认数据存储库实例246不是世界可写入的(即,任何连接的最终用户可以将数据上传到数据存储库实例246),则安全评估系统206可以模拟连接到前端220的最终用户设备(例如,从代表计算资源服务提供商299外部的设备的地址的“傀儡(puppet)”IP地址),并且提交将文件上传到数据存储库实例246的请求,而不提供授权的用户凭证。如果上传被接受,则数据存储库实例246可能已变为世界可写的,并且可以生成警报或通知。安全评估系统206可以自动地执行监视,或者可以响应于用户输入或诸如新实例启动之类的触发事件来执行监视;检查可以被重复任意期望的次数,可以以任何期望的时间间隔来重复检查,以及可以在指定的时间段内或在实例的生命周期内重复检查。
图3示出了示例模板300,示例模板300可以是图1的模板114的示例。模板可以具有比图示的模板300更多或更少的信息;以下描述提供了可以使用模板来定义和启动的资源的一些示例。模板300可以包括头信息,例如模板标识符、对于拥有该模板的用户(即,客户端)识别的用户、以及包含描述性信息(诸如描述模板300用途的文本和版本)的一个或多个字段。模板中可以包括一个或多个定义302、304、306,并且每个定义可以提供要包含在从模板300创建和/或启动的资源的配置中的参数。资源定义的非限制性示例包括:加密密钥定义302,加密密钥定义302包括密钥标识符、访问策略和用于执行加密功能的一个或多个模式;计算资源定义304,计算资源定义304包括用于识别从定义304启动的虚拟资源实例的名称、资源类型(例如,虚拟机、数据存储库、消息队列等)、识别一个或多个用户及其被授予的访问许可的一个或多个访问控制列表或其他安全子策略、以及相应虚拟资源实例的一个或多个属性;以及安全策略定义306,安全策略定义306包括策略名称、策略类型、安全策略所附加到的计算资源的名称、以及安全策略350本身或对安全策略350的引用(例如,文件名)。
如上所述的资源分配系统可以被配置为根据模板300中的定义来创建和配置虚拟资源实例。在一个示例中,资源分配系统可以读取虚拟机的计算资源定义304来确定为虚拟机的实例分配的物理资源和/或虚拟资源的类型和数量。该信息可以从定义304的属性确定,例如虚拟机映像文件或多个参数,该虚拟机映像文件或多个参数识别文件系统、操作系统、运行时环境、容器的数量和组成、要执行的软件程序等等。这些属性还可以识别相关联的实例应如何连接到虚拟网络和/或被配置为连接到外部通信网络的端点。在另一示例中,资源分配系统可以读取安全策略定义306,以创建安全策略并且将该安全策略附加到示例虚拟机实例。
安全策略可以包括策略文档350,该策略文档350包括策略标识符和一个或多个许可声明。在一些实施例中,许可声明可以具有其自己的标识符,并且可以指定主体、资源、动作、条件和效果。在一些实施例中,许可声明还可以指定多个这些元素中的一个或多个,诸如例如用户集合或类别、资源集合、几种不同动作和/或多个条件。在一些实施例中,许可声明可以指定一个或多个通配符或以其他方式可修改的字符,其可以用于表示许可声明可以被修改以使许可声明可应用于不同用户及其相关联的资源。通配符可以以各种格式来表示—例如,星号可以表示任意数量的字符,而问号可以表示任意单个字符。在一些实施例中,可以以诸如JavaScript对象标记(JSON)之类的独立于语言的格式来表达策略。在本公开中讨论的示例可以是JSON格式或类似于JSON的格式,并且可以是可以实现的各种实施例的说明。当然,在本公开的范围内,还可想到的是可以以结合JSON和类似JSON的格式描述的方式利用的各种其他格式。
主体(Principal)可以是用户、组、组织、角色、或这些或其他这样的实体的集合和/或组合。主体可以是能够提交导致与资源相关联的动作被执行的API调用的任何实体,和/或可以向其授予与资源相关联的许可的任何实体。作为示例,许可声明可以具有以以下方式指定的主体元素:
“Principal(主体)”:“rn:ws:iam::clientusername(客户端用户名称)”
在一些实施例中,通过唯一地识别主体的资源名称来识别主体。主体可以包括一个或多个名称空间,一个或多个名称空间包括有关主体的附加信息。例如,“rn”可以指代资源名称前缀,并且将后续信息识别为资源名称的一部分;“ws”可以指代资源所在的分区名称空间;“iam”可以指代识别计算资源服务提供商的服务的服务名称空间(例如,计算资源服务提供商可以提供与身份和访问管理有关的服务);另外,可以省略名称空间(请注意,在以上示例中,在“iam”和“clientusername”之间有两个分号(semicolon))—在一些格式中和/或对于一些资源,区域名称空间可以是可选的;以及“clientusername(客户端用户名称)”可以指代帐户的标识符,例如拥有许可声明中指定的资源的帐户。
资源可以指代计算资源服务提供商的计算资源。计算资源服务提供商的计算资源可以包括:计算资源(例如,虚拟机实例);存储资源(例如,可扩展存储、块存储和受管理的文件存储系统);数据库系统(例如,受管理的关系数据库系统);迁移服务(例如用于精简(streamline)从一个物理数据中心到另一个物理数据中心的数据传输的应用、服务和硬件);网络和内容交付;开发者工具;管理工具;安全、身份和访问管理服务;分析服务;人工智能服务等等。计算资源可以按层次结构进行组织,并且可以使用诸如文件夹、目录、桶等结构来将计算资源集合组织为分组。在一些情况下,策略和/或许可可以直接应用于桶,并且授予对环境的跨帐户访问。作为示例,许可声明可以具有以以下方式指定的资源元素:
“Resource(资源)”:“rn:ws:storage(存储):::bucket(桶)/tastyfood.png”
在一些实施例中,资源由唯一地识别资源的资源名称来识别。在一些情况下,资源可以与许可的主体或其他元素共享相同的命名约定。但是,不需要如此,因为许可声明的每个单独元素可以使用独立于其他元素的命名约定、名称空间、格式等。在上面给出的示例资源中,“rn”可以指代资源名称前缀,并且将后续信息识别为资源名称的一部分;“ws”可以指代资源所在的分区名称空间;“storage(存储)”可以指代识别计算资源服务提供商的服务的服务名称空间(例如,计算资源服务提供商可以提供与基于对象的存储有关的服务);如在其他地方所讨论的,在一些情况下可以省略名称空间—例如,可以省略区域名称空间和/或帐户名称空间;以及资源也可以包括资源类型的指示符。在上面的示例中,资源可以指示可移植网络图形(PNG)格式的图像,并且存储在桶中。
动作可以是特定动作或将被该许可允许或拒绝的动作。不同类型的服务(例如,具有不同的服务名称空间)可以支持不同的动作。例如,身份和帐户管理服务可以支持用于改变密码的动作,而存储服务可以支持用于删除对象的动作。可以与资源相关联地执行动作,并且可以例如通过API调用、库调用、程序、处理、步骤系列、工作流或某种其他这样的动作的类型来识别动作。作为示例,许可可以具有以以下方式指定的操作元素:
“Action(动作)”:“storage(存储):GetObject(获得对象)”
在该示例中,被允许或被拒绝的动作(基于许可中指定的效果来确定)对应于支持用于GetObject(获得对象)的动作(例如API调用)的存储服务,其可以与获得存储服务的对象和/或访问存储服务的对象相结合地使用。如在其他地方所讨论的,可以与指定动作相结合地使用各种名称空间。可以使用通配符来指定多个动作。例如,被描述为“Action(动作)”:“Storage(存储):*”的动作元素可以指代由存储服务支持的所有API。作为第二示例,被描述为“Action(动作)”:“iam:*AccessKey(访问密钥)*”的动作元素可以指代由身份和访问管理服务支持的与服务的访问密钥相结合的动作—说明性示例可以包括与以下各项有关的动作:创建访问密钥(例如,可以存在“CreateAccessKey(创建访问密钥)”操作),删除访问密钥(例如,“DeleteAccessKey(删除访问密钥)”),列出访问密钥(例如,“ListAccessKeys(列出访问密钥)”),以及更新现有访问密钥(例如,“UpdateAccessKey(更新访问密钥)”)。
条件元素可以是指定策略何时生效的一个或多个条件。在一些实施例中,条件元素是可选的,并且在一些许可中可以省略。可以将条件描述为布尔表达式,布尔表达式可以用于确定策略是生效(即,如果表达式的计算结果为真(TRUE))还是没有生效(即,如果表达式的计算结果为假(FALSE))。没有生效的策略可能不会被授权模块强制执行或可能被授权模块忽略(例如本文档中的其他地方描述的那些策略)。在一些实施例中,可以针对作为与动作元素中指定的一个或多个API相对应的网络(web)API请求的一部分而提供的值来评估许可中的条件。作为示例,许可可以具有以以下方式指定的条件元素:
“Condition(条件)”:{“DateLessThan(日期小于)”:{“ws:CurrentTime(当前时间)”:“2017-12-13”}}
在该示例中,使用条件运算符“DateLessThan(日期小于)”将请求的条件“ws:CurrentTime(当前时间)”值与文字值“2017-12-13”进行比较,该条件运算符“DateLessThan(日期小于)”可用于评估条件是否被满足。在该示例中,在当前时间(例如,由服务提供商接收请求的时间)小于所提供的日期2017年12月13日时,条件可以为真。应注意,键值(在该示例中,当前时间)不仅可以与文字值进行比较,而且还可以与策略变量进行比较。可以存在各种其他类型的条件运算符,其可用于比较字符串条件、数字条件、布尔条件、二进制条件(例如,二进制格式的测试值)、IP地址条件(例如,针对特定IP地址或IP地址范围的测试值)等等。此外,条件可以包括量词。例如,字符串条件可以包括诸如比较两个字符串是否相等的“StringEquals(字符串相等)”之类的运算符,并且类似的运算符可以包括量词,以便当键值存在于评估的上下文中时,可以使用“StringEqualsIfExists(如果存在则字符串相等)”来比较两个字符串。量词可以与通配符相结合地使用,其中与通配符表达式匹配的多个资源可以支持不同的上下文关键字。在一些实施例中,例如条件包括量词的那些实施例,可以利用一阶逻辑而不是命题逻辑。
效果可以指代许可是用于准予还是拒绝对在资源元素中的许可中指定的计算资源的访问。效果可以是准予对资源的访问的允许(ALLOW)效果和拒绝对资源的访问的拒绝(DENY)效果。在一些实施例中,默认地拒绝对计算资源服务提供商的计算资源的访问,并且要求肯定地包括允许(ALLOW)效果的许可。作为示例,许可可以具有以以下方式指定的效果元素:
“Effect(效果)”:“ALLOW(允许)”
相应地,可以以以下方式指定如下许可声明:当特定条件为真(例如,在2017年12月13日之前做出API请求)时,授予特定主体(例如“rn:ws:iam::ducksfan8”)访问以调用存储服务API(例如“storage(存储):GetObject(获得对象)”)并且获得特定图像(例如,“rn:ws:storage(存储):::bucket(桶)/tastyfood.png”):
应当注意,上述示例仅描述了可以表达许可的许多方式之一。当然,在其他实施例中,可以以各种方式来应用对以上结合图3描述的原理的变型。
在一些实施例中,可以以逆(例如,否定)术语来描述元素。逆元素可以应用于除元素中指定的那些匹配以外的所有匹配项。例如,如果将许可声明描述为“NotPrincipal(非主体):clientusername(客户端用户名称)”,则该许可声明适用于除许可声明中列出的特定主体或多个主体之外的所有主体—在该情况下,许可声明将适用于“clientusername(客户端用户名称)”以外的所有主体。逆元素可以与以下各项相结合地使用:主体元素(例如,“NotPrincipal(非主体)”元素将应用于除列出的那些主体以外的所有主体),动作元素(例如“NotAction(非动作)”元素将应用于除列出的那些动作以外的所有动作),资源元素(例如,“NotResource(非资源)”元素将应用于除列出的那些资源以外的所有资源),等等。
许可声明可以用于生成可以由安全评估系统评估的命题逻辑表达式。命题逻辑表达式可以包括代表许可声明的逻辑表达式集合。命题逻辑表达式可以被评估以确定公式是否是可满足的。例如,命题逻辑可用于确定以下是否是可满足的:在与包括第一许可集合的第一安全策略相对应的第一命题逻辑表达式下允许资源,以及在与包括第二许可集合的第二安全策略相对应的第二命题逻辑表达式下不允许资源(明确地拒绝和/或不明确地授予允许(ALLOW)效果)。在一些实施例中,许可声明可用于生成命题逻辑表达式。主体元素可以映射到主体命题逻辑表达式,该主体命题逻辑表达式可以包括命题逻辑中的声明以及一个或多个断言,所述一个或多个断言用作对公式是否是可满足的约束。同样,资源元素可以映射到资源命题逻辑表达式,动作元素可以映射到动作命题逻辑表达式,条件元素可以映射到条件命题逻辑表达式,以及效果元素可以映射到效果命题逻辑表达式。
图4A示出了示例方法400,图2A至图2D的系统例如可以执行示例方法400以如上所述地针对预定安全检查集合来验证所请求的虚拟资源及其配置。在步骤402,系统可以接收启动和/或访问虚拟计算资源的请求。例如,系统可以例如经由管理员API从与虚拟资源相关联的用户接收启动命令,或者系统可以经由最终用户API从连接到系统的最终用户接收请求,或者在系统中发生的另一事件可以触发请求。该请求可以包括允许系统在步骤404识别包含对于所请求的资源的定义的模板的信息。例如,该请求可以包括堆栈标识符,系统可以使用该堆栈标识符来访问模板数据库并且获得与该堆栈标识符相关联的模板。
在步骤406,系统可以从模板中选择第一计算资源定义并且确定相关联的资源类型,该相关联的资源类型可以是资源定义的字段之一。在步骤408,系统可以至少部分地基于在计算资源定义中识别的属性来确定和/或创建新的虚拟资源实例的配置。另外,系统可以获得和/或创建要附加到虚拟资源实例的安全策略。例如,系统可以使用计算资源定义的资源名称来识别引用该资源名称的安全策略。在另一示例中,系统可以使用资源类型来识别安全策略。在又一示例中,安全策略或对安全策略的引用可以被包括在计算资源定义中。
在步骤410,系统可执行安全评估,该安全评估识别违反预定安全要求的虚拟资源实例的所提议的配置和安全策略的任何参数或其他方面。如果满足所有安全要求(例如,通过了安全检查),则系统可以通过进行到步骤420来继续部署处理。如果没有满足所有安全要求,则在步骤440,系统可以开始失败处理,在失败处理中请求的虚拟资源被拒绝部署。
在一些实施例中,为了执行安全评估(步骤410),系统可以评估从模板和/或请求导出的配置参数(如在步骤408确定的)与上述安全模型的各方面的一个或多个比较。可以测试的参数的非限制性示例包括:具有由模板中的计算资源定义设定的默认值的属性;在模板中定义的属性,所述属性具有根据以下各项中的数据确定的变量值:请求,一个或多个用户帐户,历史使用数据存储库,当前在相关联的虚拟计算环境中执行的其他虚拟资源实例,系统外部的数据源和/或其他数据存储库;发出请求的最终用户的用户帐户的参数;以及安全策略的参数。附加地或替代地,系统可以通过对各种存储的数据和/或通过执行虚拟资源实例生成的遥测数据进行静态或动态分析来评估所收集的数据。系统可以包括分析该数据的一个或多个服务,例如以下关于图7描述的服务。可以通过模板和/或请求中包括的安全检查来指定与所收集的配置参数和其他数据进行比较的参考值;这些参考值可以存储在上述安全模型和/或模型安全策略中。在整个公开中描述了安全检查、通过检查评估的数据以及对数据进行评估的方法的各种示例。
在步骤420,在确定所提议的配置和安全策略有效之后,系统可以提供物理和/或虚拟计算资源并且在其中创建虚拟资源实例。例如,为了提供虚拟机实例,系统可以识别具有足够的可用处理、存储器和数据存储资源的一个或多个硬件计算设备(例如,图2C的服务器202)。系统可以通过创建逻辑分区并且将虚拟机映像或操作系统、文件系统、设备驱动和软件应用安装在适当的分区中来分配这些物理资源。在步骤422,系统可以使用在步骤408确定/创建的所提议的配置来配置所提供的实例。该步骤可以包括将安全策略附加到虚拟资源实例,使得对虚拟资源实例的访问由安全策略许可声明来控制。在步骤424,系统可以确定是否必须从模板/请求创建任何更多虚拟资源实例。如果是,则系统返回到步骤406;如果否,则系统可以将所有新提供的实例部署到与客户端用户相关联的执行环境中(步骤428),然后等待下一个请求(步骤430)。
图4B示出了在当前描述的系统中处理安全检查失败的示例方法440。在步骤442,系统可以获得描述失败的安全检查的信息。例如,在安全检查用于确保数据存储实例不是世界可写入的、以及系统将所提议的安全策略与模型数据存储安全策略进行比较并且确定所提议的安全策略将使数据存储实例成为世界可写入的(从而使检查失败并且开始方法440)的情况下,系统可以接收(例如,生成)描述这样的安全检查失败的信息,包括所提议的安全策略的识别和问题的描述。在步骤444,系统可以释放已经分配并且与请求相关联的任何物理和/或虚拟计算资源。例如,在存在多个在请求中识别的虚拟资源实例、并且一个或多个虚拟资源实例已经通过了安全检查的情况下,一些资源可能与这样的虚拟资源实例或其相关联的安全策略相关联。在另一示例中(根据下面描述的示例系统),安全检查失败或与安全检查失败的安全策略相关联的虚拟资源实例可能已经被提供到为解析足以执行检查的策略或配置所需要的程度;一旦执行检查并且失败,则相关联的实例将不会部署。系统可以识别与请求相关联的任何提供和/或部署的实例,终止这样的实例,以及移除或销毁与该请求的任何数据链接,从而将资源返回到可用资源池。
在步骤446,系统可以在使用情况数据存储库中存储与资源部署的拒绝有关的信息(例如在步骤442获得的信息),以便聚集有关失败的启动的信息。在步骤448,系统可以创建包含所获得的与配置和/或安全策略的失败有关的任何信息的通知以通过安全检查,并且在步骤450,系统可以例如通过以下方式将通知传递给客户端用户:将通知存储在使用日志中,或者向客户端用户设备发送电子邮件、推送通知或其他包含该通知的警报。随后,客户端用户可以访问系统(例如,经由管理员用户接口),并且纠正通知中报告的错误。
图5A至图5B示出了可以在其中实现本系统和方法的另一示例分布式计算环境500。安全评估系统506可以如以上关于图2A至图2D的安全评估系统206所描述的那样操作。资源分配系统502和网络可访问服务系统510可以基本上如以上关于图2A至图2D所描述的那样协作,并且可以进一步被配置为:当相应的计算资源定义562、564和/或安全策略定义566、568包括由安全检查所需要的未解析的引用和/或变量但是无法被测试直到引用/变量被解析为止时,为安全检查准备所请求的虚拟资源实例—通常不会发生直到将相应的虚拟资源实例提供和/或部署到网络可访问服务系统510的执行环境540中为止。
为了执行部署前安全检查,资源分配系统502可以以允许解析相关联的资源定义中的未解析的引用和/或变量的方式创建所请求的实例,从而可以执行针对实例配置和/或安全策略的安全检查。在一个实施例中,以这种方式创建所请求的实例可以包括为虚拟资源实例分配物理资源,为虚拟资源实例提供伴随的所解析的配置。图5A至图5B示出了该实施例的示例。即,资源分配系统502确定接收到对由计算资源定义562、564(例如,存储在如上所述的一个或多个模板中)表示的虚拟资源的请求。资源分配系统502在执行环境540内从第一计算资源定义562创建虚拟机实例544并且从第二计算资源定义564创建数据存储库实例548。将实例544、548放置在执行环境540中允许资源分配系统502在网络可访问服务系统510的所部署的虚拟资源实例(例如,虚拟机实例542和数据存储库实例546)、虚拟网络连接以及其他组件(例如路由器、负载均衡器、逻辑卷等)的上下文中解析相关联的定义562、564的任何未解析的引用和/或变量。然而,资源分配系统502可以不在实例544、548与任何所部署的组件之间创建任何可用的连接—即,实例544、548可以被提供到执行环境540中,但是它们没有被部署或以其他方式可被其他资源发现。
资源分配系统502可以基于对应的计算资源定义562、564的属性来创建对于相应实例544、548的配置544A、548A;配置544A、548A可以进一步基于执行环境540的上下文参数。在一些实施例中,实例544可以具有完整的配置544A和分配给它的所有其他资源,就好像实例544将要被部署到执行环境540中一样。在其他实施例中,实例544可以仅被分配足够的资源,并且配置544A可以仅包含基本参数,以使得资源分配系统502能够解析未解析的引用和/或变量。例如,计算资源定义562可以是虚拟机类型,并且可以包括一个或多个引用,所述一个或多个引用使得对应的虚拟机实例能够访问从计算资源定义564生成的任何数据存储库实例;图5A的正在执行的数据存储库实例546是一个这样的数据存储库实例。资源分配系统502可以生成具有虚拟机资源类型和配置544A的虚拟机实例544,该配置544A包括所解析的引用,所解析的引用识别数据存储库实例546和也从相同请求提供的新的数据存储库实例548。
如下所述,资源分配系统502可以将所解析的引用和其他配置参数发送给安全评估系统506。另外,资源分配系统502可以使用所提供的实例544、548来解析与计算资源定义562、564相对应的安全策略定义566、568的任何可解析参数,并且可以将所解析的策略发送给安全评估系统506以用于安全检查。应当注意,图5A的虚线指示如下示例实施例,其中资源分配系统502已经解析了对于所请求的虚拟机实例544与数据存储库实例546、548之间的连接的定义引用,但是尚未创建所请求的虚拟机实例544与数据存储库实例546、548之间的连接,以及资源分配系统502已经解析了对于所请求的实例544、548的安全策略544B,548B。
如图5B中所示,如果资源分配系统502从安全评估系统506接收到配置544A、548A和安全策略544B、548B全部通过了安全检查的指示,则资源分配系统502可以创建安全策略544B、548B并且将安全策略544B、548B附加到它们各自的资源(因此,安全策略544B、548B以实线示出)。然后,资源分配系统502可以将虚拟资源实例544、548部署到具有相应配置544A、548A和附加的安全策略544B、548B的执行环境540中。部署虚拟资源实例544、548可以至少包括在虚拟机实例544与数据存储库实例546、548之间创建虚拟网络连接,并且可以进一步包括例如直接或通过前端520将虚拟机实例544连接到外部通信网络(例如,因特网)。
参考图6,示例方法600例如可以由系统在图5A至图5B的计算环境500中执行,以处理对虚拟计算资源的请求。在步骤602,系统可以获得为提供所请求的虚拟资源所需要的计算资源和安全策略定义。例如,如上所述,系统可以从请求中识别的模板获得定义。在步骤604,系统可以确定为执行期望的安全检查集合(例如,如模板中所识别的)需要定义中的哪些属性,包括不具有默认(即,所解析的)值的任何属性。例如,虚拟机实例定义可以包括代码行,该代码行指示该实例连接到具有未解析的标识符的数据存储库实例;为了执行期望的检查,系统可以确定必须解析标识符—也就是说,必须识别“连接的”数据存储库实例。
在步骤606,系统可以创建与请求相关联的第一虚拟资源实例。在创建虚拟机实例的示例中,系统可以分配诸如处理器、存储器、逻辑存储卷和虚拟网络接口之类的基本资源,但是可以不提供为测试虚拟机接口的网络连接或其他配置所不需要的任何操作系统、软件等。在另一示例中,系统可以分配在虚拟机实例的资源定义中识别的所有物理资源和相关联的软件。如上所述,系统可以将虚拟资源实例提供到执行环境中。在步骤608,系统可以获得为解析虚拟资源实例中的在计算资源定义或相关联的安全策略定义中未解析的任何属性所需要的所有信息,并且在步骤610,系统可以解析未解析的属性(例如,解析为静态值)。例如,从前一段落来看,虚拟机实例连接到的数据存储库实例的标识符是计算资源定义中的变量,系统可以确定在执行资源请求时(例如,经由命令的自变量(argument))或在请求之前(例如,作为存储在安全模型的检查记录中的参数值)由客户端提供该标识符。为了解析属性,系统检索标识符。
在步骤612,系统可以使用默认属性和所解析的属性(来自步骤610)来配置虚拟资源实例。例如,系统可以设定配置参数,以使得实例能够通过资源定义中规定的网络接口进行通信。这使得能够执行例如针对安全策略的安全检查,以确定该策略是否确保虚拟机实例的网络接口的未使用端口没有打开。在步骤614,系统可以对所配置的虚拟资源实例及其解析的安全策略执行安全检查,以确定安全检查是通过(去往步骤616)还是失败,并且系统开始启动失败处理(如上所述的步骤640)。
如果虚拟资源实例通过了指定的安全检查,则在步骤616,系统可以创建相应的安全策略,并且将该策略附加到虚拟资源实例。例如,系统可以基于通过安全检查的所解析的安全策略,将安全策略定义转换为安全策略;系统可以将安全策略添加到虚拟资源实例的元数据中。相反,如果配置或安全策略没有通过安全检查,则系统可以拒绝创建安全策略。如果有更多实例要从请求创建,则系统可以返回到步骤604并且对下一个实例重复方法600。在步骤630,系统可以将新实例部署到执行环境中。
图7描绘了计算系统(被称为服务器700)的总体架构,该计算系统处理在如上所述的计算环境中向用户分配虚拟计算资源的请求。服务器700的总体架构包括可以用于实现本公开的各方面的计算机硬件和软件模块的布置。如以下更详细地讨论的,硬件模块可以利用物理电子设备来实现。服务器700可以包括比图7中示出的元件更多(或更少)的元件。然而,不需要示出所有这些通常常规的元件以便提供能够实现的公开。另外,图7中所示的总体架构可用于实现前述附图中所示的其他组件中的一个或多个组件,包括资源分配系统、安全评估系统和网络可访问服务系统,它们中的每个可以在相同架构中实现或在与其他架构分离的架构中实现。
如图所示,服务器700包括处理单元790、网络接口792、计算机可读介质驱动器794、输入/输出设备接口796,所有这些可以经由通信总线彼此通信。网络接口792可以提供与一个或多个网络或计算系统的连接。因此,处理单元790可以经由通信网络从其他计算系统或服务接收信息和指令。处理单元790还可以与存储器780进行通信,并且还可以经由输入/输出设备接口796为可选的显示器(未示出)提供输出信息。输入/输出设备接口796也可以从可选的输入设备(未显示)接受输入。
存储器780可以包含计算机程序指令(在一些实施例中被分组为模块),处理单元790执行计算机程序指令以便实现本公开的一个或多个方面。存储器780通常包括RAM、ROM和/或其他持久性、辅助性或非暂时性计算机可读介质。存储器780可以包括用于实现本公开的各方面的计算机程序指令和其他信息。例如,在一个实施例中,如上所述,存储器780实现安全评估系统750、资源分配系统770和转换服务772。服务器700可以包括计算环境API760,计算环境API 760可以由处理单元790执行以使得安全评估系统750能够访问上述网络可访问服务系统并且与述网络可访问服务系统通信。另外,例如,存储器780可以包括一个或多个数据存储库(未示出)和/或与一个或多个数据存储库(未示出)通信,以访问使用数据、用户数据、安全模型、安全策略等。
安全评估系统750可以包括以硬件、软件或其组合实现的若干服务,并且与各种其他服务以及与物理资源(例如,硬驱动器)或虚拟资源(例如,逻辑驱动器)进行通信,以根据被执行的安全检查或其他安全评估来获得和分析数据。在一些实施例中,不同的服务752-758可以分析为执行安全检查所需要的每种不同类型的数据,尽管在其他实施例中,如果没有收集或分析相应类型的数据,则服务可以被整合或未被使用。客户端可以授权服务来访问与客户端的用户帐户相关联的虚拟资源,以便服务可以获得私有数据和/或远程数据。
在各种示例中,策略分析器服务752可以分析安全策略以确定策略的相对宽松性—换句话说,策略分析器服务752可用于确定两个安全策略是否等效,第一安全策略是否比第二安全策略更宽松,等等。在该上下文中,宽松性用于描述对资源的访问。例如,如果可以利用第一策略来访问第一计算资源(例如,资源“A”)和第二资源(例如,资源“B”),并且第二策略仅准予对计算资源“B”的访问,则可以将第一策略描述为比第二策略更宽松,因为存在第一策略准予访问而第二策略没有准予访问的计算资源,并且不存在第二策略准予访问而第一策略没有准予访问的资源。如果两个策略可用于访问相同的资源并且拒绝(隐式地或显式地)对相同的资源的访问,则这两个策略可以是等效的。一般而言,如果两个策略不等效,则可以说它们缺乏等效性。在一些情况下,如果第一策略准予对第一计算资源“A”和第二计算资源“B”的访问,并且第二策略准予对第二计算资源“B”和第三计算资源“C”的访问,则可以说是这些策略是不可比较的。还应该注意的是,在这些讨论的上下文中,可以在计算资源服务提供商的上下文中利用安全策略来准予或拒绝对资源的访问,其中,访问资源的请求可以由授权模块或授权服务通过利用可应用于该请求的安全策略来评估。可应用的安全策略可以是与请求者相关联的安全策略、与请求者呈现的令牌相关联的安全策略等等。
在一个实施例中,策略分析器服务752可以接受两个或多个安全策略作为输入,并且确定它们是否等效,一个策略是否比另一策略更宽松,这些策略是否是不可比较的等等。在另一实施例中,策略分析器服务752可以接受单个安全策略,并且将该安全策略与一个或多个存储的安全策略(例如,最佳实践策略(如上所述)或相关联的用户的其他安全策略)进行比较。如上所述,最佳实践策略的一个实施例可以是被确定为不应被允许的许可集合的安全策略集合。例如,第一最佳实践策略可以是特定数据容器不应是世界可写入的(即,任何主体,甚至访客用户或匿名用户都可以写入该容器)。策略分析器服务752可以通过确定所接收的策略没有比每个最佳实践策略更宽松来验证最佳实践策略被遵循。最佳实践策略的示例可以包括世界可写入、世界可读取、世界可访问的资源等。在一些实施例中,可以基于所请求的计算资源的类型、对资源的请求中的信息以及其他上下文信息来确定最佳实践策略的集合。
策略分析器服务752可以接收安全策略并且从该策略获得一个或多个许可声明。许可声明可以各自与准予或拒绝对计算资源的访问相关联。策略分析器服务752可以将许可声明转换为使用命题逻辑描述的一个或多个约束。可以按照各种格式并且根据各种标准(例如SMT-LIB标准格式、CVC语言、以及离散数学和理论计算机科学中心(DIMACS)格式)来描述约束。命题逻辑表达式可以表示为了使相应的许可声明生效而必须满足的约束集合。
策略分析器服务752可以比较第一命题逻辑表达式和第二命题逻辑表达式,以确定一个命题逻辑是否比另一个命题逻辑更宽松,和/或以其他方式分析两个或多个命题逻辑表达式的宽松度。策略分析器服务752可以生成附加的命题逻辑约束,作为确定第一命题逻辑表达式是否比第二命题逻辑表达式更宽松的一部分。除了第一命题逻辑表达式和第二命题逻辑表达式的约束之外,还可以生成和评估约束。可以至少部分地基于客户端提供的设定来生成约束。例如,策略分析器服务752可以生成仅在第一策略准予对资源的访问并且第二策略拒绝对资源的访问或关于资源是中立的情况下被满足的约束。在一些实施例中,可以使用命令来确定约束集合是否是可满足的。如果存在可以使所有断言的公式为真的解释,则公式可以是可满足的。换句话说,如果在一些条件下满足每个约束条件,则模型是可满足的。在一个示例中,策略分析器服务752可以至少部分地使用诸如Z3之类的SMT求解器来解释公式。
安全评估系统750的网络分析器服务754可以获得和分析用于描述与所请求的资源相关联、影响或潜在地影响所请求的资源的网络通信的数据,以便执行一个或多个安全检查的至少一部分。在该上下文中,网络分析器服务754可以检测与策略分析器服务752通过分析可应用的安全策略而检测的相同漏洞中的一些、以及附加漏洞。例如,虽然策略分析器服务752可以确定安全策略是否将TCP通信端口23保持为开放,但是网络分析器服务754可以尝试经由端口23将分组或其他消息发送到相关联的实例或相关联的虚拟网络接口,并且记录实例是否接收到消息。
通常,网络分析器服务754可以被配置为对客户端的虚拟计算环境中的虚拟网络和与外部网络的接口执行任何合适的分析。例如,网络分析器服务754可以测试由安全最佳实践识别的任何CVE或其他漏洞。在另一示例中,网络分析器服务754可以通过执行或模拟任何常见的、可再现的主动或被动攻击并且将结果与代表通过或失败条件的所存储的阈值进行比较来测试所请求资源的安全。这样的攻击的非限制性示例包括:空闲扫描或其他端口扫描;窃听;溢出攻击,例如拒绝服务、缓冲区溢出或堆溢出;欺骗攻击,例如中间人和DNS欺骗;SQL注入等等。在其他实施例中,网络分析器服务754可以模拟其他已知类型的恶意活动。在另一示例中,网络分析器服务754可以例如通过访问数据并且确定数据是否可读取(例如,以已知的敏感格式(例如信用卡号格式或社会保险号格式)包含英语单词或数字)来测试实例的数据是否在没有加密的情况下被存储或发送。在另一示例中,网络分析器服务754可以执行网络流量日志、子网或虚拟私有网络配置等的语义分析。在另一示例中,网络分析器服务754可以获得包括即时点联网状态信息的网络“快照”,该即时点联网状态信息可以包括但不限于:关于与最终用户设备的活动连接的信息,诸如设备IP地址、MAC地址、用户代理信息,传输的数据量等;以及有关正在执行的虚拟资源实例的网络连接的信息,例如实例IP地址、子网、连接的最终用户的编号和/或标识、流量等。在一个实施例中,可以获得正在执行的虚拟资源实例的这样的快照—即,该实例已经被提供和部署并且正在虚拟计算环境中执行。附加地或替选地,快照可以在实例的提供或部署之前或期间生成。例如,网络分析器服务754可以从用于启动实例的模板(如上所述)生成快照;创建快照所需要的所有信息都可以包含在模板的资源定义中。如上所述,网络分析器服务754可以分析来自快照的信息,以确定其是否反映了对期望的安全检查的遵循。
安全评估系统750的数据分析器服务756可以获得和分析与虚拟计算系统中的资源的请求和启动相关联的所存储的数据。在一些实施例中,可以从一个或多个存储的文件(例如,虚拟机映像或文件存储库(例如,ZIP或其他压缩文件档案))启动虚拟资源实例。存储的文件可以包括或定义相应的虚拟资源实例的配置,并且在一些情况下可以由如上所述的模板来指定。数据分析器服务756可以定位和检索所存储的文件,并且对它们执行期望的安全检查。在一些实施例中,可以通过执行一个或多个软件程序来启动虚拟资源实例。附加地或替选地,虚拟资源实例本身可以执行一个或多个软件程序,例如网络(web)应用。数据分析器服务756可以根据安全检查来分析这样的软件程序的源代码和/或目标代码。例如,数据分析器服务756可以使用一个或多个静态分析方法来识别由源代码或目标代码创建的安全漏洞。在另一示例中,数据分析器服务756可以使一个或多个硬件计算设备执行相应的软件程序,并且可以对正在执行的程序进行动态分析。
在其他实施例中,作为安全检查的一部分,数据分析器服务756可以确定所请求的资源是否与诸如个人识别信息、金融交易信息等敏感数据交互;数据分析器服务756可以评估要提供的虚拟资源实例是否被正确地配置为保护这样的信息。例如,可以使用机器学习、自然语言处理、模式匹配、逻辑表达式处理和其他数据分类技术来解析事件日志并且识别个人信息,例如标识信息、健康信息、财务信息、安全密钥等。数据分析器服务756然后可以确定所识别的数据是否被适当地保护。例如,数据分析器服务756可以确定信息是否在静止和传输中被加密,以及信息是否被存储在具有受限制的授权访问的安全数据存储库中。数据分析器服务756可以将所评估的安全措施和与安全检查和/或最佳实践相关联的阈值进行比较,并且可以将通过/失败结果报告给安全评估系统750或另一系统组件。
安全评估系统750的监视服务758可以对已经被部署在客户端的虚拟计算环境中的虚拟资源实例执行实时、按需或计划的数据收集方法。在一些实施例中,如上所述,监视服务758可以通过收集与实例的配置、安全策略、网络活动和所存储的数据相关联的数据来响应触发事件。例如,客户端用户可以改变正在执行的实例或用于启动虚拟资源实例的模板的配置参数;当改变被存储时,系统可以生成由监视服务758接收的通知,并且监视服务可以识别任何受影响的虚拟资源实例,并且收集为执行期望的安全检查所需要的配置、安全策略和其他数据。然后,监视服务758可以根据需要将收集到的信息发送到安全评估系统750的其他服务,或者可以存储该信息并且将消息发送到相应的服务以指示收集到的信息可用。替选地,监视服务758可以接收触发通知,以及继而使安全评估系统750的其他服务收集数据并且执行安全检查。附加到或替选于被事件驱动,监视服务758可以被调度或者可以基本上连续地运行以确保成功地提供和部署的虚拟资源实例保持有效的配置和安全策略。
安全评估系统750的任何服务可以根据需要访问计算资源服务提供商的系统内部或外部的一个或多个集中威胁数据存储库或其他知识库,以获取可支持期望的安全检查的信息。在一个示例中,这样的威胁数据存储库可以包含用于识别已知威胁的信息,并且还可以包括用于识别威胁的所推荐的缓解措施的相关联的信息;安全评估系统750可以使用该信息来向客户端提供在安全检查期间识别的威胁的所推荐的缓解措施。在另一示例中,这样的威胁数据存储库可以包含用于识别过去或正在进行的操作问题、与安全相关的用户反馈和/或根本原因分析的信息,该信息与客户端的虚拟计算环境和/或计算资源服务提供商的系统相关联。安全评估系统750或单独的事件管理平台可以管理威胁数据存储库中的信息,使得不同的安全分析服务(例如,跨计算资源服务提供商的系统的通信地隔离的区域)可以访问相同的威胁信息。
在一些实施例中,客户端可以选择性地决定是否在计算资源服务提供商的系统中使用对客户端的虚拟资源进行部署前安全验证的本系统和方法。因此,可能存在使用中的模板,这些模板没有被优化为采用本系统和方法。一旦客户端选择激活这些保护,就可以优化现有模板和新模板以使用它们。图8提供了示例方法800,示例方法800可以由如上所述的转换服务来执行,以接收现有模板850并且从模板850产生优化模板870,该优化模板870在部署之前将期望的安全检查集合应用于所请求的资源。具体地,示例转换方法800演示了对模板850进行优化,以便可以将部署前安全检查更有效地应用于与所请求的资源相关联的安全策略,但是也可以通过对模板850进行优化来改进如上所述的其他类型的检查。客户端用户可以使用API来访问转换服务,并且提供要转换的模板以及对转换进行控制的执行参数。
示例模板850识别若干资源定义,系统使用所述若干资源定义来提供、配置和部署虚拟资源实例,所述若干资源定义包括密钥管理定义852、计算资源定义854、安全策略定义856和验证器资源定义858。从密钥管理定义852和安全策略定义856创建的实例是安全资源—它们附加到计算资源并且管理对计算资源的访问,但是它们本身不是计算资源—它们不需要在虚拟计算环境中分配和提供物理资源和虚拟资源。而是,在一些实施例中,创建安全策略实例包括在存储器中创建临时数据结构,该数据结构包括所有默认值和所有解析的参数/值对;然后,附加安全策略包括例如通过将数据结构存储在与虚拟机实例相关联的元数据中来将临时数据结构添加到相关联的虚拟资源实例的记录或数据对象。如上所述,密钥管理定义852可以控制由一个或多个最终用户帐户使用加密密钥来访问一个或多个虚拟资源实例。除默认密钥管理属性(例如用于与所生成的密钥相匹配的模式)之外,定义852还可以包括主要标识符852A和访问策略852B。安全策略定义856可以控制对所创建的安全策略实例所附加到的虚拟资源实例的访问和操作。例如,在将解析的安全策略添加到实例元数据之后,前端、实例或另一访问管理服务从元数据中读取安全策略,以便确定访问请求是否被授权。定义856可以包括资源标识符,该资源标识符是计算资源定义854的名称854A,该计算资源定义854产生安全策略所附加到的虚拟资源实例。定义856还包括安全策略856B或对安全策略856B的引用。
计算资源定义854用于启动虚拟计算资源实例,例如虚拟机实例和数据存储库实例。计算资源定义854可以至少包括唯一名称854A、资源类型以及用于确定对应实例的配置参数的一个或多个属性。验证器资源定义858可以根据验证器实例的期望用途来产生验证器实例,所述验证器实例是安全资源、计算资源或两者的组合。验证器类型可以识别要执行哪些类型的安全检查以及要对哪些资源执行安全检查。例如,从定义858创建的验证器实例可以具有“策略检查器”类型,指示相关联的安全检查858A仅应用于安全策略,而不应用于如上所述的可以被检查的其他数据。在一个示例中,验证器资源定义858包括将要在虚拟资源实例启动之前对虚拟资源实例执行的安全检查858A。因此,示例验证器资源定义858可能看起来像这样:
但是,值得注意的是,模板850可能没有识别哪些安全检查858A应用于哪些资源和哪些安全策略,并且该信息必须在处理对资源的请求时确定。模板转换的目标是导出该信息并且将该信息存储在模板本身中,因此仅在接收到请求时才需要检索该信息。在步骤802,系统可以确定模板850中的验证器资源定义858的类型。例如,系统可以确定定义858的“类型”参数的值。在步骤804,系统可以识别与所指定的安全检查858A相关联的资源类型(例如,虚拟机、消息队列服务、数据存储库)。在本示例中,检查将资源类型包括在检查的名称中,因此系统简单地从安全检查名称获得资源类型。
在该示例中,验证器是安全策略检查器,因此在步骤806,系统可以识别由所指定的安全检查暗示的所有安全策略。例如,系统可以使用第一资源类型(在步骤804中识别的)来识别创建第一资源类型的虚拟资源实例的所有计算资源定义854(例如,通过获得计算资源定义854中的“type(类型)”参数的值)。然后,对于每个识别的计算资源定义854,系统可以识别与计算资源定义854相关联的安全策略定义856(例如,通过获得安全策略定义856中的资源标识符参数的值)。最终,系统可以从定义856获得安全策略856B。可以对步骤804中识别的每个资源类型重复该处理。
在步骤808,系统可以修改验证器资源定义858以产生转换后的验证器资源定义878,所述转换后的验证器资源定义878包括在步骤806中识别的每个安全策略,并且在步骤810,系统可以修改作为安全检查的对象的每个资源定义,以创建包括依赖参数的新资源定义872、874、876,该依赖参数创建了如下条件:响应于对从转换后的模板870创建的资源的请求,将不会创建相关联的虚拟资源实例,除非首先从验证器资源定义878成功地创建了实例。在另一实施例中,模板870中的所有资源定义都被修改为包括依赖。因此,修改后的安全策略定义876、验证器资源定义878和计算资源定义874的示例为:
因此,直接在验证器资源定义878中存储或引用将要检查的安全策略,以便当系统从转换后的模板870启动实例时,系统可以快速地获得、创建相关的安全策略并且将相关的安全策略附加到实例,然后对它们执行安全检查。
根据以上描述,在一个实施例中,本公开提供一种系统,所述系统包括一个或多个处理器以及存储计算机可执行指令的存储器,所述计算机可执行指令在由所述一个或多个处理器执行时使所述系统:接收或获得访问计算资源的请求;确定所述请求识别包括第一资源类型并且与第一配置参数集合相关联的第一虚拟计算资源;接收或获得与第一资源类型相关联的第一安全检查;接收或获得第二配置参数集合,第二配置参数集合被预定为指示使用第二配置参数集合创建的第一虚拟资源实例是否通过第一安全检查,第一虚拟资源实例包括第一资源类型;以及,在将计算资源部署为第一虚拟资源实例的一部分之前,根据访问计算资源的请求,将第一配置参数集合与第二配置参数集合进行比较,以确定第一配置参数集合通过第一安全检查。
第一配置参数集合可以包括以第一安全策略编码的第一安全许可集合,第二配置参数集合可以包括以第二安全策略编码的第二安全许可集合,以及为了将第一配置参数集合与第二配置参数集合进行比较,执行所述指令使所述系统:至少部分地基于第一安全许可集合来确定第一命题逻辑表达式;至少部分地基于第二安全许可集合来确定第二命题逻辑表达式;以及将第一命题逻辑表达式与第二命题逻辑表达式进行比较,以确定第一安全策略通过第一安全检查。执行所述指令还可以使所述系统:确定第一请求识别包括第二资源类型并且与第三配置参数集合相关联的第二虚拟计算资源;接收或获得与第二资源类型相关联的第二安全检查;接收或获得第四配置参数集合,第四配置参数集合被预定为指示使用第四配置参数集合创建的虚拟资源实例是否通过第二安全检查,第二虚拟资源实例具有第二资源类型;将第三配置参数集合与第四配置参数集合进行比较,以确定第三配置参数集合没有通过第二安全检查;以及使根据第一请求的第一虚拟资源实例和第二虚拟资源实例的部署被拒绝。执行所述指令还可以使所述系统在确定第一配置参数集合通过第一安全检查之后:使用第一配置参数集合来配置第一虚拟资源实例;将第一虚拟资源实例部署到虚拟计算环境中;在部署之后,接收或获得与第一虚拟资源实例相关联的执行数据;以及将执行数据与第二配置参数集合进行比较,以确定第一虚拟资源实例的配置通过第一安全检查。
在另一实施例中,本公开提供一种系统,所述系统包括一个或多个处理器以及存储计算机可执行指令的存储器,所述计算机可执行指令在由所述一个或多个处理器执行时使所述系统在使虚拟计算资源实例被部署到虚拟计算环境中之前:识别第一虚拟资源定义,第一虚拟资源定义用于启动具有第一配置的虚拟计算资源实例;接收或获得包括第一配置的一个或多个安全要求的第一安全检查;以及确定第一配置是否满足所述一个或多个安全要求。执行所述指令还可以使所述系统:识别指定第一虚拟资源定义和第一安全检查的第一模板;从第一模板接收或获得第一配置参数集合和识别第一安全检查的信息;以及根据第一配置参数集合生成第一配置。第一模板可以进一步指定第一安全策略定义,第一安全策略定义定义用于控制对虚拟计算资源实例的访问的第一安全策略,以及执行所述指令还可以使所述系统:使用第一模板来接收或获得第一安全策略;以及确定第一安全策略是否满足所述一个或多个安全要求。所述一个或多个安全要求可以对应于虚拟计算资源实例的访问许可,以及执行所述指令还可以使所述系统:模拟虚拟计算环境内的网络活动;至少部分地基于第一配置,收集描述虚拟计算资源实例对网络活动的预期响应的信息;以及确定所述信息是否指示第一配置满足所述一个或多个安全要求。
所述指令在被执行时可以使所述系统:接收或获得包含第一配置的一个或多个数据文件;以及对所述一个或多个数据文件执行静态分析,以确定第一配置是否满足所述一个或多个安全要求。执行所述指令还可以使所述系统:接收或获得部署虚拟计算资源实例的请求;至少部分地基于请求来识别第一虚拟资源定义。响应于确定第一配置满足所述一个或多个安全要求,所述系统可以将虚拟计算资源实例配置为具有第一配置,并且将虚拟计算资源实例部署到虚拟计算环境中。在部署虚拟计算资源实例之后,所述系统可以接收或获得描述与虚拟计算资源实例相关联的网络活动的监视数据,并且确定监视数据是否指示虚拟计算资源实例的所述部署的配置满足所述一个或多个安全要求。为了接收或获得第一安全检查,执行所述指令可以使所述系统:从通信地连接到所述一个或多个处理器的客户端计算设备接收或获得配置虚拟计算资源实例的部署前安全分析的请求;允许客户端计算设备访问用于配置部署前安全分析的应用编程接口API;以及经由API从客户端计算设备接收或获得执行第一安全检查的指示。执行所述指令还可以使所述系统经由API将用户界面传递给客户端计算设备,所述用户界面使得使用客户端计算设备的客户端能够从安全检查集合中选择第一安全检查,每个安全检查与多个资源类型中的对应资源类型相关联。
在另一实施例中,一种系统包括:一个或多个处理器以及存储特定计算机可读程序指令的存储器,所述特定计算机可读程序指令在由所述一个或多个处理器执行时使所述系统:识别第一模板,第一模板用于启动具有第一配置的第一虚拟计算资源实例以及具有第二配置和与第一虚拟计算资源实例的操作连接的第二虚拟计算资源实例;接收或获得包括第一配置的一个或多个安全要求的第一安全检查;确定第一配置是否满足所述一个或多个安全要求;以及响应于确定第一配置不满足所述一个或多个安全要求,拒绝第一虚拟计算资源实例和第二虚拟计算资源实例两者的部署。所述系统可以执行所述指令,还使所述系统:接收或获得包括第二配置的一个或多个访问许可的第二安全检查;确定第二配置是否将所述一个或多个访问许可应用于第二虚拟计算资源实例;响应于确定第二配置没有应用所述一个或多个访问许可,拒绝第一虚拟计算资源实例和第二虚拟计算资源实例两者的部署;以及响应于确定第一配置满足所述一个或多个安全要求并且第二配置将所述一个或多个访问许可应用于第二虚拟计算资源实例,使第一虚拟计算资源实例利用第一配置被部署到虚拟计算环境中并且使第二虚拟计算资源实例利用第二配置被部署到虚拟计算环境中。
所述系统可以进一步被配置为:确定第一配置是否满足所述一个或多个安全要求,执行所述指令使所述系统接收或获得评估数据,并且将评估数据与一个或多个存储的阈值进行比较;第一模板指定包括用于为第一虚拟计算资源实例创建第一配置的配置参数的第一虚拟资源定义,并且还指定包括第一安全检查的验证器资源定义;以及执行所述指令还使所述系统:接收或获得转换第一模板以产生第二模板的请求,第二模板针对使用第二模板启动的虚拟计算资源的部署前安全分析被优化;修改验证器资源定义以产生优化的验证器资源定义,优化的验证器资源定义包括评估数据或对评估数据的引用;修改第一虚拟资源定义以产生包括依赖参数的优化的虚拟资源定义;以及创建第二模板,第二模板包括优化的验证器资源定义和优化的虚拟资源定义。
所述系统可以执行所述指令,进一步使所述系统在创建第二模板之后:接收或获得将虚拟计算资源部署到虚拟计算环境中的请求;基于部署虚拟计算资源的请求,确定第二模板将用于创建和部署虚拟计算资源;根据依赖参数和操作连接,确定第一虚拟计算资源实例和第二虚拟计算资源实例不应被提供和部署,除非验证器资源实例指示第一配置满足第一安全检查;至少部分地基于优化的验证器资源定义来创建验证器资源实例;从优化的验证器资源定义中接收或获得评估数据;使用验证器资源实例,将评估数据和与所述一个或多个安全要求相关联的所述一个或多个存储的阈值进行比较,以产生安全检查结果;响应于指示第一配置满足所述一个或多个安全要求的安全检查结果,使第一虚拟计算资源实例和第二虚拟计算资源实例被部署到虚拟计算环境中。
所述系统可以确定第一配置是否满足所述一个或多个安全要求,执行所述指令使所述系统接收或获得评估数据并且将评估数据与一个或多个存储的阈值进行比较;第一模板指定与第一虚拟资源定义相关联的安全策略定义,并且识别安全策略;以及执行所述指令还使所述系统:接收或获得安全策略作为评估数据;接收或获得转换第一模板以产生第二模板的请求,第二模板针对使用第二模板启动的虚拟计算资源的部署前安全分析被优化;修改安全策略定义以产生包括依赖参数的优化的安全策略定义;以及创建第二模板以进一步包括优化的安全策略定义。
所述系统可以进一步包括用于选择安全检查的应用编程接口API,其中执行所述指令还使所述系统:允许客户端计算设备电连接到API;经由API从客户端计算设备接收或获得从多个安全检查中选择第一安全检查;以及修改第一模板以识别第一安全检查。所述系统可以执行所述指令,进一步使所述系统:经由API从客户端计算设备接收或获得:第一虚拟资源定义,第一虚拟资源定义包括用于为第一虚拟计算资源实例创建第一配置的配置参数;以及第二虚拟资源定义,第二虚拟资源定义包括用于为第二虚拟计算资源实例创建第二配置的配置参数;修改第一模板以包括第一虚拟资源定义和第二虚拟资源定义;经由API从客户端计算设备接收或获得验证第一模板的请求;至少部分地基于第一虚拟资源定义,确定第一配置是否满足所述一个或多个安全要求;以及响应于确定第一配置不满足所述一个或多个安全要求,经由API将指示第一模板无效的通知发送给客户端计算设备。最后,所述系统可以执行所述指令,进一步使所述系统:利用第一配置创建第一虚拟计算资源实例,并且利用第二配置创建第二虚拟计算资源实例;从第一虚拟计算资源实例和第二虚拟计算资源实例收集数据,以确定第一配置不满足所述一个或多个安全要求;以及为了拒绝第一虚拟计算资源实例和第二虚拟计算资源实例两者的部署,销毁第一虚拟计算资源实例和第二虚拟计算资源实例。
各种实施例还可以在各种各样的操作环境中实现,在一些情况下,这些操作环境可以包括一个或多个用户计算机、计算设备或处理设备,其可以用于操作多个应用中的任何一个。用户或客户端设备可以包括多个计算机中的任何一个,例如运行标准操作系统的台式计算机、膝上型计算机或平板计算机,以及运行移动软件并且能够支持多个联网和消息传递协议的蜂窝、无线和手持设备。这样的系统还可以包括多个工作站,这些工作站运行各种商业上可用的操作系统和其他已知应用中的任何一个,以用于诸如开发和数据库管理之类的目的。这些设备还可以包括其他电子设备,例如虚拟终端、瘦客户端、游戏系统和其他能够经由网络进行通信的设备。这些设备还可以包括虚拟设备,例如虚拟机、管理程序和其他能够经由网络进行通信的虚拟设备。
本公开的各种实施例采用本领域技术人员将熟悉的至少一个网络来支持使用各种商业上可用的协议中的任何一种进行的通信,例如传输控制协议/因特网协议(“TCP/IP”)、用户数据报协议(“UDP”)、在开放系统互连(“OSI”)模型的各个层中运行的协议、文件传输协议(“FTP”)、通用即插即用(“UpnP”)、网络文件系统(“NFS”)、通用因特网文件系统(“CIFS”)和苹果对话(AppleTalk)。网络可以是例如局域网、广域网、虚拟私有网、因特网、内联网、外联网、公共电话交换网、红外网、无线网、卫星网及其任何组合。在一些实施例中,可以使用面向连接的协议在网络端点之间进行通信。面向连接的协议(有时被称为基于连接的协议)能够按照有序流来传输数据。面向连接的协议可以是可靠的或不可靠的。例如,TCP协议是可靠的面向连接的协议。异步传输模式(“ATM”)和帧中继是不可靠的面向连接的协议。面向连接的协议与诸如UDP之类的面向分组的协议形成对比,面向分组的协议以无保证的顺序传输分组。
在利用网络(web)服务器的实施例中,网络(web)服务器可以运行各种服务器或中间层应用中的任何一种,包括超文本传输协议(“HTTP”)服务器、FTP服务器、公共网关接口(“CGI”)服务器、数据服务器、Java服务器、Apache服务器和业务应用服务器。服务器还可能能够响应于来自用户设备的请求而执行程序或脚本,例如通过执行可以被实现为以任何编程语言编写的一个或多个脚本或程序的一个或多个网络(web)应用,例如C、C#或C++或任何脚本语言,例如Ruby、PHP、Perl、Python或TCL及其组合。服务器还可以包括数据库服务器,包括但不限于可从/> 和/>商业上获得的那些数据库服务器,以及诸如MySQL、Postgres、SQLite、MongoDB之类的开源服务器,以及能够存储、检索和访问结构化或非结构化数据的任何其他服务器。数据库服务器可以包括基于表的服务器、基于文档的服务器、非结构化服务器、关系服务器、非关系服务器、或这些和/或其他数据库服务器的组合。
环境可以包括如上所述的各种数据存储库以及其他存储器和存储介质。这些可以驻留在各种位置,例如位于一个或多个计算机本地(和/或驻留在其中)或远离网络中的任何或全部计算机的存储介质上。在特定实施例集合中,信息可以驻留在本领域技术人员熟悉的存储区域网络(“SAN”)中。类似地,可以适当地在本地和/或远程地存储为执行属于计算机、服务器或其他网络设备的功能所需要的任何文件。在系统包括计算机化设备的情况下,每个这样的设备可以包括可以经由总线电耦合的硬件元件,这些元件包括例如至少一个中央处理单元(“CPU”或“处理器”)、至少一个输入设备(例如,鼠标、键盘、控制器、触摸屏或小键盘)和至少一个输出设备(例如,显示设备、打印机或扬声器)。这样的系统还可以包括一个或多个存储设备,例如盘驱动器、光存储设备以及固态存储设备(例如随机存取存储器(“RAM”)或只读存储器(“ROM”))、以及可移动介质设备、存储卡、闪存卡等。
这样的设备还可以包括如上所述的计算机可读存储介质读取器、通信设备(例如,调制解调器、网卡(无线或有线)、红外通信设备等)以及工作存储器。计算机可读存储介质读取器可以与计算机可读存储介质连接或者被配置为接收或获得计算机可读存储介质,所述计算机可读存储介质代表远程、本地、固定和/或可移动存储设备以及用于临时和/或更永久地包含、存储、传输和检索计算机可读信息的存储介质。系统和各种设备通常还将包括位于至少一个工作存储器设备内的多个软件应用、模块、服务或其他元素,包括操作系统和应用程序,例如客户端应用或网络(web)浏览器。另外,还可以使用定制的硬件和/或可以以硬件、软件(包括便携式软件,例如小应用程序)或两者来实现特定元件。此外,可以采用与诸如网络输入/输出设备之类的其他计算设备的连接。
用于包含代码或代码的部分的存储介质和计算机可读介质可以包括本领域中已知或使用的任何适当的介质,包括存储介质和通信介质,例如但不限于以任何用于存储和/或传输信息的方法或技术(例如计算机可读指令、数据结构、程序模块或其他数据)实现的易失性和非易失性、可移动和不可移动介质,包括RAM、ROM、电可擦可编程只读存储器(“EEPROM”)、闪存或其他存储技术、压缩盘只读存储器(“CD-ROM”)、数字多功能盘(DVD)或其他光学存储设备、磁带盒、磁带、磁盘存储设备或其他磁性存储设备或任何其他可用于存储期望的信息并且可由系统设备访问的介质。基于本文中提供的公开和教导,本领域普通技术人员将理解实现各种实施例的其他方式和/或方法。
因此,说明书和附图应被认为是说明性的而不是限制性的。然而,将明显的是,在不偏离权利要求书中阐述的本发明的更广泛的精神和范围的情况下,可以对其做出各种修改和改变。
其他变型在本公开的精神内。因此,尽管所公开的技术易于进行各种修改和替选构造,但是其某些示出的实施例在附图中示出并且已经在上面进行了详细描述。然而,应当理解,不是旨在将本发明限制为所公开的一种或多种特定形式,而是相反,旨在涵盖落入本发明的精神和范围内的所有修改、替选构造和等同形式,如所附权利要求中所定义的。
在描述所公开的实施例的上下文中(特别是在下面权利要求的上下文中)的术语“一个”和“一种”和“所述”以及类似指代的使用应解释为涵盖单数形式和复数形式两者,除非本文中另外指出或与上下文明显矛盾。除非另有说明,否则术语“包括”、“具有”、“包括”和“包含”应被解释为开放式术语(即,意味着“包括但不限于”)。术语“连接”在未经修改并且指代物理连接时应被理解为部分或全部包含在内、附连到或接合在一起,即使有某些东西介于中间。除非在本文中另外指出,否则本文中数值范围的记载仅旨在用作分别指代落入该范围内的每个单独值的简写方法,并且每个单独值都被并入到说明书中,就好像其被单独记载在本文中一样。除非另外指出或与上下文矛盾,否则术语“集合”(例如“项目集合”)或“子集”的使用应被解释为包括一个或多个成员的非空集合。此外,除非另外指出或与上下文矛盾,否则对应集合的术语“子集”不一定表示对应集合的适当子集,而是子集和对应集合可以相等。
除非另外具体地指出或以其他方式与上下文明显矛盾,否则诸如“A,B、和C中的至少一个”或“A、B和C中的至少一个”形式的短语之类的连接语言以其他方式在上下文中被理解为通常用于表示项目、术语等可以是A或B或C,或者是A和B和C的集合的任何非空子集。例如,在具有三个成员的集合的说明性示例中,连接短语“A、B、和C中的至少一个”和“A、B和C中的至少一个”指代以下集合中的任何一个:{A},{B},{C},{A,B},{A,C},{B,C},{A,B,C}。因此,这样的连接语言通常不是旨在暗示某些实施例要求A中的至少一个、B中的至少一个和C中的至少一个各自存在。另外,除非另外说明或与上下文矛盾,否则术语“多个”指示复数的状态(例如,“多个项目”指示多个项目)。多个项目的数量至少为两个,但是当明确地或通过上下文如此指示时,则可以更多。
除非本文中另外指出或以其他方式与上下文明显矛盾,否则本文中描述的处理的操作可以以任何合适的顺序执行。本文中描述的处理(或其变型和/或组合)可以在配置有可执行指令的一个或多个计算机系统的控制下被执行,并且可以被实现为通过硬件或其组合在一个或多个处理器上共同执行的代码(例如,可执行指令、一个或多个计算机程序或一个或多个应用)。代码可以例如以计算机程序的形式存储在计算机可读存储介质上,该计算机程序包括可由一个或多个处理器执行的多个指令。计算机可读存储介质可以是非暂时性的。在一些实施例中,代码被存储在其上存储有可执行指令的一个或多个非暂时性计算机可读存储介质的集合上,可执行指令在被计算机系统的一个或多个处理器执行时(即,由于被执行)使计算机系统执行本文中所述的操作。非暂时性计算机可读存储介质的集合可以包括多个非暂时性计算机可读存储介质,并且多个非暂时性计算机可读存储介质中的一个或多个单独的非暂时性存储介质可以缺少所有代码,而多个非暂时性计算机可读存储介质共同地存储所有代码。此外,在一些示例中,可执行指令被执行,使得不同的指令由不同的处理器执行。作为说明性示例,非暂时性计算机可读存储介质可以存储指令。主CPU可以执行一些指令,而图形处理器单元可以执行其他指令。通常,计算机系统的不同组件可以具有单独的处理器,并且不同的处理器可以执行指令的不同子集。
因此,在一些示例中,计算机系统被配置为实现一个或多个服务,所述一个或多个服务单独地或共同地执行本文中所描述的处理的操作。这样的计算机系统可以例如被配置有使得能够执行操作的可应用的硬件和/或软件。此外,在一些示例中,实现本公开的各个实施例的计算机系统可以是单个设备,而在其他示例中,实现本公开的各个实施例的计算机系统可以是包括多个设备的分布式计算机系统,所述多个设备以不同方式操作,使得分布式计算机系统执行本文中所述的操作并且使得单个设备可以不执行所有操作。
本文中提供的任何和所有示例、或示例性语言(例如,“诸如”)的使用仅旨在更好地阐明本发明的实施例,而不构成对本发明的范围的限制,除非另有要求。说明书中的任何语言都不应被解释为指示任何未要求保护的要素对于实践本发明来说是必要的。
本文中描述了本公开的实施例,包括发明人已知的用于实施本发明的最佳模式。通过阅读前述说明,那些实施例的变型对于本领域普通技术人员而言将变得明显。发明人期望普通技术人员适当地采用这样的变型,并且发明人旨在以不同于本文中具体描述的方式来实践本公开的实施例。因此,本公开的范围包括由可应用法律所允许的所附权利要求中记载的主题的所有修改和等同物。此外,除非本文中另外指出或以其他方式与上下文明显矛盾,否则上述元素在其所有可能的变型中的任何组合均被本公开的范围涵盖。
本文中引用的所有参考文献(包括出版物、专利申请和专利)均以引用的方式合并于此,其程度如同每个参考文献被单独地并且具体地指示以通过引用的方式合并以及其全部内容在本文中被阐述一样。

Claims (14)

1.一种系统,所述系统包括一个或多个处理器和存储计算机可执行指令的存储器,所述计算机可执行指令在由所述一个或多个处理器执行时使所述系统:
接收将第一虚拟计算资源实例部署到虚拟计算环境中的第一请求;
至少部分地基于第一请求来识别指定虚拟资源定义的模板,所述虚拟资源定义包括第一虚拟计算资源实例的配置参数;
使用所述模板来设定具有第一配置的第一虚拟计算资源实例;
获得第一安全检查,第一安全检查包括第一配置的一个或多个安全要求;
确定第一配置是否满足所述一个或多个安全要求;
响应于确定第一配置满足所述一个或多个安全要求:
将第一虚拟计算资源实例配置为具有第一配置;以及
将第一虚拟计算资源实例部署到虚拟计算环境中;以及在部署第一虚拟计算资源实例之后:
获得描述与第一虚拟计算资源实例相关联的网络活动的监视数据;以及
确定监视数据是否指示第一虚拟计算资源实例的所部署的配置满足所述一个或多个安全要求。
2.根据权利要求1所述的系统,其中,执行所述指令还使所述系统:
从所述模板中获得第一配置参数集合和识别第一安全检查的信息;以及
根据第一配置参数集合生成第一配置,
其中,所述模板还指定第一安全检查。
3.根据权利要求1所述的系统,其中,执行所述指令还使所述系统:
接收访问计算资源的第二请求;
确定第二请求识别具有第一资源类型并且与第一配置相关联的第一虚拟计算资源实例;
确定第一安全检查与第一资源类型相关联;
获得第二配置,第二配置被预定为指示使用第二配置创建的第一虚拟计算资源实例是否通过第一安全检查,第一虚拟计算资源实例具有第一资源类型;
在计算资源被部署为第一虚拟计算资源实例的一部分之前,根据访问计算资源的第二请求,将第一配置与第二配置进行比较,以确定第一配置通过第一安全检查。
4.根据权利要求3所述的系统,其中:
第一配置包括以第一安全策略编码的第一安全许可集合;
第二配置包括以第二安全策略编码的第二安全许可集合;以及
为了将第一配置与第二配置进行比较,执行所述指令使所述系统:
至少部分地基于第一安全许可集合来确定第一命题逻辑表达式;
至少部分地基于第二安全许可集合来确定第二命题逻辑表达式;以及
将第一命题逻辑表达式与第二命题逻辑表达式进行比较,以确定第一安全策略通过第一安全检查。
5.根据权利要求1所述的系统,其中,执行所述指令还使所述系统:
确定第一请求识别具有第二资源类型并且与第三配置相关联的第二虚拟计算资源实例;
获得与第二资源类型相关联的第二安全检查;
获得第四配置,第四配置被预定为指示使用第四配置创建的第二虚拟计算资源实例是否通过第二安全检查,第二虚拟计算资源实例具有第二资源类型;
将第三配置与第四配置进行比较,以确定第三配置没有通过第二安全检查;以及
使根据第一请求的第一虚拟计算资源实例和第二虚拟计算资源实例的部署被拒绝。
6.根据权利要求1所述的系统,其中,执行所述指令还使所述系统在确定第一配置通过第一安全检查之后:
使用第一配置来配置第一虚拟计算资源实例;
将第一虚拟计算资源实例部署到虚拟计算环境中;
在部署之后获得与第一虚拟计算资源实例相关联的执行数据;以及
将执行数据与第二配置进行比较,以确定第一虚拟计算资源实例的配置通过第一安全检查。
7.根据权利要求1所述的系统,其中,所述一个或多个安全要求对应于第一虚拟计算资源实例的访问许可,并且执行所述指令还使所述系统:
模拟虚拟计算环境中的网络活动;
至少部分地基于第一配置,收集描述第一虚拟计算资源实例对网络活动的预期响应的信息;以及
确定所述信息是否指示第一配置满足所述一个或多个安全要求。
8.根据权利要求1所述的系统,其中,为了获得第一安全检查,执行所述指令使所述系统:
从通信地连接到所述一个或多个处理器的客户端计算设备接收配置第一虚拟计算资源实例的部署前安全分析的请求;
允许所述客户端计算设备访问用于配置部署前安全分析的应用编程接口API;以及
经由API从所述客户端计算设备接收执行第一安全检查的指示。
9.一种方法,包括:
由执行存储在存储器中的特定计算机可读程序指令的一个或多个处理器来接收将具有第一配置的第一虚拟计算资源实例以及具有第二配置和与第一虚拟计算资源实例的操作连接的第二虚拟计算资源实例部署到虚拟计算环境中的第一请求;
由所述一个或多个处理器至少部分地基于第一请求来识别指定第一虚拟资源定义的第一模板,第一虚拟资源定义包括第一虚拟计算资源实例的配置参数;
由所述一个或多个处理器使用第一模板来设定具有第一配置的第一虚拟计算资源实例;
由所述一个或多个处理器获得第一安全检查,第一安全检查包括第一配置的一个或多个安全要求;
由所述一个或多个处理器确定第一配置是否满足所述一个或多个安全要求;
响应于确定第一配置不满足所述一个或多个安全要求,由所述一个或多个处理器拒绝第一虚拟计算资源实例和第二虚拟计算资源实例两者的部署;
响应于确定第一配置满足所述一个或多个安全要求:
将第一虚拟计算资源实例配置为具有第一配置;以及
将第一虚拟计算资源实例部署到虚拟计算环境中;以及在部署第一虚拟计算资源实例之后:
获得描述与第一虚拟计算资源实例相关联的网络活动的监视数据;以及
确定监视数据是否指示第一虚拟计算资源实例的所部署的配置满足所述一个或多个安全要求。
10.根据权利要求9所述的方法,其中,执行所述指令包括:
由所述一个或多个处理器获得第二安全检查,第二安全检查包括第二配置的一个或多个访问许可;
由所述一个或多个处理器确定第二配置是否将所述一个或多个访问许可应用于第二虚拟计算资源实例;
响应于确定第二配置没有应用所述一个或多个访问许可,由所述一个或多个处理器拒绝第一虚拟计算资源实例和第二虚拟计算资源实例两者的部署;以及
响应于确定第一配置满足所述一个或多个安全要求并且第二配置将所述一个或多个访问许可应用于第二虚拟计算资源实例,由所述一个或多个处理器使第一虚拟计算资源实例利用第一配置被部署到虚拟计算环境中并且使第二虚拟计算资源实例利用第二配置被部署到虚拟计算环境中。
11.根据权利要求9所述的方法,其中:
确定第一配置是否满足所述一个或多个安全要求包括:由所述一个或多个处理器获得评估数据,并且由所述一个或多个处理器将评估数据与一个或多个存储的阈值进行比较;
第一模板还指定包括第一安全检查的验证器资源定义;以及
所述方法还包括:
由所述一个或多个处理器接收转换第一模板以产生第二模板的请求,第二模板针对使用第二模板启动的虚拟计算资源的部署前安全分析被优化;
由所述一个或多个处理器修改验证器资源定义以产生优化的验证器资源定义,优化的验证器资源定义包括评估数据或对评估数据的引用;
由所述一个或多个处理器修改第一虚拟资源定义以产生优化的虚拟资源定义,优化的虚拟资源定义包括依赖参数;以及
由所述一个或多个处理器创建第二模板,第二模板包括优化的验证器资源定义和优化的虚拟资源定义。
12.如权利要求11所述的方法,还包括:在创建第二模板之后:
由所述一个或多个处理器并且基于第一请求,确定第二模板将要被用来创建并且部署第一虚拟计算资源实例和第二虚拟计算资源实例;
由所述一个或多个处理器根据依赖参数和操作连接来确定:除非验证器资源实例指示第一配置满足第一安全检查,否则不应提供并且部署第一虚拟计算资源实例和第二虚拟计算资源实例;
由所述一个或多个处理器至少部分地基于优化的验证器资源定义来创建验证器资源实例;
由所述一个或多个处理器从优化的验证器资源定义中获得评估数据;
由所述一个或多个处理器使用验证器资源实例将评估数据和与所述一个或多个安全要求相关联的所述一个或多个存储的阈值进行比较,以产生安全检查结果;以及
响应于安全检查结果指示第一配置满足所述一个或多个安全要求,由所述一个或多个处理器使第一虚拟计算资源实例和第二虚拟计算资源实例被部署到虚拟计算环境中。
13.根据权利要求9所述的方法,还包括:
由所述一个或多个处理器允许客户端计算设备电连接到用于选择安全检查的应用编程接口API;
由所述一个或多个处理器经由API从所述客户端计算设备接收从多个安全检查中选择第一安全检查;以及
由所述一个或多个处理器修改第一模板以识别第一安全检查。
14.根据权利要求13所述的方法,还包括:
由所述一个或多个处理器经由API从所述客户端计算设备接收:
第一虚拟资源定义;以及
第二虚拟资源定义,第二虚拟资源定义包括用于为第二虚拟计算资源实例创建第二配置的配置参数;
由所述一个或多个处理器修改第一模板以包括第一虚拟资源定义和第二虚拟资源定义;
由所述一个或多个处理器经由API从所述客户端计算设备接收验证第一模板的请求;
由所述一个或多个处理器至少部分地基于第一虚拟资源定义来确定第一配置是否满足所述一个或多个安全要求;以及
响应于确定第一配置不满足所述一个或多个安全要求,由所述一个或多个处理器经由API将指示第一模板无效的通知发送给所述客户端计算设备。
CN201980017126.0A 2018-03-06 2019-03-06 用于虚拟计算资源的部署前安全分析器服务 Active CN111819544B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/913,741 2018-03-06
US15/913,741 US11017107B2 (en) 2018-03-06 2018-03-06 Pre-deployment security analyzer service for virtual computing resources
PCT/US2019/021036 WO2019173532A1 (en) 2018-03-06 2019-03-06 Pre-deployment security analyzer service for virtual computing resources

Publications (2)

Publication Number Publication Date
CN111819544A CN111819544A (zh) 2020-10-23
CN111819544B true CN111819544B (zh) 2024-04-16

Family

ID=65818683

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201980017126.0A Active CN111819544B (zh) 2018-03-06 2019-03-06 用于虚拟计算资源的部署前安全分析器服务

Country Status (3)

Country Link
US (1) US11017107B2 (zh)
CN (1) CN111819544B (zh)
WO (1) WO2019173532A1 (zh)

Families Citing this family (47)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10715538B2 (en) * 2016-10-03 2020-07-14 Stratus Digital Systems Transient transaction server
US20190114630A1 (en) 2017-09-29 2019-04-18 Stratus Digital Systems Transient Transaction Server DNS Strategy
CN111742524B (zh) * 2018-02-20 2021-12-14 华为技术有限公司 企业虚拟专用网络(vpn)与虚拟私有云(vpc)粘连
US11429724B2 (en) * 2018-03-19 2022-08-30 Microsoft Technology Licensing, Llc. Machine learning detection of unused open ports
CN112272835A (zh) 2018-04-13 2021-01-26 普拉德有限公司 对用户账户访问进行安全许可、包括对汇总用户账户数据的安全分发
US20190342324A1 (en) * 2018-05-02 2019-11-07 IPKeys Technologies, LLC Computer vulnerability assessment and remediation
US11108823B2 (en) * 2018-07-31 2021-08-31 International Business Machines Corporation Resource security system using fake connections
US11487590B2 (en) * 2018-10-09 2022-11-01 Kyndryl, Inc. Orchestration engine resources and blueprint definitions for hybrid cloud composition
US11115478B2 (en) * 2018-11-19 2021-09-07 Citrix Systems, Inc. Computer system and methods providing virtual computing session connections and re-directs based upon ordered list of virtual delivery agents
US11233847B1 (en) * 2018-11-21 2022-01-25 Amazon Technologies, Inc. Management of allocated computing resources in networked environment
US10877771B2 (en) * 2018-11-26 2020-12-29 Red Hat, Inc. Virtual machine booting using disk metadata
EP4145282A1 (en) * 2018-12-21 2023-03-08 Huawei Cloud Computing Technologies Co., Ltd. Mechanism to reduce serverless function startup latency
US11467882B2 (en) * 2018-12-21 2022-10-11 Target Brands, Inc. Methods and systems for rapid deployment of configurable computing resources
US11265292B1 (en) * 2019-01-28 2022-03-01 Amazon Technologies, Inc. Graph based management of virtualized infrastructures
US11362943B2 (en) 2019-05-20 2022-06-14 Citrix Systems, Inc. System and method for validating virtual session requests
US11102251B1 (en) * 2019-08-02 2021-08-24 Kandji, Inc. Systems and methods for deploying configurations on computing devices and validating compliance with the configurations during scheduled intervals
US11869005B2 (en) 2019-09-17 2024-01-09 Plaid Inc. System and method linking to accounts using credential-less authentication
US11106548B2 (en) 2019-10-15 2021-08-31 EMC IP Holding Company LLC Dynamic application consistent data restoration
US11275812B2 (en) * 2019-10-28 2022-03-15 Sap Se Realtime feedback-based web resource management and optimization system
US11108645B2 (en) * 2019-11-04 2021-08-31 Hewlett Packard Enterprise Development Lp Device interface matching using an artificial neural network
EP4070211A4 (en) * 2019-12-17 2023-11-29 Plaid Inc. SYSTEM AND METHOD FOR EVALUATING A DIGITAL INTERACTION WITH A DIGITAL THIRD-PARTY ACCOUNT SERVICE
US11539734B1 (en) * 2019-12-20 2022-12-27 Rapid7, Inc. Exposure detection by scan telemetry
US11088915B1 (en) * 2020-01-17 2021-08-10 Cisco Technology, Inc. Live network sandboxing on a centralized management system
US11467879B2 (en) 2020-01-20 2022-10-11 Oracle International Corporation Techniques for implementing rollback of infrastructure changes in a cloud infrastructure orchestration service
US11755337B2 (en) 2020-01-20 2023-09-12 Oracle International Corporation Techniques for managing dependencies of an orchestration service
US11245592B1 (en) * 2020-02-13 2022-02-08 Amazon Technologies, Inc. Template validation for virtualized resources
CN111427551A (zh) * 2020-02-14 2020-07-17 深圳市商汤科技有限公司 编程平台的用户代码运行方法及平台、设备、存储介质
US11762670B2 (en) * 2020-02-26 2023-09-19 Red Hat, Inc. Testing and selection of efficient application configurations
EP4115597A1 (en) 2020-03-03 2023-01-11 Level 3 Communications, LLC Containing a faulty stimulus in a content delivery network
CN111447203B (zh) * 2020-03-24 2020-11-10 江苏易安联网络技术有限公司 一种安全策略编排方法
US11470014B2 (en) 2020-04-30 2022-10-11 Dell Products, Lp System and method of managing data connections to a communication network using tiered devices and telemetry data
US11663361B2 (en) * 2020-05-11 2023-05-30 Micron Technology, Inc. Application-specific security
US11714689B2 (en) 2020-08-18 2023-08-01 Plaid Inc. System and method for managing user interaction flows within third party applications
CN112162823B (zh) * 2020-09-28 2023-12-22 北京浪潮数据技术有限公司 一种容器部署方法、装置及相关设备
US11818134B1 (en) * 2020-09-30 2023-11-14 Amazon Technologies, Inc. Validating application programming interface (API) requests to infrastructure systems hosted in a cloud computing environment
US11729111B2 (en) * 2020-12-11 2023-08-15 Netapp, Inc. Pluggable data resource management controller
CN112783961B (zh) * 2021-01-28 2022-07-19 湖北宸威玺链信息技术有限公司 基于托管运行的数据导出方法及系统
US11755717B2 (en) * 2021-03-18 2023-09-12 International Business Machines Corporation Security compliance for a secure landing zone
CN113010901B (zh) * 2021-04-25 2024-03-01 深圳市位元领航科技有限公司 一种基于资产模型的自动化安全检查方法及终端
CN113052501A (zh) * 2021-04-25 2021-06-29 深圳市位元领航科技有限公司 一种基于资产的自动化安全运维方法及终端
CN113590282A (zh) * 2021-07-19 2021-11-02 海宁奕斯伟集成电路设计有限公司 算力调度方法、系统、电子设备及计算机可读存储介质
US11928174B2 (en) * 2021-08-11 2024-03-12 Bank Of America Corporation Centralized dynamic portal for creating and hosting static and dynamic applications
CN114143025B (zh) * 2021-10-27 2023-09-05 浙江银盾云科技有限公司 云平台安全策略管理系统
US11461459B1 (en) 2021-11-02 2022-10-04 Kandji, Inc. User device authentication gateway module
US11875189B2 (en) * 2022-02-18 2024-01-16 Sas Institute Inc. System and methods for configuring, deploying and maintaining computing clusters
KR102474989B1 (ko) * 2022-03-03 2022-12-07 농업협동조합중앙회 퍼블릭 클라우드 상의 가상 머신에 대한 보안 사용을 지원하는 서버 및 그 제어 방법
CN117544419B (zh) * 2024-01-05 2024-05-14 北京数盾信息科技有限公司 用于提高物联网设备间信息通信安全性的高速加密方法

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8769059B1 (en) * 2012-05-23 2014-07-01 Amazon Technologies, Inc. Best practice analysis, third-party plug-ins
US8769642B1 (en) * 2011-05-31 2014-07-01 Amazon Technologies, Inc. Techniques for delegation of access privileges
CN103986741A (zh) * 2013-02-08 2014-08-13 株式会社日立制作所 云数据系统、云数据中心及其资源管理方法
CN104487959A (zh) * 2012-04-25 2015-04-01 思杰系统有限公司 虚拟机的安全管理
CN104685935A (zh) * 2012-09-27 2015-06-03 交互数字专利控股公司 虚拟化网络中的端到端架构、api框架、发现以及接入
JP2016009466A (ja) * 2014-06-26 2016-01-18 キヤノン株式会社 Webサービスシステム、認証認可装置、情報処理装置、情報処理方法及びプログラム
WO2016040506A1 (en) * 2014-09-13 2016-03-17 Advanced Elemental Technologies, Inc. Methods and systems for secure and reliable identity-based computing
CN105917627A (zh) * 2014-02-07 2016-08-31 甲骨文国际公司 云服务定制执行环境

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2504487A (en) * 2012-07-30 2014-02-05 Ibm Automated network deployment of cloud services into a network by matching security requirements
US9448826B2 (en) 2013-03-15 2016-09-20 Symantec Corporation Enforcing policy-based compliance of virtual machine image configurations
US9438506B2 (en) 2013-12-11 2016-09-06 Amazon Technologies, Inc. Identity and access management-based access control in virtual networks
US9436490B2 (en) 2014-01-13 2016-09-06 Cisco Technology, Inc. Systems and methods for testing WAAS performance for virtual desktop applications
US20150271195A1 (en) * 2014-03-18 2015-09-24 Intuit Inc. Method and system for providing temporary secure access enabled virtual assets
US9871822B2 (en) * 2014-11-28 2018-01-16 International Business Machines Corporation Deployment using a context-based cloud security assurance system

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8769642B1 (en) * 2011-05-31 2014-07-01 Amazon Technologies, Inc. Techniques for delegation of access privileges
CN104487959A (zh) * 2012-04-25 2015-04-01 思杰系统有限公司 虚拟机的安全管理
US8769059B1 (en) * 2012-05-23 2014-07-01 Amazon Technologies, Inc. Best practice analysis, third-party plug-ins
CN104685935A (zh) * 2012-09-27 2015-06-03 交互数字专利控股公司 虚拟化网络中的端到端架构、api框架、发现以及接入
CN103986741A (zh) * 2013-02-08 2014-08-13 株式会社日立制作所 云数据系统、云数据中心及其资源管理方法
CN105917627A (zh) * 2014-02-07 2016-08-31 甲骨文国际公司 云服务定制执行环境
JP2016009466A (ja) * 2014-06-26 2016-01-18 キヤノン株式会社 Webサービスシステム、認証認可装置、情報処理装置、情報処理方法及びプログラム
WO2016040506A1 (en) * 2014-09-13 2016-03-17 Advanced Elemental Technologies, Inc. Methods and systems for secure and reliable identity-based computing

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
虚拟化平台管理系统在广电监测中的应用;梁宏宇;;视听界(广播电视技术)(02);全文 *
面向云计算中虚拟化技术的等级保护要求研究;杨冰;张保稳;李号;张京海;;信息安全与通信保密(02);全文 *

Also Published As

Publication number Publication date
CN111819544A (zh) 2020-10-23
WO2019173532A1 (en) 2019-09-12
US11017107B2 (en) 2021-05-25
US20190278928A1 (en) 2019-09-12

Similar Documents

Publication Publication Date Title
CN111819544B (zh) 用于虚拟计算资源的部署前安全分析器服务
US11582257B2 (en) Prioritizing internet-accessible workloads for cyber security
US10922423B1 (en) Request context generator for security policy validation service
JP6559694B2 (ja) 自動sdk受容
US11947693B2 (en) Memory management in virtualized computing environments
US11902145B2 (en) Generating and deploying security policies for microsegmentation
US11093641B1 (en) Anonymizing sensitive data in logic problems for input to a constraint solver
US11962601B1 (en) Automatically prioritizing computing resource configurations for remediation
US10735430B1 (en) Systems and methods for dynamically enrolling virtualized execution instances and managing secure communications between virtualized execution instances and clients
US11792194B2 (en) Microsegmentation for serverless computing
US11588859B2 (en) Identity-based enforcement of network communication in serverless workloads
US20220201041A1 (en) Administrative policy override in microsegmentation
Alyas et al. Container performance and vulnerability management for container security using docker engine
US20230239325A1 (en) Software security agent updates via microcode
Mytilinakis Attack methods and defenses on Kubernetes
US20230239270A1 (en) Synthetic audit events in workload segmentation
US20230283639A1 (en) Stream processing of telemetry for a network topology
US11683345B2 (en) Application identity-based enforcement of datagram protocols
WO2022229731A1 (en) Systems and methods for side scanning

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
GR01 Patent grant
GR01 Patent grant