CN116940931A - 使用谓词的字符串自动推理的分布式分解 - Google Patents
使用谓词的字符串自动推理的分布式分解 Download PDFInfo
- Publication number
- CN116940931A CN116940931A CN202280017743.2A CN202280017743A CN116940931A CN 116940931 A CN116940931 A CN 116940931A CN 202280017743 A CN202280017743 A CN 202280017743A CN 116940931 A CN116940931 A CN 116940931A
- Authority
- CN
- China
- Prior art keywords
- formula
- sub
- formulas
- computer
- computing
- 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.)
- Pending
Links
- 238000000354 decomposition reaction Methods 0.000 title description 2
- 238000000034 method Methods 0.000 claims abstract description 87
- 238000004458 analytical method Methods 0.000 claims abstract description 73
- 230000008569 process Effects 0.000 claims abstract description 25
- 230000008520 organization Effects 0.000 claims description 23
- 230000005481 string theory Effects 0.000 claims description 7
- 238000004590 computer program Methods 0.000 claims description 5
- 238000007726 management method Methods 0.000 description 38
- 230000006870 function Effects 0.000 description 28
- 230000015654 memory Effects 0.000 description 24
- 230000009471 action Effects 0.000 description 19
- 238000010586 diagram Methods 0.000 description 13
- 238000004891 communication Methods 0.000 description 11
- 238000012545 processing Methods 0.000 description 9
- 230000014509 gene expression Effects 0.000 description 7
- 238000005516 engineering process Methods 0.000 description 6
- 230000004044 response Effects 0.000 description 6
- 230000006855 networking Effects 0.000 description 5
- 230000002093 peripheral effect Effects 0.000 description 5
- 239000008186 active pharmaceutical agent Substances 0.000 description 4
- 239000000835 fiber Substances 0.000 description 4
- 238000012546 transfer Methods 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 3
- 238000013500 data storage Methods 0.000 description 3
- 239000012634 fragment Substances 0.000 description 3
- 239000002184 metal Substances 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000006399 behavior Effects 0.000 description 2
- 238000004422 calculation algorithm Methods 0.000 description 2
- 230000010267 cellular communication Effects 0.000 description 2
- 239000003795 chemical substances by application Substances 0.000 description 2
- 238000001816 cooling Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 239000000203 mixture Substances 0.000 description 2
- 238000005192 partition Methods 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 238000012795 verification Methods 0.000 description 2
- 230000003936 working memory Effects 0.000 description 2
- 230000000692 anti-sense effect Effects 0.000 description 1
- 238000013475 authorization Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000013501 data transformation Methods 0.000 description 1
- 238000013154 diagnostic monitoring Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000007613 environmental effect Effects 0.000 description 1
- 238000009472 formulation Methods 0.000 description 1
- 230000036541 health Effects 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 238000002372 labelling Methods 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 238000013508 migration Methods 0.000 description 1
- 230000005012 migration Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 239000002957 persistent organic pollutant Substances 0.000 description 1
- 238000013515 script Methods 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Classifications
-
- 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/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/505—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
-
- 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/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- 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/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5038—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
-
- 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/5072—Grid computing
-
- 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
- G06F9/541—Interprogram communication via adapters, e.g. between incompatible applications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N5/00—Computing arrangements using knowledge-based models
- G06N5/01—Dynamic search techniques; Heuristics; Dynamic trees; Branch-and-bound
- G06N5/013—Automatic theorem proving
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5017—Task decomposition
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N5/00—Computing arrangements using knowledge-based models
- G06N5/04—Inference or reasoning models
- G06N5/043—Distributed expert systems; Blackboards
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Evolutionary Computation (AREA)
- Computing Systems (AREA)
- Artificial Intelligence (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Multi Processors (AREA)
- Computer And Data Communications (AREA)
Abstract
描述用于将具有字符串变量的命题逻辑中所表达的可满足性模理论(SMT)查询高效地分布在多个计算资源上的技术。作为由云提供商网络提供的计算相关服务的一部分,很多云提供商还提供身份和访问管理服务,所述身份和访问管理服务通常帮助用户控制对用户经由云提供商网络获得的服务和资源(例如,计算实例、存储资源等)的访问和权限。通过使用资源策略,例如用户可精细地控制哪些身份能够访问与用户账户相关联的特定资源和这些身份可如何使用所述资源。将具有字符串变量的命题逻辑中所表达的SMT查询的分析高效地分布在任何数目个单独的计算资源之中(例如,单独的进程、计算实例、容器等之中)的能力使得能够对此类策略进行高效分析。
Description
背景技术
云提供商网络使得用户能够使用各种计算相关资源,诸如计算资源、存储资源、联网资源及诸如此类。当用户或应用与云提供商网络交互(例如,使用由云提供商网络提供的应用编程接口(API)或命令行接口(CLI))时,所述用户或应用通常需要指定安全凭据来指示所述用户或应用是谁以及所述用户或应用是否具有访问所请求资源的权限。云提供商网络继而使用安全凭据来对用户或应用进行认证并授权所述用户或应用执行各种动作。可通过策略进一步管理对云提供商网络内的资源和动作的访问。策略是在与用户或资源相关联时限定所述用户或资源的权限的数据对象。例如,基于资源的策略可附加到存储资源、计算实例、加密密钥等,并且可指定谁能访问资源和这些身份可对资源执行哪些动作。
附图说明
将参考图式描述根据本公开的各种实施方案,在图式中:
图1是示出了根据一些实施方案的包括策略分析服务的环境的图,所述策略分析服务用于分析与云提供商网络的用户账户和用户账户的组织相关联的策略。
图2是示出了根据一些实施方案的将由策略限定的权限编码成包括字符串变量的命题逻辑语句的过程的图。
图3是示出了根据一些实施方案的将与命题逻辑中所表达并且包括字符串变量的公式相关联的搜索空间拆分到一组子公式中的过程的图,所述一组子公式的执行可分布在多个计算资源上。
图4是示出了根据一些实施方案的使用在多个计算资源上执行的可满足性解算器来分析从命题逻辑中所表达并且包括字符串变量的公式导出的一组子公式的图。
图5是示出根据一些实施方案的显示从对一个或多个策略的分析导出的策略发现的图形用户界面(GUI)的图。
图6是示出了根据一些实施方案的使用推理技术来分析命题逻辑中所表达且包括字符串变量的公式的方法的操作的流程图。
图7示出了根据一些实施方案的示例性提供商网络环境。
图8是根据一些实施方案的向客户提供存储服务和硬件虚拟化服务的示例性提供商网络的框图。
图9是示出了可在一些实施方案中使用的示例性计算机***的框图。
具体实施方式
本公开涉及将一阶逻辑中所表达并且包括理论变量(例如,与字符串理论、整数理论、数据结构理论等相关联的变量)的可满足性模理论(SMT)查询的处理高效地分布在多个计算资源上的方法、设备、***及非暂时性计算机可读存储介质。根据一些实施方案,作为由云提供商网络提供的计算相关服务的一部分,很多云提供商还提供身份和访问管理服务,所述身份和访问管理服务通常帮助用户控制对用户经由云提供商网络获得的服务和资源(例如,计算实例、存储资源等)的访问和权限。例如通过使用基于身份的策略和基于资源的策略,用户可精细地控制哪些身份能够访问与用户账户相关联的特定资源和这些身份可如何使用所述资源。然而,此类策略的配置通常可变得相当复杂并且对于用户来说,理解此类策略的所有安全相关蕴涵及其相互关系可能很快变得颇具挑战性。
为了减轻这些忧虑中的一些忧虑,云提供商网络可提供各种分析工具来帮助用户分析资源的安全相关特性和其账户内的相关联策略。此类安全工具的一个示例是访问分析器,访问分析器可用于帮助用户理解哪些身份可访问与其账户相关联的特定资源并且例如帮助用户识别其当前策略配置是否可能为其组织之外的用户提供意料之外的访问。在此示例中,访问分析器服务可通过将用户或组织的存储策略转换成等效的逻辑语句(例如,一阶逻辑中所表达的语句)来部分地执行此类分析,并使用一套通用和专门的逻辑解算器(例如,SMT解算器)来验证某些安全相关行为是否可能。在此情境下,逻辑解算器可对包括例如与策略的各方面(诸如账户识别符、资源识别符及诸如此类)对应的各种字符串变量的命题逻辑语句进行推理。除了身份和访问管理服务之外,一些云提供商网络还提供源代码审查和优化服务、程序或计算机网络验证服务以及利用自动推理来帮助分析各种类型的计算***的正确性的其他类型的服务。
上文所述的SMT解算器通常试图使用理论(诸如Presburger算术、非解释函数或字符串)的组合来证明或反证一阶逻辑中所表达的公式。现有的SMT解算器通常是整体式的单进程应用,并且不存在用于将此类公式的证明或反证的搜索高效地分布在多个计算资源上的成功方法。随着用户策略和组织策略以及计算相关资源的大小和复杂性增大,使用现有解算器及时地推理并提供关于这些资源的信息所需的资源可快速超出个别计算资源上的可用资源。
通过本文中所述的用于将对一阶逻辑中所表达且包括理论变量的SMT查询的分析高效地分布在任何数目个单独的计算资源之中(例如,单独的进程、计算实例、容器等之中)的技术来解决这些挑战以及其他挑战。根据本文中所述的实施方案,例如,云提供商网络的服务接收确定公式是否可满足的请求(例如,以验证一组用户策略或组织策略的一些预期行为或其他此类基于自动推理的分析)。所述服务基于与公式相关联的理论的类型来识别公式中的一组谓词,其中每个谓词是公式中所含有的至少一个理论变量的二进制值函数。在一些实施方案中,接着将与公式相关联的搜索空间拆分到一组子公式中,其中每个子公式由假设所述一组谓词中的相应谓词为真或假的公式的并集限定。在一些实施方案中,将所述一组子公式中的相应子公式发送到在多个单独计算资源中的每一者上运行的SMT解算器。一旦从在所述计算资源中的任一者上运行的SMT解算器接收到其相应子公式可满足的指示,则策略分析服务可使得显示指示所述公式可满足的信息;否则,策略分析服务可使得显示或者以其他方式传输指示公式不可满足的信息。除了其他益处之外,所述分析技术还实现一阶逻辑中所表达并且包括理论变量的SMT查询的高效计算,由此还帮助提高由云提供商网络和其他操作环境提供的组织计算资源的安全态势。
图1是示出了根据一些实施方案的其中对由云提供商网络100的身份和访问管理服务102限定的用户账户、组织(例如,包括多组用户、角色和策略)和策略执行安全策略分析的环境的图。云提供商网络100(有时被简称为“云”)是指网络可访问计算资源(诸如计算资源、存储资源和联网资源、应用和服务)的池,其可以是虚拟化的或裸金属的。所述云可提供对共享的可配置计算资源池的便利的按需网络访问,所述可配置计算资源池可以编程方式预配并响应于客户命令而发布。可动态地预配和重新配置这些资源以适应可变负载。因此,云计算可被视为经由公共可访问网络(例如,互联网、蜂窝通信网络)作为服务递送的应用以及提供这些服务的云提供商数据中心中的硬件和软件两者。
提供商网络100(或“云”提供商网络)使得用户能够利用各种类型的计算相关资源160中的一者或多者,诸如计算资源(例如,执行虚拟机(VM)实例和/或容器、执行批处理作业、在不预配服务器的情况下执行代码)、数据/存储资源(例如,对象存储、块级存储、数据档案存储、数据库和数据库表等)、网络相关资源(例如,配置包括多个计算资源群组的虚拟网络、内容递送网络(CDN)、域名服务(DNS))、应用资源(例如,数据库、应用构建/部署服务)、访问策略或角色、身份策略或角色、机器图像、路由器和其他数据处理资源等。这些计算资源和其他计算资源可作为服务106(诸如可执行计算实例的硬件虚拟化服务118、可存储数据对象的存储服务110等)提供。提供商网络100的用户(或“客户”)可利用与客户账户相关联的一个或多个用户账户,但这些术语可根据使用情境在某种程度上可互换地使用。用户可跨一个或多个中间网络104(例如,互联网)经由一个或多个接口(诸如通过使用应用编程接口(API)呼叫)、经由被实施为网站或应用的控制台等与提供商网络100交互。API是指客户端与服务器之间的接口和/或通信协议,使得如果客户端以预限定格式发出请求时,则所述客户端应接收到特定格式的响应或开始限定的动作。在云提供商网络情境中,API为客户提供网关以通过允许客户从云提供商网络获得数据或在云提供商网络内引起动作来访问云基础设施,从而使得能够开发与托管在云提供商网络中的资源和服务交互的应用。API还可使得云提供商网络的不同服务能够彼此交换数据。接口可以是提供商网络100的控制平面的一部分或充当提供商网络的控制平面的前端,所述控制平面包括支持且实现可更直接地提供给客户的服务的“后端”服务。
云提供商网络100可被形成为许多地区,其中一个地区是云提供商群集数据中心中的一个地理区域。每个地区包括经由私有高速网络(例如光纤通信连接)彼此连接的多个(例如,两个或更多个)可用性区(AZ)。AZ(也被称为可用性域或简称为“区”)提供包括一个或多个数据中心设施的隔离故障域,所述一个或多个数据中心设施具有与另一AZ中的数据中心设施分离的电源、单独联网和单独冷却。数据中心是指容纳云提供商网络的服务器并且为云提供商网络的服务器提供电源和冷却的物理建筑或外壳。优选地,一个地区内的AZ被定位成彼此相距足够远,使得自然灾害(或其他导致故障的事件)不应同时影响多于一个AZ或使多于一个AZ离线。
客户可经由公共可访问网络(例如,互联网、蜂窝通信网络)例如通过转接中心(TC)连接到云提供商网络100的AZ。TC是将客户链接到云提供商网络的主要主干位置并且可并列位于其他网络提供商设施(例如,互联网服务提供商(ISP)、电信提供商)处并且安全地连接(例如,经由VPN或直接连接)到AZ。每个地区可操作两个或更多个TC以实现冗余。地区连接到全球网络,所述全球网络包括将每个地区连接到至少一个其他地区的私有联网基础设施(例如,由云提供商控制的光纤连接)。云提供商网络可通过边缘位置和区域性边缘高速缓存服务器从位于这些地区之外但与这些地区联网的存在点(或“POP”)递送内容。计算硬件的这种划分和地理分布使得云提供商网络能够在全球范围内以高度的容错性和稳定性为客户提供低延时的资源访问。
通常,提供商网络的流量和操作可广泛地细分为两类:逻辑控制平面上承载的控制平面操作和逻辑数据平面上承载的数据平面操作。数据平面表示用户数据通过分布式计算***的移动,而控制平面表示控制信号通过分布式计算***的移动。控制平面通常包括分布在一个或多个控制服务器上并由所述一个或多个控制服务器实施的一个或多个控制平面组件。控制平面流量通常包括管理操作,诸如***配置和管理(例如,资源放置、硬件容量管理、诊断监控、***状态信息)。数据平面包括实施在提供商网络上的客户资源(例如,计算实例、容器、块存储卷、数据库、文件存储)。数据平面流量通常包括非管理操作,诸如往来于客户资源传送客户数据。控制平面组件通常实施在与数据平面服务器分离的一组服务器上,并且控制平面流量与数据平面流量可通过单独/不同的网络发送。
为了提供这些和其他计算资源服务,提供商网络100通常依赖于虚拟化技术。例如,虚拟化技术可用于使用户能够控制或利用计算资源(例如“计算实例”,诸如使用来宾操作***(O/S)的VM,所述来宾操作***使用可或可不进一步在底层主机O/S之上操作的监控程序来操作;可或可不在VM中操作的容器;可在没有底层监控程序的情况下在“裸金属”硬件上执行的计算实例),其中可使用单个电子装置来实施一个或多个计算资源。因此,用户可直接利用由提供商网络托管的计算资源(例如,由硬件虚拟化服务提供)来执行各种计算任务。另外地或另一选择为,用户可通过提交将由提供商网络执行的代码(例如,经由按需代码执行服务)来间接地利用计算资源,所述提供商网络继而利用一个或多个计算资源来执行所述代码,通常用户对所涉及的底层计算实例没有任何控制或了解。
例如,在各种实施方案中,“无服务器”功能可包括由用户或其他实体(诸如提供商网络本身)提供的可按需执行的代码。无服务器功能可通过按需代码执行服务维护在提供商网络100内,并且可与特定用户或账户相关联或通常能够由多个用户/账户访问。无服务器功能可与可用于调用无服务器功能的统一资源定位符(URL)、统一资源标识符(URI)或其他参考物相关联。无服务器功能可在被触发或调用时通过诸如虚拟机、容器等计算资源来执行。在一些实施方案中,可通过应用编程接口(API)呼叫或特殊格式的超文本传输协议(HTTP)请求消息来调用无服务器功能。因此,用户可限定可按需执行的无服务器功能,而不要求用户维护专用基础设施来执行无服务器功能。替代地,可使用由提供商网络100维护的资源来按需执行无服务器功能。在一些实施方案中,这些资源可维持在“就绪”状态(例如,具有被配置成执行无服务器功能的预初始化运行时环境)中,从而允许几乎实时地执行无服务器功能。
硬件虚拟化服务118(在各种实施方式中被称为弹性计算服务、虚拟机服务、计算云服务、计算引擎或云计算服务)可使得提供商网络100的用户能够预配并管理计算资源,诸如虚拟机实例。虚拟机技术可使用一个物理服务器例如使用监控程序来运行许多服务器的等效形式(其中的每一者被称为虚拟机),所述监控程序可至少在服务器的卸载卡上运行(例如,经由PCI或PCIe连接到虚拟化主机的物理CPU和其他组件的卡可用于一些虚拟化管理组件)。主机的此类卸载卡可包括一个或多个CPU,所述一个或多个CPU不用于客户实例,而是专用于实例管理任务,诸如虚拟机管理(例如,监控程序)、网络附加存储卷的输入/输出虚拟化、本地迁移管理任务、实例健康监控及诸如此类。虚拟机通常被称为计算实例或简称为“实例”。如本文中所使用,对虚拟计算实例进行预配通常包括:为客户端保留底层物理计算实例的资源(例如,计算和存储器资源)(例如,从可用物理计算实例池和其他资源);安装或启动所需的软件(例如,操作***);以及使虚拟计算实例可用于客户端以执行客户端指定的任务。
在一些实施方案中,提供商网络100包括容器服务。容器服务可以是允许云提供商网络的用户实例化并管理容器的容器编排和管理服务(在各种实施方式中被称为容器服务、云容器服务、容器引擎或容器云服务)。在一些实施方案中,容器服务可以是基于Kubernetes的容器编排和管理服务(在各种实施方式中被称为Kubernetes的容器服务、Azure Kubernetes服务、IBM云Kubernetes服务、Kubernetes引擎或Kubernetes的容器引擎)。本文中所提及的容器将代码及其所有依赖项打包,因此应用(在各种容器服务中也被称为任务、小群聚或群集)可在不同的计算环境之间快速且可靠地运行。容器图像是独立的可执行软件数据包,所述软件数据包包括运行应用进程所需的一切:代码、运行时、***工具、***库和设置。容器图像在运行时成为容器。因此,容器是应用层的抽象化(意指每个容器模拟不同的软件应用进程)。尽管每个容器运行隔离进程,但多个容器可例如通过在同一虚拟机内启动而共享共同的操作***。相比之下,虚拟机是硬件层的抽象化(意指每个虚拟机模拟可运行软件的物理机)。虽然多个虚拟机可在一个物理机上运行,但每个虚拟机通常具有其自己的操作***副本以及应用及其相关的文件、库和依赖项。一些容器可在运行容器代理的实例上运行,并且一些容器可在裸金属服务器上或在服务器的卸载卡上运行。
在一些实施方案中,身份和访问管理服务102是使得用户能够安全地控制对云提供商网络资源(例如,与各种提供商网络服务106相关联的资源160,诸如与存储服务110相关联的存储对象108、与数据库服务114相关联的数据库112、与硬件虚拟化服务118相关联的计算实例116及诸如此类)的访问的服务。身份和访问管理服务102用于控制准许谁向云提供商网络100进行认证(例如,登录)以及谁获得授权(例如,具有权限)使用由云提供商网络提供的资源。通常,资源是用于捕获可由云提供商网络100中的客户创建、读取、修改或删除的项目的域的概念。资源的示例还包括主体(例如,包括示例性用户122A-122N和角色124A-124N的主体120)和策略126(例如,包括基于身份的策略128、基于资源的策略130和其他策略132)。图1还示出了组织134的概念,组织可包括任何数目个相关联账户136A-136N,相关联账户继而可包括任何数目个用户和角色(例如,与账户136B相关联的角色138和与账户136N相关联的角色140)。
在一些实施方案中,当一个人最初通过云提供商网络100创建账户时,此人开始具有单点登录身份,单点登录身份具有对与所述账户相关联的所有云提供商网络服务和资源的完全访问权(例如,主体120的根用户)。例如,可通过使用用于创建账户的用户名(例如,电子邮件地址)和密码进行登录来访问根用户身份。云提供商网络100通常建议用户针对大多数任务不使用根用户,而是创建具有限定权限的另外用户账户(例如,包括用户账户122A-122N中的一者或多者)。在一些实施方案中,用户可针对不同的资源授予不同的用户账户不同的权限。例如,用户账户可被配置成允许一些用户完全访问硬件虚拟化服务118、存储服务110和其他云提供商网络100资源。对于其他用户,用户账户可允许对一些存储桶进行只读访问或允许管理一些实例116的权限等。
在一些实施方案中,账户包括作为身份和访问管理服务102的一部分存储的身份相关对象,包括例如用户122A-122N、群组(未示出了)、角色124A-124N、策略126等。这些资源可由云提供商网络100的具有足够特权的用户例如使用基于web的控制台、API、CLI或由身份和访问管理服务102提供的其他接口来添加、编辑和移除。
在一些实施方案中,主体120代表可请求对云提供商网络100的资源(例如,资源160或身份和访问管理服务102的资源)进行动作或操作的人或应用。与账户136A相关联的一组主体120可包括任何数目个用户122A-122N和角色124A-124N。当主体(例如,用户或角色)发送对资源进行动作或操作的请求时,出现云提供商网络请求。请求可包括以下信息中的一些或所有:主体想要执行的动作或操作、执行动作或操作的资源对象、使用实体(例如,用户或角色)发送请求的人或应用、环境数据(例如,关于IP地址、用户代理、SSL启用状态、当日时间等的信息)和资源数据(例如,与正在请求的资源相关的数据,诸如资源识别符或标签名)。身份和访问管理服务102将请求中所含有的信息收集到请求上下文,其中请求上下文用于评估并授权所述请求。
在一些实施方案中,对于要完成的请求,身份和访问管理服务102确定是否授权(例如,准许)请求主体完成所述请求。在授权期间,身份和访问管理服务102使用请求上下文中所包括的值来检查适用于请求的策略(例如,策略126中的一个或多个)。身份和访问管理服务102使用策略126来确定是允许还是拒绝请求。在一些实施方案中,策略126以JavaScript对象标记(JSON)文档的形式(或使用任何其他数据格式)存储在身份和访问管理服务102中并指定适用于主体实体、资源或其组合的权限语句。在一些实施方案中,存在可影响任何给定请求是否获得授权的几种类型的策略126,包括例如基于身份的策略128、基于资源的策略130以及其他可能类型的策略132。例如,为了向用户提供在其自己的账户中访问资源的权限,可配置基于身份的策略,而基于资源的策略可用于授予对资源的跨账户访问权。在一些实施方案中,身份和访问管理服务102检查适用于请求上下文的每个策略。如果单个权限策略包括拒绝的动作,则身份和访问管理服务102可拒绝整个请求。在一些实施方案中,身份和访问管理服务102默认拒绝请求,使得只有在请求的每个部分均被适用的权限策略允许时才向请求授权。
在一些实施方案中,一旦请求通过认证并获得授权,则身份和访问管理服务102批准请求中的动作或操作。操作由服务限定并且包括可对资源执行或相对于资源执行的动作,诸如查看、创建、编辑和删除所述资源。例如,身份和访问管理服务102可支持诸如创建用户、删除用户、创建角色和承担角色等动作以及许多其他可能的动作。为了允许主体执行操作,所述动作包括在适用于主体或受影响资源的策略中。
在一些实施方案中,基于身份的策略128是附加到身份(诸如账户中的用户、群组或角色)的权限策略。在一些实施方案中,基于资源的策略是附加到诸如存储对象108等资源的权限策略或角色信任策略。基于资源的策略控制指定的主体可在什么条件下对所述资源执行什么动作。在一些实施方案中,身份和访问管理服务102还支持可附加到角色(例如,角色124A-124N中的一者或多者)的信任策略。由于角色是支持基于资源的策略的身份和资源两者,因此在一些实施方案中,信任策略和基于身份的策略两者均附加到角色。信任策略限定哪些主体实体(账户、用户、角色和联合用户)可承担角色。
在一些实施方案中,角色是用户在具有特定权限的账户中创建的身份。角色与用户的类似之处在于它是一种身份,具有确定所述身份能做什么和不能做什么的权限策略。然而,角色不与一个人唯一相关联,而是旨在能够由需要它的任何人承担。此外,角色可能没有标准的长期凭据,诸如与其相关联的密码或访问密钥。而是当实体承担角色时,为所述实体提供用于角色会话的临时安全凭据。角色可用于将访问权委托给通常无权访问资源的用户、应用或服务。例如,一个人可能想要授予账户中的用户对这些用户通常无权访问的资源的访问权,或授予一个账户中的用户对另一账户中的资源的访问权。
如上文所指示,用户可通常期望获得其配置策略被配置成帮助保护其数据和资源的保证。在一些实施方案中,策略分析服务146使用各种类型的自动推理来执行此类分析并且基于所述分析将策略发现呈现给用户。在高层级上,自动推理是一种自动地产生并检查帮助证明***的正确性的数学证明(例如,以分析策略和策略的未来结果)的形式验证方法。如上文所指示,策略规定谁能(或不能)对特定资源执行特定动作,并且策略分析服务146可使用自动推理来检查策略的性质。尽管本文中的示例中的一些示例涉及由身份和访问管理服务102管理的策略的分析,但可使用类似的自动推理技术来分析源代码的正确性、分析网络配置或通常执行与各种类型的计算资源或计算***相关的任何类型的分析。
在一些实施方案中,为了执行此类分析,策略分析服务146将策略转换成等效的逻辑语句并针对问题运行一套通用和专门的逻辑解算器(例如,SMT解算器)。通常,SMT解算器使用数字、字符串、正则表达式、日期和IP地址等的混合来证明和反证逻辑公式。策略分析服务146可不核查例如访问日志来确定外部实体是否访问了你的信任区内的资源。而是,当基于资源的策略允许访问资源时,即使所述资源尚未被任何外部实体访问,策略分析服务仍可产生发现。此外,为了执行此类分析,服务在做决定时可不考虑任何外部账户的状态。
在图1中,标注为“1”-“6”的带编号圆圈示出了一个或多个用户经由身份和访问管理服务102来配置账户、主体、策略等和策略分析服务146对用户策略中的一者或多者执行分析的过程,如上文所述。具体来说,所示出的过程涉及将具有字符串变量的命题逻辑中所表达的一个或多个SMT查询的处理分布在多个计算资源(例如,计算装置150)上,如下文更详细地描述。
在一些实施方案中,在图1中的圆圈“1”处,与组织134相关联的一个或多个用户使用电子装置144来产生账户和策略配置请求142以对与组织(例如,由组织134代表的组织)相关联的一组账户136A-136N、主体120等进行配置,并且进一步对和与组织相关联的这些主体和资源160中的一些或所有相关联的策略126进行配置。例如,可创建这些主体以为云提供商网络100的账户(例如,账户136A-136N)内的用户和进程提供认证。如上文所指示,身份代表用户并且可加以认证并接着授权以在云提供商网络100中执行动作,并且每个身份可与一个或多个策略126相关联以确定用户或角色能在什么条件下对哪些云提供商网络资源进行什么动作。可例如通过旨在使用云提供商网络100的各种服务106达到各种目的的组织来创建账户、主体和策略的集合。此外,可视组织的期望随时间推移而修改构成所述组织的账户、主体和策略的集合。
在一些实施方案中,在圆圈“2”处,响应于账户和策略配置请求142,身份和访问管理服务102创建并存储代表账户、主体和策略的数据。如上文进一步指示,云提供商网络100的具有充分特权的外部用户可例如使用基于web的控制台、API、CLI或由身份和访问管理服务102提供的其他接口来添加、编辑及移除这些主体和策略,并且可使用由身份和访问管理服务102管理的各种类型的存储资源来存储表示主体和策略的数据。
一旦用户或组织已创建一个或多个策略,则用户可期望分析所述策略以获得配置的策略被配置成帮助保护其数据和资源的保证(例如,以帮助确保不期望的实体不可访问资源,帮助确保不会意外地准许用户执行不期望的动作,等等)。在一些实施方案中,在圆圈“3”处,用户任选地请求158例如使用基于web的控制台或其他接口对其策略执行一项或多项分析。在其他实施方案中,策略分析服务146例如响应于查看关于与一个或多个用户账户相关联的各种类型的资源160的更多一般信息的请求而自动地执行一项或多项分析。
在圆圈“4”处,策略分析服务146获得与所请求的分析相关的一个或多个策略148。例如,如果所请求的分析涉及确定是否准许任何外部实体访问与用户账户相关联的一个或多个资源,则策略分析服务146可获得与适用资源160相关联的一个或多个基于资源的策略。在其他示例中,可根据要执行的分析的类型获得基于身份的策略或其他策略132。
在圆圈“5”处,策略分析服务146产生一个或多个策略148的编码版本并使用一个或多个SMT解算器152来检查策略的一个或多个性质。在一些实施方案中,通过将一个或多个策略126中所含有(例如,以基于JSON的格式或其他语法表达)的权限语句转换成使用一阶逻辑表达(例如,使用SMT-LIB格式或其他形式语法表达)的约束来产生编码策略154。在高层级上,编码策略包括一组约束,当由SMT解算器152分析时,所述一组约束产生指示如果对使得公式得以满足的约束的变量赋值则相关联公式(例如,要检查的性质的公式化)可满足的输出;否则,如果不存在变量的这种赋值,则公式不可满足。
图2是示出了根据一些实施方案的将由策略限定的权限编码成包括字符串变量的命题逻辑语句的过程的图。在图2中,提供资源策略(例如,包括资源策略片段200)作为一阶语言编码器202的输入以产生编码策略(例如,包括示例性编码策略片段204)。在一些实施方案中,一阶语言编码器202实施可满足性模理论库和标准(SMT-LIB)或任何其他语法以形式上指定与云提供商网络100的策略相关的公式。如图所示,编码策略包括许多变量(例如,包括字符串变量206)、布尔连接(例如,与逻辑AND连接对应的布尔连接208),变量和布尔连接一起可形成各种约束(例如,包括约束210)。在一些实施方案中,一个或多个约束的集合限定可传递到解算器的公式,其中解算器通过确定是否存在变量的满足赋值来检查公式的可满足性。尽管在此示例中,公式包括字符串变量,但在其他示例中,根据要分析的信息的类型,编码表示中可包括其他类型的理论变量。例如,在其他实施方案中,要分析的信息的编码表示可包括与整数理论、实数算术理论、位向量理论、阵列理论、列表结构理论等相关联的变量。
在一些实施方案中,为了如上文所述地分布一阶逻辑中所表达的SMT查询的处理,策略分析服务146将由编码策略限定的公式拆分成多个子公式。可通过在独立计算资源上运行的SMT解算器处理子公式中的每一者(例如,作为单独的进程、可独立执行线程、VM实例、容器、按需可执行功能等)。如此一来,所述多个子公式将公式的满足赋值的总搜索空间划分在所述一组子公式之中,所述一组子公式的处理可如上文所述地并行进行,借此在大多数情况下显著地缩短解算公式所需的时间。本文中所提供的示例中的一些示出了根据公式中所标识的字符串变量对公式进行拆分;通常,所述技术可用于以基于理论的方式(例如,根据SMT查询中所含有的一个或多个类型的理论变量)拆分公式。
图3是示出了根据一些实施方案的将与一阶逻辑中所表达并且包括字符串变量的公式相关联的搜索空间拆分到一组子公式中的过程的图,所述一组子公式的执行可分布在多个计算资源314A-314N上。在图3中,策略分析服务146的协调器300进程将一个或多个编码策略(例如,由编码策略片段204示出)作为输入并使得公式拆分器302识别用于将由编码策略表示的公式拆分成一组子公式308(例如,包括子公式310A-310N)的一组谓词306。一种将公式拆分成一组子公
式308的说明性算法如下:
在以上示例中,pulp例程将公式f(例如,由编码策略限定)作为输入并且返回由集合pulped表示的一组子公式。predicates(f)例程基于公式f中的字符串产生谓词,所述字符串提到了提到最多的字符串变量。例如,在编码策略片段204中,字符串变量csp:crn是提到最多的字符串变量(例如,其被提到的次数多于csp:crn_prefix和csp:crn_region字符串变量)。在此示例中,predicates(f)例程将含有字符串变量的公式分离成一组谓词,所述一组谓词含有提到最多的字符串变量csp:crn的实例(例如,“(="arn:aws:sts::111:AAA"|aws:arn|)”、“(str.prefixof"arn:aws:sts::111:BBB/”|aws:arn|)”、“(="arn:aws:sts::111:CCC"|aws:arn|)”、“(="arn:aws:sts::111:DDD"|aws:arn|)”等)。在一些实施方案中,每个谓词因此是公式中所含有的至少一个字符串变量的二进制值函数。在其他实施方案中,可使用其他谓词产生技术,例如通过将公式分离成含有前N个最频繁出现的字符串变量的谓词、计算复杂性大致相等的谓词等。例如,在一些实施方案中,可基于关于每个谓词中所含有的一个或多个理论变量的推理的估计的计算复杂性来对谓词进行分类。接着,可通过基于谓词的估计的计算复杂性将谓词分组成多个谓词群组来拆分公式(例如,其中多个复杂性较低的谓词可被分组在单个分区中,而复杂性较高的谓词可单独地拆分等)。
例程进一步遍历所获得的一系列predicates(f),并且针对每个谓词将子公式添加到pulped集,其中在假设谓词为真或假的情况下子公式包括公式。如此一来,在predicates(f)中的谓词中的一者为真或假的情况下,每个子公式将与原始公式相关联的搜索空间限制到搜索空间的分区。这些子公式中的每一者表示可由SMT解算器152分析的独立实例,所述独立实例可分布在各自执行SMT解算器的一组独立计算资源(例如,多线程执行环境的单独线程、单独的计算实例、容器、云提供商网络的各种服务提供的按需可执行功能等)当中。在一些实施方案中,如果SMT解算器中的任一者返回其子公式可满足的指示,则可确定公式是可满足的。否则,如果所有SMT解算器均返回相应子公式不可满足的指示,则可确定公式不可满足。
图4是示出了根据一些实施方案的使用在多个计算资源上执行的SMT解算器来分析从一阶逻辑中所表达并且包括字符串变量的公式导出的一组子公式的图。如所示,多个计算资源314A-314N中的每一者执行SMT解算器152并且由协调器300指派一组子公式308中的相应子公式(例如,向计算资源314A指派子公式310A,向计算资源314B指派子公式310B,并且向计算资源314N指派子公式310N)。通常,可以任何方式(例如,根据子公式的数目和可用计算资源的数目)将所述一组子公式308中的多个子公式分布在多个计算资源上。
在一些实施方案中,下面示出了由协调器300进程使用一组计算资源执行以确定公式f的可满足性的示例性算法:
在以上示例中,限定worker例程,所述例程将Solver s和Formula g作为输入并返回公式f是可满足(例如,如果存在子公式的变量的满足赋值)或不可满足(例如,如果确定不存在子公式的变量的满足赋值)的指示。在一些实施方案中,计算资源314A-314N中的每一者包括使用SMT解算器152实施来与上文所示出的worker例程类似的例程的进程。
在一些实施方案中,distribute_solver例程将公式f和解算器s作为输入并返回公式是可满足还是不可满足的指示。具体来说,distribute_solver例程产生上文关于图3所述的一组pulped子公式,并将子公式分布给多个单独的worker(例如,多个单独的计算资源314A,其可包括单独的进程、线程、计算实例、容器、按需可执行功能等)。在一些实施方案中,一旦worker中的任一者返回相应子公式可满足的指示,则distribute_solver例程返回公式可满足的指示。否则,如果worker均未返回公式可满足的指示(例如,所有worker返回其相应子公式不可满足的指示),则例程返回公式不可满足的指示。在一些实施方案中,如果在假设子公式的谓词为真并且假设子公式的谓词为假的两种情况下均从相应worker接收到子公式不可满足的指示,则例程可返回公式不可满足的指示(例如,即使在所有worker返回其相应子公式不可满足的指示之前)。
在图4中,例如,计算资源314A-314N各自处理子公式310A-310N中的相应子公式。在worker的总执行时间410中的时间406A处,计算资源314N返回其子公式310N不可满足的指示作为不可满足的结果400。在时间406B处,计算资源314A返回指示其子公式310A可满足的可满足结果402。如上文所指示,由于子公式310A可满足,因此协调器300进程可确定总公式f可满足。在一些实施方案中,协调器300进程任选地可终止通过其他worker计算资源对其他子公式的处理(例如,通过发送到计算资源314B的分析终止请求404所示出)。因此,整体地解算公式可能花费至少到时间406N的时间来确定公式是否可满足,而当确定子公式中的一者可满足时,公式的分布式处理仅花费到时间406B的时间。
返回图1,在一些实施方案中,基于由SMT解算器152执行的分析,在圆圈“5”处,策略分析服务146产生策略发现156。策略发现156通常可包括基于关于所述一个或多个策略148执行的推理而获得的任何信息。例如,策略发现可包括一个或多个资源160能够由限定信任区之外的一个或多个实体访问、策略准许对一个或多个资源160执行一个或多个意料之外的操作、用户可承担用户不意欲能够承担的角色及诸如此类的指示。在一些实施方案中,更一般来说,基于由SMT解算器152执行的分析,协调器300可传输指示公式可满足还是不可满足的消息。所传输的消息可使得显示与结果相关联的信息,可被发送到一个或多个下游SMT解算器或其他自动推理工具以供进一步分析或由任何其他进程使用。
图5是示出根据一些实施方案的显示从对一个或多个策略的分析导出的策略发现的图形用户界面(GUI)的图。例如,GUI 500示出了显示一系列存储资源(例如,“example-1-resource”、“example-ab-resource”等)的控制台界面。在一些实施方案中,界面还包括至少一个策略发现502,所述策略发现指示关于从上文所述的基于自动推理的分析导出的资源的信息。在此示例中,发现502指示在限定信任区之外的用户可访问存储资源中的一者,这可提示用户进一步分析并修改与资源相关联的策略以减轻对资源的意外访问。通常,此类策略发现的呈现可在其他类型的界面(例如,CLI、独立应用界面等)中呈现并且涉及其他类型的策略分析,如本文中所述。
图6是示出根据一些实施方案根据一些实施方案的使用推理技术来分析命题逻辑中所表达且包括字符串变量的公式的方法的操作600的流程图。操作600(或其他本文中所述的过程或变型和/或其组合)中的一些或所有在配置有可执行指令的一个或多个计算机***的控制下执行并且作为共同在一个或多个处理器上执行的代码(例如,可执行指令、一个或多个计算机程序或一个或多个应用)、通过硬件或其组合来实施。代码例如以包括能够由一个或多个处理器执行的指令的计算机程序的形式存储在计算机可读存储介质上。计算机可读存储介质是非暂时性的。在一些实施方案中,操作600中的一者或多者(或所有)是由其他图的策略分析服务146执行。
操作600包括在方框602处,由云提供商网络的策略分析服务接收确定公式是否可满足的请求,其中所述公式与附加到与所述云提供商网络的用户相关联的一个或多个计算资源的策略的分析相关。
操作600还包括在方框604处,基于与所述公式中的一组谓词相关联的理论类型来识别所述一组谓词,其中所述一组谓词中的每个谓词是所述公式中所含有的至少一个理论变量的二进制值函数。例如,理论类型可以是以下各项中的至少一者:字符串理论、整数理论、实数算术理论、位向量理论、阵列理论、列表结构理论等。在一些实施方案中,理论类型是字符串理论并且理论变量是字符串变量,并且所述操作还包括识别公式中最频繁出现的理论变量,并且其中所述一组谓词中的每个谓词包括最频繁出现的理论变量的实例。
操作600还包括在方框606处,将与所述公式相关联的搜索空间拆分到多个子公式中,其中在假设所述一组谓词中的相应谓词为真或假的情况下每个子公式包括所述公式。
操作600还包括在方框608处,将所述多个子公式中的相应子公式发送到在多个计算资源中的每一者上运行的SMT解算器。在一些实施方案中,所述多个计算资源中的每个计算资源是多个线程中的可独立执行线程,并且其中所述多个线程在一个或多个计算装置上执行。在一些实施方案中,所述多个计算资源中的每个计算资源是以下各项中的一者:由云提供商网络的硬件虚拟化服务提供的计算实例、由所述云提供商网络的容器服务提供的容器、或由所述云提供商网络的按需可执行代码服务提供的按需可执行功能。
操作600还包括在方框610处,从在所述多个计算资源中的一个计算资源上运行的所述SMT解算器接收由在所述计算资源上运行的所述SMT解算器分析的所述相应子公式可满足的指示。
操作600还包括在方框612处,传输指示所述公式可满足的消息。例如,消息可用于使得显示指示所述公式可满足的信息,可被发送到一个或多个下游SMT解算器或其他自动推理工具以进行进一步分析,或由任何其他进程使用。
在一些实施方案中,所述公式与以下各项中的至少一者相关:可适用于与云提供商网络的用户相关联的一个或多个计算资源的策略的分析、计算机程序的正确性的分析或计算机网络配置的正确性的分析。在一些实施方案中,所述公式的可满足性确定与由云提供商网络限定的账号或组织相关联的计算资源是否能够由在所述账号或组织外部的实体访问,并且其中指示所述公式可满足的所述信息指示所述计算资源能够由所述账号或组织外部的实体访问。在一些实施方案中,所述请求识别由云提供商网络的身份和访问管理服务管理的策略,并且其中所述方法还包括通过将所述策略编码成一阶逻辑格式产生所述公式。
在一些实施方案中,所述多个计算资源中的所述计算资源是第一计算资源并且所述指示是第一指示,并且其中所述公式可满足的所述第一指示是在从所述多个计算资源中的第二计算资源接收第二指示之前从在所述第一计算资源上运行的所述SMT解算器接收到。
在一些实施方案中,所述操作还包括:接收确定一阶逻辑中所表达的第二公式是否可满足的第二请求;基于所述第二公式产生第二组谓词;将与所述第二公式相关联的搜索空间拆分到第二多个子公式中;将第二多个子公式中的相应子公式发送到在相应多个第二计算资源中的每一者上运行的SMT解算器;从在所述多个计算资源中的一个计算资源上运行的每个SMT解算器接收相应子公式不可满足的指示;以及传输指示第二公式不可满足的消息。
在一些实施方案中,所述操作还包括接收确定一阶逻辑中所表达的第二公式是否可满足的第二请求;基于第二公式产生第二组谓词;将与第二公式相关联的搜索空间拆分到第二多个子公式中;将第二多个子公式中的相应子公式发送到在相应多个第二计算资源中的每一者上运行的SMT解算器;接收在假设第二多个子公式中的特定子公式的相应谓词为真的情况下所述特定子公式不可满足的第一指示以及在假设第二多个子公式中的特定子公式的相应谓词为假的情况下所述特定子公式不可满足的第二指示;以及传输指示第二公式不可满足的消息。
在一些实施方案中,所述操作还包括基于与所述一组谓词中的每个谓词相关联的估计的计算复杂性来将所述一组谓词分组成多个谓词群组,其中基于所述多个谓词群组拆分所述搜索空间。
在一些实施方案中,所述操作还包括使得显示包括指示所述公式可满足的信息的图形用户界面(GUI),其中所述信息指示使得所述公式可满足的至少一个字符串变量的值。在一些实施方案中,指示所述公式可满足的所述消息用作另一SMT解算器的输入。
图7示出了根据一些实施方案的示例性提供商网络(或“服务提供商***”)环境。提供商网络700可经由一个或多个虚拟化服务710为客户提供资源虚拟化,所述一个或多个虚拟化服务允许客户购买、租赁或以其他方式获得在一个或多个数据中心中的一个或多个提供商网络内的装置上实施的虚拟化资源(包括但不限于计算资源和存储资源)的实例712。本地互联网协议(IP)地址716可与资源实例712相关联;本地IP地址是提供商网络700上的资源实例712的内部网络地址。在一些实施方案中,提供商网络700还可提供客户可从提供商700获得的公共IP地址714和/或公共IP地址范围(例如,互联网协议版本4(IPv4)或互联网协议版本6(IPv6)地址)。
通常,提供商网络700可经由虚拟化服务710允许服务提供商的客户(例如,操作包括一个或多个客户装置752的一个或多个客户端网络750A-750C的客户)使指派或分配给客户的至少一些公共IP地址714与指派给客户的特定资源实例712动态地相关联。提供商网络700还可允许客户将先前映射到分配给客户的一个虚拟化计算资源实例712的公共IP地址714重新映射到也分配给所述客户的另一虚拟化计算资源实例712。使用服务提供商提供的虚拟化计算资源实例712和公共IP地址714,服务提供商的客户(诸如,客户网络750A-750C的操作者)可例如实施客户特定应用并将客户的应用呈现在中间网络740上,诸如互联网。中间网络740上的其他网络实体720可接着产生去向由客户网络750A-750C公布的目的地公共IP地址714的流量;流量被路由到服务提供商数据中心,并且在数据中心处经由网络底层被路由到当前映射到目的地公共IP地址714的虚拟化计算资源实例712的本地IP地址716。类似地,可将来自虚拟化计算资源实例712的响应流量经由网络底层在中间网络740上路由回到源实体720。
本文中所使用的本地IP地址是指例如提供商网络中的资源实例的内部或“私有”网络地址。本地IP地址可在互联网工程任务组(IETF)注释请求(RFC)1918保留的地址块内和/或呈由IETF RFC 4193指定的地址格式并且在提供商网络内是可变的。来自提供商网络之外的网络流量并不被直接路由到本地IP地址;而是,流量使用映射到资源实例的本地IP地址的公共IP地址。提供商网络可包括提供网络地址转换(NAT)或类似功能以执行从公共IP地址到本地IP地址以及从本地IP地址到公共IP地址的映射的网络装置或器械。
公共IP地址是由服务提供商或客户指派给资源实例的互联网可变网络地址。例如经由1:1NAT转换路由到公共IP地址的流量,并且将流量转发到资源实例的相应本地IP地址。
一些公共IP地址可由提供商网络基础设施指派给特定资源实例;这些公共IP地址可被称为标准公共IP地址或简称为标准IP地址。在一些实施方案中,标准IP地址到资源实例的本地IP地址的映射是所有资源实例类型的默认启动配置。
至少一些公共IP地址可被分配给提供商网络700的客户或由提供商网络的客户获得;接着,客户可将其分配到的公共IP地址指派给分配给客户的特定资源实例。这些公共IP地址可被称为客户公共IP地址,或简称为客户IP地址。并不是像在标准IP地址的情形中那样由提供商网络700指派给资源实例,而是客户IP地址可由客户例如经由服务提供商提供的API指派给资源实例。与标准IP地址不同,客户IP地址由相应客户被分配给客户账户并且可在必要或期望时重新映射到其他资源实例。客户IP地址与客户的账户而非特定资源实例相关联,并且客户控制所述IP地址直到客户选择释放IP地址。与常规的静态IP地址不同,客户IP地址允许客户通过将客户的公共IP地址重新映射到与客户的账户相关联的任何资源实例来掩盖资源实例或可用性区域故障。例如,客户IP地址使得客户能够通过将客户IP地址重新映射到替代资源实例来解决客户的资源实例或软件的问题。
图8是根据一些实施方案的向客户提供存储服务和硬件虚拟化服务的示例性提供商网络的框图。硬件虚拟化服务820向客户提供多个计算资源824(例如,计算实例825,诸如VM)。计算资源824可例如租赁或租用给提供商网络800的客户(例如,实施客户网络850的客户)。每个计算资源824可配备有一个或多个本地IP地址。提供商网络800可被配置成将数据包从计算资源824的本地IP地址路由到公共互联网目的地以及将数据包从公共互联网源路由到计算资源824的本地IP地址。
提供商网络800可使得例如经由本地网络856耦合到中间网络840的客户网络850能够经由耦合到中间网络840和提供商网络800的硬件虚拟化服务820实施虚拟计算***892。在一些实施方案中,硬件虚拟化服务820可提供一个或多个API 802,例如网页服务接口,经由所述一个或多个API客户网络850可例如经由控制台894(例如,基于网页的应用、独立应用、移动应用等)访问硬件虚拟化服务820提供的功能。在一些实施方案中,在提供商网络800处,客户网络850处的每个虚拟计算***892可对应于租用、租赁或以其他方式提供给客户网络850的计算资源824。
从虚拟计算***892的实例和/或另一客户装置890(例如,经由控制台894),客户可例如经由一个或多个API 802访问存储服务810的功能,以从由提供商网络800提供的虚拟数据存储区816的存储资源818A-818N(例如,文件夹或“存储桶”、虚拟化卷、数据库等)访问数据和将数据存储到所述存储资源。在一些实施方案中,虚拟化数据存储网关(未示出)可设置在客户网络850处,其可本地高速缓存至少一些数据(例如频繁访问的数据或关键数据)并且可经由一个或多个通信信道与存储服务810通信以从本地高速缓存上传新的或修改的数据,使得维持数据的主存储区(虚拟化数据存储区816)。在一些实施方案中,用户经由虚拟计算***892和/或在另一客户装置890上可经由充当存储虚拟化服务的存储服务810安装并访问虚拟数据存储816卷,并且这些卷在用户看来可以是本地(虚拟化)存储装置898。
虽然图8中未示出,但还可经由API 802从提供商网络800内的资源实例访问虚拟化服务。例如,客户、器械服务提供商或其他实体可经由API 802从提供商网络800上的相应虚拟网络内访问虚拟化服务以请求分配所述虚拟网络内或另一虚拟网络内的一个或多个资源实例。
在一些实施方案中,实施本文中所述的技术的一部分或所有的***可包括通用计算机***,所述通用计算机***包括或被配置成访问一个或多个计算机可访问介质,诸如图9中所示出的计算机***900。在所示出的实施方案中,计算机***900包括经由输入/输出(I/O)接口930耦合到***存储器920的一个或多个处理器910。计算机***900还包括耦合到I/O接口930的网络接口940。虽然图9示出计算机***900作为单个计算装置,但在各种实施方案中,计算机***900可包括一个计算装置或被配置成作为单个计算机***900一起工作的任何数目个计算装置。
在各种实施方案中,计算机***900可以是包括一个处理器910的单处理器***或包括几个处理器910(例如,两个、四个、八个或另一适合的数目)的多处理器***。处理器910可以是能够执行指令的任何适合的处理器。例如,在各种实施方案中,处理器910可以是实施各种指令集架构(ISA)(诸如x86、ARM、PowerPC、SPARC或MIPS ISA或任何其他适合的ISA)中的任一者的通用处理器或嵌入式处理器。在多处理器***中,处理器910中的每一者通常可但未必实施相同的ISA。
***存储器920可存储能够由处理器910访问的指令和数据。在各种实施方案中,***存储器920可使用任何适合的存储器技术来实施,诸如随机存取存储器(RAM)、静态RAM(SRAM)、同步动态RAM(SDRAM)、非易失性/快闪型存储器或任何其他类型的存储器。在所示出的实施方案中,示出实施一个或多个所期望功能(诸如上文所述的那些方法、技术和数据)的程序指令和数据存储在***存储器920内作为策略分析服务代码925(例如,可执行以完全地或部分地实施策略分析服务146)和数据926。
在一个实施方案中,I/O接口930可被配置成协调处理器910、***存储器920和装置中的任何***装置(包括网络接口940或其他***接口)之间的I/O流量。在一些实施方案中,I/O接口930可执行任何必要的协议、时序或其他数据变换以将来自一个组件(例如,***存储器920)的数据信号转换成适合于由另一组件(例如,处理器910)使用的格式。在一些实施方案中,例如,I/O接口930可包括支持通过各种类型的***总线(诸如,***部件互连(PCI)总线标准或通用串行总线(USB)标准的变体)附接的装置。在一些实施方案中,例如,I/O接口930的功能可被分离成两个或更多个单独的组件,诸如北桥和南桥。此外,在一些实施方案中,I/O接口930(诸如通向***存储器920的接口)的功能中的一些或所有可直接并入到处理器910中。
例如,网络接口940可被配置成允许计算机***900与附接到一个或多个网络950的其他装置960(诸如图1中所示出了的其他计算机***或装置)之间交换数据。在各种实施方案中,例如,网络接口940可支持经由任何适合的有线或无线通用数据网络(诸如各种类型的以太网)进行通信。另外,网络接口940可支持经由电信/电话网络(诸如模拟语音网络或数字光纤通信网络)、经由存储区域网(SAN)(诸如光纤信道SAN)或经由I/O任何其他适合类型的网络和/或协议进行通信。
在一些实施方案中,计算机***900包括使用I/O接口930(例如,实施某个版本的***组件互连-高速(PCI-E)标准的总线或另一种互连,诸如QuickPath互连(QPI)或UltraPath互连(UPI))连接的一个或多个卸载卡970A或970B(包括一个或多个处理器975,并且可能包括一个或多个网络接口940)。例如,在一些实施方案中,计算机***900可用作托管诸如计算实例等计算资源的主机电子装置(例如,作为硬件虚拟化服务的一部分操作),并且一个或多个卸载卡970A或970B执行可管理在主机电子装置上执行的计算实例的虚拟化管理器。作为示例,在一些实施方案中,卸载卡970A或970B可执行计算实例管理操作,诸如暂停和/或取消暂停计算实例、启动和/或终止计算实例、执行存储器传送/拷贝操作等。在一些实施方案中,这些管理操作可由卸载卡970A或970B与计算机***900的其他处理器910A-910N执行的监控程序(例如,应来自监控程序的请求)协作执行。然而,在一些实施方案中,由卸载卡970A或970B实施的虚拟化管理器可顺应来自其他实体(例如,来自计算实例本身)的请求,并且可不与任何单独的监控程序协作(或不服务于任何单独的监控程序)。
在一些实施方案中,***存储器920可以是被配置成存储上文所述的程序指令和数据的计算机可访问介质的一个实施方案。然而,在其他实施方案中,可在不同类型的计算机可访问介质上接收、发送或存储程序指令和/或数据。通常来说,计算机可访问介质可包括非暂时性存储介质或存储器介质,诸如磁性或光学介质,例如经由I/O接口930耦合到计算机***900的磁盘或DVD/CD。非暂时性计算机可访问存储介质还可包括可包括在计算机***900的一些实施方案中作为***存储器920或另一类型的存储器的任何易失性或非易失性介质,诸如RAM(例如,SDRAM、双倍数据速率(DDR)SDRAM、SRAM等)、只读存储器(ROM)等。此外,计算机可访问介质可包括经由通信介质(诸如网络和/或无线链路)传递的传输介质或信号,诸如电信号、电磁信号或数字信号,所述通信介质诸如可经由网络接口940来实施。
本文中所论述或提出的各种实施方案可在各种各样的操作环境中实施,在一些情形中操作环境可包括可用于操作很多应用中的任一者的一个或多个用户计算机、计算装置或处理装置。用户装置或客户端装置可包括很多通用个人计算机中的任一者,诸如运行标准操作***的台式计算机或膝上型计算机以及运行移动软件并且能够支持许多联网和消息传递协议的蜂窝装置、无线装置和手持式装置。这种***还可包括许多工作站,所述工作站运行各种可商业购得的操作***和用于诸如开发和数据库管理等目的的其他已知应用中的任一者。这些装置还可包括其他电子装置,诸如虚设终端、瘦客户端、游戏***和/或能够经由网络通信的其他装置。
大多数实施方案利用本领域技术人员将熟悉的至少一种网络来支持使用各种广泛可用协议中的任一者进行通信,所述协议诸如包括传输控制协议/互联网协议(TCP/IP)、文件传送协议(FTP)、通用即插即用(UPnP)、网络文件***(NFS)、公共互联网文件***(CIFS)、可扩展消息传递现场协议(XMPP)、AppleTalk等。网络可包括例如局域网(LAN)、广域网(WAN)、虚拟专用网(VPN)、互联网、内联网、外联网、公共电话交换网(PSTN)、红外网络、无线网络及其任何组合。
在使用web服务器的实施方案中,web服务器可以运行各种服务器或中间层应用中的任一种,包括HTTP服务器、文件传送协议(FTP)服务器、公共网关接口(CGI)服务器、数据服务器、Java服务器、业务应用服务器等。服务器还能够响应来自用户装置的请求而执行程序或脚本,如通过执行可以实施为以任何编程语言(如C、C#或C++)或任何脚本语言(如Perl、Python、PHP或TCL)以及其组合写成的一个或多个脚本或程序的一个或多个Web应用。服务器还可包括数据库服务器,包括但不限于可从Oracle(R)、Microsoft(R)、Sybase(R)、IBM(R)等买到数据库服务器。数据库服务器可以是关系型的或非关系型的(例如“NoSQL”)、分布式的或非分布式的等。
本文中所公开的环境可包括各种数据存储区以及上文所讨论的其他存储器和存储介质。这些可驻留在各种位置中,诸如驻留在一个或多个计算机本地(和/或驻留在其中)的存储介质上,或驻留在跨网络远离计算机中的任一者或全部的存储介质上。在一组特定实施方案中,信息可驻留在本领域技术人员所熟悉的存储区域网(SAN)中。类似地,执行归属于计算机、服务器或其他网络装置的功能所需的任何文件可视情况存储在本地和/或远程地存储。在***包括计算机化装置的情况下,每个此种装置可包括可经由总线电耦合的硬件元件,所述元件包括例如至少一个中央处理单元(CPU)、至少一个输入装置(例如,鼠标、键盘、控制器、触摸屏或小键盘)和/或至少一个输出装置(例如,显示装置、打印机或扬声器)。此种***还可包括一个或多个存储装置,诸如磁盘驱动器、光学存储装置和固态存储装置(诸如随机存取存储器(RAM)或只读存储器(ROM))以及可移除介质装置、存储器卡、快闪卡等。
此种装置还可包括计算机可读存储介质读取器、通信装置(例如,调制解调器、网卡(无线或有线)、红外通信装置等)和上文所述的工作存储器。计算机可读存储介质读取器可与计算机可读存储介质连接或被配置成接纳计算机可读存储介质,所述计算机可读存储介质表示用于暂时地和/或更长久地含有、存储、传输和检索计算机可读信息的远程、本地、固定和/或可移除的存储装置以及存储介质。***和各种装置通常还将包括位于至少一个工作存储器装置内的许多软件应用、模块、服务或其他元件,包括操作***和应用程序,诸如客户端应用或网页浏览器。应明白,备选实施方案可具有与上述不同的许多变型。例如,还可使用自定义硬件,和/或特定元件可以硬件、软件(包括便携式软件,诸如小应用)或硬件与软件者来实施。此外,可采用与其他计算装置(诸如网络输入/输出装置)的连接。
用于含有代码或代码的一些部分的存储介质和计算机可读介质可包括本领域中已知或使用的任何适当的介质,包括存储介质和通信介质,诸如但不限于以任何方法或技术实施以用于存储和/或传输信息(诸如计算机可读指令、数据结构、程序模块或其他数据)的易失性和非易失性介质、可移除和不可移除介质介质,包括RAM、ROM、电可擦除可编程只读存储器(EEPROM)、快闪存储器或其他存储器技术、光盘-只读存储器(CD-ROM)、数字多功能磁盘(DVD)或其他光学存储器件、磁带盒、磁带、磁盘存储器件或其他磁性存储装置或可用于存储所期望信息并且可由***装置访问的任何其他介质。基于本公开和本文中所提供的教义,本领域的普通技术人员将了解实施各种实施方案的其他方式和/或方法。
在前述说明中,描述各种实施方案。出于解释目的,陈述了具体配置和细节以提供对实施方案的透彻理解。然而,本领域技术人员还将明白,可在没有具体细节的情况下实践实施方案。此外,为了不使所述实施方案变得模糊,可省略或简化众所周知的特征。
本文中使用带有虚线边框(例如,大破折号、小破折号、点破折号和点)的带括号文本和方框来示出了向一些实施方案添加另外特征的任选操作。然而,此类标记不应被视为意味着这些仅有选项或任选操作,和/或带有实线边框的方框在某些实施方案中不是任选。
具有后缀字母的参考编号(例如,818A-818N)可用于指示各种实施方案中可存在所提及实体的一个或多个实例,并且当存在多个实例时,每个实例无需相同,而是可共有一些一般特点或以常见的形式发挥作用。此外,所使用的特定后缀不意味着暗示存在特定数量的实体,除非有相反的具体指示。因此,在各种实施方案中,使用相同或不同后缀字母的两个实体可具有或可不具有相同数目个实例。
对于“一个实施方案”、“实施方案”、“示例性实施方案”等的提及指示所述实施方案可包括特定特征、结构或特性,但每个实施方案均可不必包括所述特定特征、结构或特性。此外,此类短语不一定是指同一实施方案。此外,当结合实施方案来描述特定特征、结构或特性时,应认为,无论是否有明确描述,结合其他实施方案来实施此类特征、结构或特性也在本领域技术人员的知识范围内。
此外,在上文所述的各种实施方案中,除非另有具体指出,否则旨在将诸如短语“A、B或C中的至少一者”等反意连接语理解为意指A、B或C或其任何组合(例如,A、B和/或C)。如此,反意连接语不旨在也不应被理解为暗示给定实施方案要求A中的至少一者、B中的至少一者或C中的至少一者各自均存在。
除非另有明确阐述,否则诸如“一个(a/an)”等冠词通常应理解为包括一个或多个所述项目。因此,诸如“被配置成……的装置”等短语旨在包括一个或多个表述的装置。此一个或多个表述的装置还可共同被配置成施行所阐述的表述。例如,“被配置成施行表述A、B和C的处理器”可包括被配置成施行表述A的第一处理器,所述第一处理器结合被配置成施行表述B和C的第二处理器工作。
可鉴于以下条款描述所公共技术的至少一些实施方案:
1.一种计算机实施方法,所述计算机实施方法包括:
由云提供商网络的策略分析服务接收确定公式是否是可满足的请求,其中所述公式与适用于与所述云提供商网络的用户相关联的一个或多个计算资源的一个或多个策略的分析相关,
基于所述公式中所包括的字符串变量来识别所述公式中的一组谓词,其中所述一组谓词中的每个谓词是所述公式中所含有的至少一个字符串变量的二进制值函数;
将与所述公式相关联的搜索空间拆分到多个子公式中,其中在假设所述一组谓词中的相应谓词为真或假的情况下所述多个子公式中的每个子公式包括所述公式;
将所述多个子公式中的相应子公式发送到在多个计算资源中的每一者上运行的可满足性模理论(SMT)解算器;
从在所述多个计算资源中的计算资源上运行的所述SMT解算器接收由在所述计算资源上运行的所述SMT解算器分析的所述相应子公式是可满足的指示;以及
使得显示指示所述公式是可满足的信息。
2.如条款1所述的计算机实施方法,所述计算机实施方法还包括识别所述公式中最频繁出现的字符串变量,并且其中所述一组谓词中的每个谓词包括所述字符串变量的实例。
3.如条款1-2中任一项所述的计算机实施方法,其中所述多个计算资源中的每个计算资源是以下各项中的一者:可独立执行线程、计算实例、容器或按需可执行功能。
4.一种计算机实施方法,所述计算机实施方法包括:
通过在第一计算资源上运行的协调器进程接收确定命题逻辑中所表达的公式是否是可满足的请求;
基于与所述公式中的一组谓词相关联的理论类型来识别所述一组谓词,其中所述一组谓词中的每个谓词是所述公式中所含有的至少一个理论变量的二进制值函数;
将与所述公式相关联的搜索空间拆分到多个子公式中,其中在假设所述一组谓词中的相应谓词为真或假的情况下所述多个子公式中的每个子公式包括所述公式;
将所述多个子公式中的相应子公式发送到在相应多个第二计算资源中的每一者上运行的可满足性模理论(SMT)解算器;
从在所述多个计算资源中的计算资源上运行的所述SMT解算器接收所述公式是可满足的指示;以及
传输指示所述公式是可满足的消息。
5.如条款4所述的计算机实施方法,其中所述理论类型是字符串理论并且所述理论变量是字符串变量,并且其中所述方法还包括识别所述公式中最频繁出现的理论变量,并且其中所述一组谓词中的每个谓词包括所述最频繁出现的理论变量的实例。
6.如条款4-5中任一项所述的计算机实施方法,其中所述多个计算资源中的每个计算资源是多个线程中的可独立执行线程,并且其中所述多个线程在一个或多个计算装置上执行。
7.如条款4-6中任一项所述的计算机实施方法,其中所述理论类型是以下各项中的至少一者:字符串理论、整数理论、实数算术理论、位向量理论、阵列理论或列表结构理论。
8.如条款4-7中任一项所述的计算机实施方法,其中所述多个计算资源中的每个计算资源是以下各项中的一者:由云提供商网络的硬件虚拟化服务提供的计算实例、由所述云提供商网络的容器服务提供的容器、或由所述云提供商网络的按需可执行代码服务提供的按需可执行功能。
9.如条款4-8中任一项所述的计算机实施方法,其中所述公式与以下各项中的至少一者相关:适用于与云提供商网络的用户相关联的一个或多个计算资源的策略的分析、计算机程序的正确性的分析或计算机网络配置的正确性的分析。
10.如条款4-9中任一项所述的计算机实施方法,其中所述公式的可满足性确定与由云提供商网络限定的账户或组织相关联的计算资源是否能够由在所述账户或所述组织外部的实体访问,并且其中指示所述公式是可满足的所述消息指示所述计算资源能够由在所述账户或所述组织外部的实体访问。
11.如条款4-10中任一项所述的计算机实施方法,其中所述请求识别由云提供商网络的身份和访问管理服务管理的策略,并且其中所述方法还包括通过将所述策略编码成一阶逻辑格式来产生所述公式。
12.如条款4-11中任一项所述的计算机实施方法,其中所述多个计算资源中的所述计算资源是第一计算资源并且所述指示是第一指示,并且其中所述公式是可满足的所述第一指示是在从所述多个计算资源中的第二计算资源接收第二指示之前从在所述第一计算资源上运行的所述SMT解算器接收到。
13.如条款4-12中任一项所述的计算机实施方法,所述计算机实施方法还包括:
接收确定一阶逻辑中所表达的第二公式是否是可满足的第二请求;
基于所述第二公式产生第二组谓词;
将与所述第二公式相关联的搜索空间拆分到第二多个子公式中;
将所述第二多个子公式中的相应子公式发送到在所述相应多个第二计算资源中的每一者上运行的所述SMT解算器;
从在所述多个计算资源中的计算资源上运行的每个SMT解算器接收所述相应子公式是不可满足的指示;以及
传输指示所述第二公式是不可满足的消息。
14.如条款4-12中任一项所述的计算机实施方法,所述计算机实施方法还包括:
接收确定一阶逻辑中所表达的第二公式是否是可满足的第二请求;
基于所述第二公式产生第二组谓词;
将与所述第二公式相关联的搜索空间拆分到第二多个子公式中;
将所述第二多个子公式中的相应子公式发送到在所述相应多个第二计算资源中的每一者上运行的所述SMT解算器;
接收在假设所述第二多个子公式中的特定子公式的相应谓词为真的情况下所述特定子公式是不可满足的第一指示和在假设所述第二多个子公式中的所述特定子公式的相应谓词为假的情况下所述特定子公式是不可满足的第二指示;以及
传输指示所述第二公式是不可满足的消息。
15.如条款4-14中任一项所述的计算机实施方法,所述计算机实施方法还包括:
基于与所述一组谓词中的每个谓词相关联的估计的计算复杂性来将所述一组谓词分组成多个谓词群组,其中所述搜索空间基于所述多个谓词群组来拆分。
16.如条款4-15中任一项所述的计算机实施方法,所述计算机实施方法还包括使得显示包括指示所述公式是可满足的信息的图形用户界面(GUI),其中所述信息指示使得所述公式是可满足的至少一个字符串变量的值。
17.如条款4-16中任一项所述的计算机实施方法,其中指示所述公式是可满足的所述消息用作另一SMT解算器的输入。
18.一种***,所述***包括:
第一一个或多个电子装置,所述第一一个或多个电子装置用于在多租户提供商网络中实施策略分析服务,其中所述策略分析服务包括在执行时使得所述策略分析服务进行以下操作的指令:
接收确定公式是否是可满足的请求,其中所述公式与适用于与所述多租户提供商网络的用户相关联的一个或多个计算资源的一个或多个策略的分析相关,
基于与所述公式相关联的理论类型来识别所述公式中的一组谓词,其中所述一组谓词中的每个谓词是所述公式中所含有的至少一个字符串变量的二进制值函数,
将与所述公式相关联的搜索空间拆分到多个子公式中,其中在假设所述一组谓词中的相应谓词为真或假的情况下所述多个子公式中的每个子公式包括所述公式,
将所述多个子公式中的相应子公式发送到在多个计算资源中的每一者上运行的可满足性模理论(SMT)解算器,
从在所述多个计算资源中的计算资源上运行的所述SMT解算器接收由在所述计算资源上运行的所述SMT解算器分析的所述相应子公式是可满足的指示,以及
传输指示所述公式是可满足的消息;以及
第二一个或多个电子装置,所述第二一个或多个电子装置用于在所述多租户提供商网络中实施所述SMT解算器,所述SMT解算器包括在执行时使得所述SMT解算器进行以下操作的指令:
接收所述多个子公式中的所述相应子公式,
确定所述子公式是否是可满足的,以及
发送所述相应子公式是可满足的所述指示。
19.如条款18所述的***,其中所述策略分析服务还包括在执行时使得所述策略分析服务识别所述公式中最频繁出现的字符串变量的指令,并且其中所述一组谓词中的每个谓词包括所述字符串变量的单个实例。
20.如条款18-19中任一项所述的***,其中所述多个计算资源中的每个计算资源是以下各项中的一者:由云提供商网络的硬件虚拟化服务提供的计算实例、由所述云提供商网络的容器服务提供的容器、或由所述云提供商网络的按需可执行功能服务提供的按需可执行功能。
因此,说明书和图式被视为具有说明意义而非限制意义。然而,将显而易见的,可对此做出各种修改和改变,而并不背离权利要求书中所陈述的本公开的更宽广的精神和范围。
Claims (15)
1.一种计算机实施方法,所述计算机实施方法包括:
通过在第一计算资源上运行的协调器进程接收确定命题逻辑中所表达的公式是否是可满足的请求;
基于与所述公式中的一组谓词相关联的理论类型来识别所述一组谓词,其中所述一组谓词中的每个谓词是所述公式中所含有的至少一个理论变量的二进制值函数;
将与所述公式相关联的搜索空间拆分到多个子公式中,其中在假设所述一组谓词中的相应谓词为真或假的情况下所述多个子公式中的每个子公式包括所述公式;
将所述多个子公式中的相应子公式发送到在相应多个第二计算资源中的每一者上运行的可满足性模理论(SMT)解算器;
从在所述多个计算资源中的计算资源上运行的所述SMT解算器接收所述公式是可满足的指示;以及
传输指示所述公式是可满足的消息。
2.如权利要求1所述的计算机实施方法,其中所述理论类型是字符串理论并且所述理论变量是字符串变量,并且其中所述方法还包括识别所述公式中最频繁出现的理论变量,并且其中所述一组谓词中的每个谓词包括所述最频繁出现的理论变量的实例。
3.如权利要求1-2中任一项所述的计算机实施方法,其中所述多个计算资源中的每个计算资源是多个线程中的可独立执行线程,并且其中所述多个线程在一个或多个计算装置上执行。
4.如权利要求1-3中任一项所述的计算机实施方法,其中所述理论类型是以下各项中的至少一者:字符串理论、整数理论、实数算术理论、位向量理论、阵列理论或列表结构理论。
5.如权利要求1-4中任一项所述的计算机实施方法,其中所述多个计算资源中的每个计算资源是以下各项中的一者:由云提供商网络的硬件虚拟化服务提供的计算实例、由所述云提供商网络的容器服务提供的容器、或由所述云提供商网络的按需可执行代码服务提供的按需可执行功能。
6.如权利要求1-5中任一项所述的计算机实施方法,其中所述公式与以下各项中的至少一者相关:适用于与云提供商网络的用户相关联的一个或多个计算资源的策略的分析、计算机程序的正确性的分析或计算机网络配置的正确性的分析。
7.如权利要求1-6中任一项所述的计算机实施方法,其中所述公式的可满足性确定与由云提供商网络限定的账户或组织相关联的计算资源是否能够由在所述账户或所述组织外部的实体访问,并且其中指示所述公式是可满足的所述消息指示所述计算资源能够由在所述账户或所述组织外部的实体访问。
8.如权利要求1-7中任一项所述的计算机实施方法,其中所述请求识别由云提供商网络的身份和访问管理服务管理的策略,并且其中所述方法还包括通过将所述策略编码成一阶逻辑格式来产生所述公式。
9.如权利要求1-8中任一项所述的计算机实施方法,其中所述多个计算资源中的所述计算资源是第一计算资源并且所述指示是第一指示,并且其中所述公式是可满足的所述第一指示是在从所述多个计算资源中的第二计算资源接收第二指示之前从在所述第一计算资源上运行的所述SMT解算器接收到。
10.如权利要求1-9中任一项所述的计算机实施方法,所述计算机实施方法还包括:
接收确定一阶逻辑中所表达的第二公式是否是可满足的第二请求;
基于所述第二公式产生第二组谓词;
将与所述第二公式相关联的搜索空间拆分到第二多个子公式中;
将所述第二多个子公式中的相应子公式发送到在所述相应多个第二计算资源中的每一者上运行的所述SMT解算器;
从在所述多个计算资源中的计算资源上运行的每个SMT解算器接收所述相应子公式是不可满足的指示;以及
传输指示所述第二公式是不可满足的消息。
11.如权利要求1-9中任一项所述的计算机实施方法,所述计算机实施方法还包括:
接收确定一阶逻辑中所表达的第二公式是否是可满足的第二请求;
基于所述第二公式产生第二组谓词;
将与所述第二公式相关联的搜索空间拆分到第二多个子公式中;
将所述第二多个子公式中的相应子公式发送到在所述相应多个第二计算资源中的每一者上运行的所述SMT解算器;
接收在假设所述第二多个子公式中的特定子公式的相应谓词为真的情况下所述特定子公式是不可满足的第一指示和在假设所述第二多个子公式中的所述特定子公式的相应谓词为假的情况下所述特定子公式是不可满足的第二指示;以及
传输指示所述第二公式是不可满足的消息。
12.如权利要求1-11中任一项所述的计算机实施方法,所述计算机实施方法还包括:
基于与所述一组谓词中的每个谓词相关联的估计的计算复杂性来将所述一组谓词分组成多个谓词群组,其中所述搜索空间基于所述多个谓词群组来拆分。
13.如权利要求1-12中任一项所述的计算机实施方法,所述计算机实施方法还包括使得显示包括指示所述公式是可满足的信息的图形用户界面(GUI),其中所述信息指示使得所述公式是可满足的至少一个字符串变量的值。
14.一种***,所述***包括:
第一一个或多个电子装置,所述第一一个或多个电子装置用于在多租户提供商网络中实施策略分析服务,其中所述策略分析服务包括在执行时使得所述策略分析服务进行以下操作的指令:
接收确定公式是否是可满足的请求,其中所述公式与适用于与所述多租户提供商网络的用户相关联的一个或多个计算资源的一个或多个策略的分析相关,
基于与所述公式相关联的理论类型来识别所述公式中的一组谓词,其中所述一组谓词中的每个谓词是所述公式中所含有的至少一个字符串变量的二进制值函数,
将与所述公式相关联的搜索空间拆分到多个子公式中,其中
在假设所述一组谓词中的相应谓词为真或假的情况下所述多个子公式中的每个子公式包括所述公式,
将所述多个子公式中的相应子公式发送到在多个计算资源中的每一者上运行的可满足性模理论(SMT)解算器,
从在所述多个计算资源中的计算资源上运行的所述SMT解算器接收由在所述计算资源上运行的所述SMT解算器分析的所述相应子公式是可满足的指示,以及
传输指示所述公式是可满足的消息;以及
第二一个或多个电子装置,所述第二一个或多个电子装置用于在所述多租户提供商网络中实施所述SMT解算器,所述SMT解算器包括在执行时使得所述SMT解算器进行以下操作的指令:
接收所述多个子公式中的所述相应子公式,
确定所述子公式是否是可满足的,以及
发送所述相应子公式是可满足的所述指示。
15.如权利要求14所述的***,其中所述策略分析服务还包括在执行时使得所述策略分析服务识别所述公式中最频繁出现的字符串变量的指令,并且其中所述一组谓词中的每个谓词包括所述字符串变量的单个实例。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/218,541 US11861409B2 (en) | 2021-03-31 | 2021-03-31 | Distributed decomposition of string-automated reasoning using predicates |
US17/218,541 | 2021-03-31 | ||
PCT/US2022/022646 WO2022212579A1 (en) | 2021-03-31 | 2022-03-30 | Distributed decomposition of string-automated reasoning using predicates |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116940931A true CN116940931A (zh) | 2023-10-24 |
Family
ID=81580272
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202280017743.2A Pending CN116940931A (zh) | 2021-03-31 | 2022-03-30 | 使用谓词的字符串自动推理的分布式分解 |
Country Status (5)
Country | Link |
---|---|
US (1) | US11861409B2 (zh) |
CN (1) | CN116940931A (zh) |
DE (1) | DE112022001944T5 (zh) |
GB (1) | GB2618928A (zh) |
WO (1) | WO2022212579A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20240202545A1 (en) * | 2022-12-15 | 2024-06-20 | Amazon Technologies, Inc. | An eager sat-based solver for a quantifier-free theory of strings and bit vectors |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8005661B2 (en) * | 2007-05-07 | 2011-08-23 | Nec Laboratories America, Inc. | Modeling and verification of concurrent systems using SMT-based BMC |
US8897820B2 (en) * | 2010-11-16 | 2014-11-25 | Jack L. Marovets | System, method, and apparatus for storing, transmitting, receiving, and using structured data using un-structured text message bodies |
US11829420B2 (en) * | 2019-12-19 | 2023-11-28 | Oracle International Corporation | Summarized logical forms for controlled question answering |
-
2021
- 2021-03-31 US US17/218,541 patent/US11861409B2/en active Active
-
2022
- 2022-03-30 DE DE112022001944.1T patent/DE112022001944T5/de active Pending
- 2022-03-30 GB GB2312513.1A patent/GB2618928A/en active Pending
- 2022-03-30 CN CN202280017743.2A patent/CN116940931A/zh active Pending
- 2022-03-30 WO PCT/US2022/022646 patent/WO2022212579A1/en active Application Filing
Also Published As
Publication number | Publication date |
---|---|
US20220318059A1 (en) | 2022-10-06 |
WO2022212579A1 (en) | 2022-10-06 |
GB2618928A (en) | 2023-11-22 |
GB202312513D0 (en) | 2023-09-27 |
DE112022001944T5 (de) | 2024-03-14 |
US11861409B2 (en) | 2024-01-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3805961B1 (en) | Systems and method for authenticating users of a data processing platform from multiple identity providers | |
US11044236B2 (en) | Protecting sensitive information in single sign-on (SSO) to the cloud | |
US9497184B2 (en) | User impersonation/delegation in a token-based authentication system | |
JP6411698B2 (ja) | アプリケーションの展開のためのカスタム通信チャネル | |
EP4018617B1 (en) | Managing permissions to cloud-based resources with session-specific attributes | |
JP2015537269A (ja) | Ldapベースのマルチテナント・インクラウド・アイデンティティ管理システム | |
US20170099281A1 (en) | Identity management over multiple identity providers | |
CN116391186B (zh) | 用于身份***中的角色可达性分析的组合推理技术 | |
CN116964997A (zh) | 基于意图的治理 | |
US10178183B2 (en) | Techniques for prevent information disclosure via dynamic secure cloud resources | |
US9641522B1 (en) | Token management in a managed directory service | |
US11334661B1 (en) | Security credential revocations in a cloud provider network | |
US11838296B1 (en) | Providing secure software project development environments | |
US11323477B1 (en) | Establishing secure connections to instances in private subnets of a cloud provider network | |
CN116940931A (zh) | 使用谓词的字符串自动推理的分布式分解 | |
US11134117B1 (en) | Network request intercepting framework for compliance monitoring | |
CN118339802A (zh) | 用于全球证书颁发的自定义规则 | |
US11509730B1 (en) | Analyzing web service frontends to extract security-relevant behavior information | |
US20240114035A1 (en) | Automated policy refiner for cloud-based identity and access management systems | |
US20240202545A1 (en) | An eager sat-based solver for a quantifier-free theory of strings and bit vectors | |
Schuller et al. | High-performance computing on the web: Extending unicore with restful interfaces | |
García et al. | Web-based service for remote execution: NGI network design application | |
Csibi | Integration of Virtual Machine Technologies for the support of Remote Development Units |
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 |