用于软件部署配置的签名的实施的制作方法

文档序号:34259102发布日期:2023-05-25 04:13阅读:26来源:国知局
用于软件部署配置的签名的实施的制作方法
用于软件部署配置的签名的实施


背景技术:

1.本发明总体上涉及软件部署领域,并且更具体地涉及软件部署配置数据的签名的实施。
2.软件部署包括使软件系统可供使用的所有活动。通常,软件部署的两个必要项目是内容和配置。配置是指配置应用被部署的方式以及应用一旦被部署就如何操作的数据。配置文件用于配置应用或容器的参数和初始设置。示例配置文件包括yaml ain’t markup language(yaml)和playbooks。是红帽(redhat)公司或其子公司在美国和其他国家的商标或注册商标。
3.密码签名技术(如数字签名)是用于验证数字消息或文档的真实性的数学方案。有效的数字签名给出了相信文档由签名者创建或编辑并且消息在传送中不被更改的强大原因。数字签名采用非对称密码并且可向通过非安全信道发送的消息或文档提供一层验证和安全性。数字签名处理通常涉及三种算法。密钥生成算法在接收到私钥连同其对应的公钥时生成签名。签名算法在接收到私钥和正被签名的消息或数据时产生签名。验证算法通过验证消息连同签名和公钥来检查消息的真实性。


技术实现要素:

4.本发明的实施例的多个方面公开了一种方法、计算机程序产品和计算机系统。处理器在将软件部署到节点之前拦截与软件相关联的部署资源,其中部署资源配置软件是如何部署和操作的。处理器验证所述部署资源内存在的数字签名的真实性。响应于验证所述数字签名的真实性,处理器根据所述部署资源将所述软件部署到所述节点。
附图说明
5.现在将参考附图仅通过举例来描述本发明的实施例,在附图中:图1示出了根据本发明实施例的云计算节点。图2示出了根据本发明的实施例的云计算环境。图3示出了根据本发明的实施例的抽象模型层。图4示出了根据本发明的实施例的计算环境的框图。图5是示出根据本发明实施例的在部署资源中创建数字签名的操作步骤的流程图。图6是示出根据本发明实施例的用于在部署资源中验证数字签名的操作步骤的流程图。图7是根据本发明的实施例的示例准入策略。图8是根据本发明的实施例的示例部署资源。图9是根据本发明的实施例的另一示例部署资源。
具体实施方式
6.软件部署包括待部署的软件(即,内容)和配置数据。配置数据和相关联的部署元数据(在本文中统称为部署资源)可包括敏感数据,该敏感数据配置应用被部署的方式以及一旦应用被部署时应用如何操作。本发明的实施例认识到,在软件部署中,当前没有方法来验证配置数据和相关联的部署元数据的来源和完整性。本发明的实施例还认识到,内容和部署资源的验证对于软件平台的安全性是至关重要的。本发明的实施例提供了一种用于使用密码签名技术来对软件部署配置和/或元数据部署资源进行签名的方法。系统然后可以依赖于密码签名技术来验证部署资源的来源和完整性,并且确定签名是否符合准入策略。随后,这样的验证可以用于根据所提供的部署资源来确定是否部署软件。
7.应当理解的是,虽然本公开包括关于云计算的详细描述,但本文所陈述的传授内容的实现方式不限于云计算环境。相反,本发明的实施例能够结合现在已知的或以后开发的任何其他类型的计算环境来实现。
8.云计算是一种服务交付模型,用于使得能够方便地、按需地访问可配置计算资源的共享池(例如。网络、网络带宽、服务器、处理、存储器、存储、应用、虚拟机和服务),其能够以最小的管理努力或与服务的提供商的交互快速地供应和释放。该云模型可以包括至少五个特性、至少三个服务模型和至少四个部署模型。
9.特点如下:按需自助服务:云消费者可以单方面地根据需要自动地提供计算能力,诸如服务器时间和网络存储,而不需要与服务的提供者的人类交互。广泛的网络接入:能力可通过网络获得并且通过标准机制接入,该标准机制促进异构瘦客户机平台或厚客户机平台(例如,移动电话、膝上型计算机和pda)的使用。资源池:提供者的计算资源被池化以使用多租户模型来服务于多个消费者,其中不同的物理和虚拟资源根据需要动态地指派和重新指派。存在位置独立性的感觉,因为消费者通常不具有对所提供的资源的确切位置的控制或了解,但可能能够以较高抽象级别(例如,国家、州或数据中心)指定位置。快速弹性:能够快速和弹性地提供能力,在一些情况下自动地快速缩小和快速释放以快速放大。对于消费者而言,可用于供应的能力通常显得不受限制并且可以在任何时间以任何数量购买。测量的服务:云系统通过在适合于服务类型(例如,存储、处理、带宽和活动用户账户)的某个抽象级别处利用计量能力来自动控制和优化资源使用。可以监视、控制和报告资源使用,为所利用的服务的提供者和消费者提供透明度。
10.服务模型如下:软件即服务(saas):提供给消费者的能力是使用在云基础设施上运行的提供者的应用。可通过诸如web浏览器(例如,基于web的电子邮件)之类的瘦客户端接口从不同客户端设备访问应用。消费者不管理或控制包括网络、服务器、操作系统、存储或甚至单独的应用能力的底层云基础设施,可能的例外是有限的用户特定应用配置设置。平台即服务(paas):提供给消费者的能力是将消费者创建的或获取的使用由提供商支持的编程语言和工具创建的应用部署到云基础设施上。消费者不管理或控制包括网络、服务器、操作系统或存储的底层云基础设施,但是对所部署的应用和可能的应用托管环
境配置具有控制。基础设施即服务(iaas):提供给消费者的能力是提供处理、存储、网络和消费者能够部署和运行任意软件的其他基本计算资源,所述软件可以包括操作系统和应用。消费者不管理或控制底层云基础设施,而是具有对操作系统、存储、所部署的应用的控制以及对所选联网组件(例如,主机防火墙)的可能受限的控制。
11.部署模型如下:私有云:云基础架构仅为组织运作。它可以由组织或第三方管理,并且可以存在于场所内或场所外。社区云:云基础架构被若干组织共享并支持共享了关注(例如,任务、安全要求、策略、和合规性考虑)的特定社区。它可以由组织或第三方管理,并且可以存在于场所内或场所外。公共云:使云基础架构对公众或大型行业组可用,并且由出售云服务的组织拥有。混合云:云基础架构是两个或更多个云(私有、社区或公共)的组合,这些云保持唯一实体但通过使数据和应用能够移植的标准化或专有技术(例如,云突发以用于云之间的负载平衡)绑定在一起。
12.云计算环境是面向服务的,集中于无状态、低耦合、模块化和语义互操作性。云计算的核心是包括互连节点网络的基础设施。
13.现在参见图1,示出了云计算节点的示例的示意图。云计算节点10仅仅是合适的云计算节点的一个示例,并不旨在对本文所述的本发明的实施例的使用或功能的范围提出任何限制。无论如何,云计算节点10能够被实现和/或执行上文阐述的任何功能。
14.在云计算节点10中,存在计算机系统/服务器12,该计算机系统/服务器与许多其他通用或专用计算系统环境或配置一起运行。可以适用于计算机系统/服务器12的公知的计算系统、环境和/或配置的示例包括但不限于个人计算机系统、服务器计算机系统、瘦客户机、厚客户机、手持式或膝上型设备、多处理器系统、基于微处理器的系统、机项盒、可编程消费电子产品、网络pc、小型计算机系统、大型计算机系统和包括上述任何系统或设备的分布式云计算环境等。
15.计算机系统/服务器12可以在由计算机系统执行的计算机系统可执行指令(如程序模块)的一般背景下进行描述。一般而言,程序模块可包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、逻辑、数据结构等。计算机系统/服务器12可以在分布式云计算环境中实践,其中任务由通过通信网络链接的远程处理设备执行。在分布式云计算环境中,程序模块可以位于包括存储器存储设备的本地和远程计算机系统存储介质中。
16.如图1中所示,云计算节点10中的计算机系统/服务器12以通用计算设备的形式示出。计算机系统/服务器12的组件可以包括但不限于一个或多个处理器或处理单元16、系统存储器28和将包括系统存储器28的不同系统组件耦合到处理器16的总线18。
17.总线18表示若干类型的总线结构中的任何一种或多种,包括存储器总线或存储器控制器、外围总线、加速图形端口、以及使用各种总线架构中的任一种的处理器或局部总线。作为示例而非限制,此类体系结构包括工业标准体系结构(isa)总线、微通道体系结构(mca)总线、增强型isa(eisa)总线、视频电子标准协会(vesa)局部总线以及外围组件互连(pci)总线。
18.计算机系统/服务器12典型地包括多种计算机系统可读介质。这样的介质可以是可由计算机系统/服务器12访问的任何可用介质,并且其包括易失性和非易失性介质、可移动和不可移动介质。
19.系统存储器28可以包括呈易失性存储器形式的计算机系统可读介质,如随机存取存储器(ram)30和/或高速缓存存储器32。计算机系统/服务器12可以进一步包括其他可移动/不可移动、易失性/非易失性计算机系统存储介质。仅通过示例的方式,存储系统34可以被提供用于从不可移动、非易失性磁介质(未示出,并且通常被称为“硬盘驱动器”)中读取和向其写入。尽管未示出,可以提供用于从可移动非易失性磁盘(例如,“软盘”)读取或向其写入的磁盘驱动器,以及用于从可移动非易失性光盘(如cd-rom、dvd-rom或其他光学介质)读取或向其写入的光盘驱动器。在这样的情况下,每一个可以通过一个或多个数据介质接口连接到总线18。如以下将进一步描绘和描述的,存储器28可以包括具有被配置为执行本发明的实施例的功能的一组(例如,至少一个)程序模块的至少一个程序产品。
20.具有一组(至少一个)程序模块42的程序/实用程序40、以及操作系统、一个或多个应用程序、其他程序模块、和程序数据可以通过举例而非限制的方式存储在存储器28中。操作系统、一个或多个应用程序、其他程序模块和程序数据中的每一个或它们的一些组合可以包括网络环境的实现方式。程序模块42通常执行如本文所描述的本发明的实施例的功能和/或方法。
21.计算机系统/服务器12也可以与一个或多个外部设备14(如键盘、定点设备、显示器24等)通信;和/或使得计算机系统/服务器12能够与一个或多个其他计算设备通信的任何设备(例如,网卡、调制解调器等)。这种通信可经由输入/输出(i/o)接口22进行。此外,计算机系统/服务器12可以通过网络适配器20与一个或多个网络通信,例如局域网(lan)、通用广域网(wan)和/或公共网络(例如互联网)。如图所示,网络适配器20通过总线18与计算机系统/服务器12的其他组件通信。应当理解,虽然未示出,但是其他硬件和/或软件组件可以与计算机系统/服务器12结合使用。示例包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、raid系统、磁带驱动器和数据归档存储系统等。
22.现在参见图2,描绘了说明性云计算环境50。如图所示,云计算环境50包括云消费者使用的本地计算设备可以与其通信的一个或多个云计算节点10,本地计算设备诸如例如个人数字助理(pda)或蜂窝电话54a、台式计算机54b、膝上型计算机54c和/或汽车计算机系统54n。节点10可彼此通信。它们可以物理地或虚拟地分组(未示出)在一个或多个网络中,诸如如上所述的私有云、社区云、公共云或混合云、或其组合。这允许云计算环境50提供基础设施、平台和/或软件作为云消费者不需要为其维护本地计算设备上的资源的服务。应当理解,图2所示的计算设备54a-n的类型仅旨在是说明性的,并且计算节点10和云计算环境50可通过任何类型的网络和/或网络可寻址连接(例如,使用网络浏览器)与任何类型的计算机化设备通信。
23.现在参见图3,示出了由云计算环境50(图2)提供的一组功能抽象层。应事先理解,图3中所示的组件、层和功能仅旨在是说明性的,并且本发明的实施例不限于此。如所描述,提供以下层和对应功能:
24.硬件和软件层60包括硬件和软件组件。硬件组件的示例包括:大型机61;基于risc(精简指令集计算机)架构的服务器62;服务器63;刀片服务器64;存储设备65;以及网络和
联网组件66。在一些实施例中,软件组件包括网络应用服务器软件67和数据库软件68。
25.虚拟化层70提供抽象层,从该抽象层可以提供虚拟实体的以下示例:虚拟服务器71;虚拟存储器72;虚拟网络73,包括虚拟专用网络;虚拟应用和操作系统74;以及虚拟客户端75。
26.在一个示例中,管理层80可以提供以下描述的功能。资源供应81提供用于在云计算环境内执行任务的计算资源和其他资源的动态采购。计量和定价82在云计算环境内利用资源时提供成本跟踪,并为这些资源的消费开账单或发票。在一个示例中,这些资源可以包括应用软件许可证。安全性为云消费者和任务提供身份验证,以及为数据和其他资源提供保护。用户门户83为消费者和系统管理员提供对云计算环境的访问。服务水平管理84提供云计算资源分配和管理,使得满足所需的服务水平。服务水平协议(sla)规划和履行85提供根据sla预期未来需求的云计算资源的预安排和采购。
27.工作负载层90提供可以利用云计算环境的功能的示例。可以从该层提供的工作负荷和功能的示例包括:地图和导航91;软件开发和生命周期管理92;虚拟课堂教育交付93;数据分析处理94;交易处理95;和移动桌面96。
28.图4是示出了根据本发明的一个实施例的计算环境的功能框图,该计算环境总体上表示为400。计算环境400是云计算环境50的架构的一个示例的部分描绘,如参见图2所描述的。图4仅提供了一个实施例的图示并且不暗示关于其中可以实现不同实施例的环境的任何限制。
29.在所描绘的实施例中,计算环境400包括通过网络410互连的服务器420和一个或多个节点480。网络410可以是局域网(lan)、诸如互联网的有线局域网(wan)、公共交换电话网(pstn)、它们的任何组合、或将支持服务器420和节点480之间的通信的连接和协议的任何组合。网络410可以包括有线、无线或光纤连接。计算环境400可以包括附加的服务器、计算设备或未示出的其他设备。
30.服务器420可以是管理服务器、网络服务器、或能够接收和发送数据的任何其他电子装置或计算系统。在一些实施例中,服务器420可以是膝上型计算机、平板计算机、个人计算机(pc)、台式计算机、或能够经由网络410与节点480通信的任何可编程电子设备。在一个实施例中,服务器420表示云计算环境(诸如云计算环境50(见图2))的节点(诸如节点10)。在一些实施例中,服务器420可以表示利用集群计算机和组件充当单个无缝资源池的服务器计算系统。在所描绘的实施例中,服务器420至少包含部署程序430、签名功能440、验证功能450、软件460和准入策略470。
31.节点480可以是管理服务器、网络服务器、或能够接收和发送数据的任何其他电子装置或计算系统。在一些实施例中,(多个)节点480可以是膝上型计算机、平板计算机、上网本计算机、个人计算机(pc)、台式计算机、或能够经由网络410与服务器420通信的任何可编程电子设备。在一个实施例中,节点480是用于访问云计算环境50和/或与云计算环境50通信的计算设备(诸如计算设备54a-54n)的一个示例。在另一实施例中,节点480表示云计算环境(诸如云计算环境50(参见图2))的节点(诸如节点10)。在一些实施例中,节点480可表示例如在云计算环境中利用多个计算机作为服务器系统的服务器计算系统。在一些实施例中,节点480表示利用集群计算机和组件充当单个无缝资源池的计算系统。在所描绘的实施例中,节点480包括软件490。虽然被描绘为多个节点,但是在不同实施例中,(多个)节点480
可以表示一个或任何其他数量的节点。
32.在一个实施例中,服务器420和节点480是环境的一部分,其中服务器420表示主节点,并且节点480表示一个或多个工作节点。在这样的实施例中,验证功能450可以是主节点内的应用编程接口(api)服务器的一部分。
33.部署程序430在服务器420上执行。部署程序430可以是专用部署程序、集成在另一程序内的功能(诸如编排或软件部署程序)、或者能够与节点480通信并且提供用于与部署资源交互和创建/实施部署资源的加密签名的用户接口的任何其他程序或功能。在其他实施例中,部署程序430可以驻留在其他装置上,条件是部署程序430可以与软件460、准入策略470和节点480通信。部署程序430可以包括签名功能440和验证功能450。
34.签名功能440操作以接收对有待签名的部署资源的一个或多个区段的选择、对所选择的区段进行加密、以及将签名附加到所述部署资源上。签名功能440可以是部署程序430的函数,或者可以是独立程序。在一个实施例中,签名功能440驻留在服务器420上。在其他实施例中,签名功能可以驻留在另一个服务器或另一个计算装置上,条件是签名功能440是部署程序430可访问的并且具有对软件460和/或准入策略270的访问。
35.验证功能450操作以在部署软件之前拦截部署资源,并且验证部署资源内存在的签名是否符合准入策略。验证功能450可以是部署程序430的函数,或者可以是独立程序。在环境中,验证功能450可以被实现为准入控制器。准入控制器是拦截对api服务器的请求的一段代码。在一个实施例中,验证功能450驻留在服务器420上。在其他实施例中,验证功能450可驻留在另一服务器或另一计算装置上,条件是验证服务器可由部署程序430访问并且可访问软件460和准入策略470。
36.软件460可以是可以由部署程序430和签名功能440写入和读取的储存库并且可以是验证功能450可访问的。软件460可包括例如软件和部署资源,诸如配置文件(例如,yaml、playbooks)和相关联的元数据。软件内容可以包括例如虚拟机和容器镜像。通常,软件460可以包括能够部署到节点480的内容和配置数据的任何组合。软件460可以是例如数据库。
37.准入策略470可以是可由部署程序430写入和读取并且可由签名功能440和/或验证功能450访问的储存库。准入策略470可以包括用于部署软件资源的一个或多个准入策略。通常,准入策略指定了需要满足以便部署软件的特定区段或整个配置文件的签名要求。更具体地,准入策略470可以指定配置文件的特定区段和用于每个特定区段的所需签名。图7中描绘了示例准入策略。每个准入策略可以经由一些标识手段(例如,电子邮件地址或用户标识)来指定一个或多个个体。准入策略还指定特定路径,其指示配置文件的需要由所识别的个体签名的区段。准入策略可以指定签名区段所需的任何数量的特定个体,或者如果例如不需要签名,则可以不指定任何个体。在一些实施例中,如果列出多个用户,则要求每个列出的个体签署该区段。在其他实施例中,如果列出多个用户,则列出的个体中的至少一个被要求签署该区段。适用的准入策略可以基于诸如客户端、目标节点、软件类型之类的因素而改变。在一些实施例中,准入策略是手动输入的,但客户端或实体负责部署。
38.软件490可以是在满足已经由验证功能450验证的可应用的准入策略要求之后由部署程序430部署的软件。软件490可以是例如容器、虚拟机、应用程序或能够部署的任何其他软件。
39.图5描绘了根据本发明的一个实施例的在图1-4的计算环境内执行的用于向部署资源(如配置文件)添加数字签名的签名功能的步骤的流程图500。
40.在一个实施例中,首先,管理用户创建或编辑部署资源,如与有待部署的软件(如存储在软件460处的软件)相对应的配置文件。这样的配置文件的实例在图8和9中示出。配置文件可以是例如yaml文件。通常,配置文件用于配置要部署的软件的参数和初始设置。本发明的各实施例认识到向部署资源(诸如配置文件)提供密码签名技术的重要性,因为这样的部署资源可包含配置应用程序或其他软件被部署的方式并在部署之后操作的敏感数据。配置文件可以包括多个区段和组织结构,该组织结构可以允许管理用户选择配置文件内的具体区段。
41.在步骤510中,签名功能440接收部署资源内的一个或多个区段的要签名的区段的选择。在一些实例中,签名用户可选择所有区段,或指定整个文件将被签名。然而,在其他实例中,签名用户可选择部署资源的一个或多个区段。所选区段表示签名用户旨在验证或保证包含在每个所选区段的内容中的工作产品的部署资源的区段。在一些实例中,所选择的区段可以对应于用户已经编辑或创建的区段。在其他实例中,所选择的章节可以对应于用户已经审阅的区段。可以通过点记号、斜线记号、或通过其他手段来识别所选择的区段。在一些实施例中,签名功能440提供文本输入选项以提供这样的符号。在其他实施例中,签名功能440可允许用户利用图形用户界面和例如光标突出显示或选择部署资源的一个或多个区段。
42.在步骤520中,签名功能440将所选择的区段加密为一个或多个摘要和/或加密消息。在一些实施例中,单向散列函数用于为每个所选区段创建消息摘要。消息摘要是由散列函数计算的消息内容的固定大小的数字表示。消息摘要可被加密,形成数字签名。照此,在其他实施例中,用私钥对创建的消息摘要进行加密,以创建数字签名。在这样的实施例中,在验证部署资源之前,对应的公共密钥(i)已经被使得验证功能450可访问,或者(ii)将被使得验证功能450可访问。在一些实施例中,将对应的公钥存储到准入策略470。
43.在步骤530中,签名功能440将数字签名附加到部署资源。应注意,在仅需要消息摘要的实施例中,将消息摘要而非数字签名附加到资源。在需要数字签名的实施例中,数字签名被附加到部署资源。在一些实施例中,数字签名作为注释被附加在部署资源的元数据的顶层处。然而,本发明的实施例认识到,数字签名可附加在部署资源的任何位置处。除了数字签名,签名功能440还可包括什么区段和/或属性被包括在签名内的描述。换言之,数字签名证明了对哪些区段的验证。对什么区段被包括在签名内的描述可以采用任何格式,诸如但不限于点符号或斜线符号。例如,如果配置文件是yaml文件,则点符号可以用于描述到与签名相关联的yaml文件的区段的路径。
44.附加的数字签名充当一种保护和验证配置和部署元数据的来源和完整性的方式,并且可以被验证功能450用于验证一个或多个要求方或个人签名的存在和真实性。
45.图6描绘了根据本发明的一个实施例的验证功能450的步骤的流程图600,该验证功能在图1.4的计算环境内执行以用于在软件部署之前相对于准入策略验证部署资源(如配置文件)的签名。
46.在一个实施例中,首先,将来自软件460的软件部署至一个或多个节点。已创建准入策略并将其存储到准入策略470,所述准入策略指定用于与软件部署相关联的一个或多
个区段(或整个配置文件)的签名要求。此外,如果正在使用数字签名,那么与准入策略所需的个体相关联的一个或多个公钥对于验证功能450可以是可访问的,并且在一些实施例中,这样的公钥也被存储到准入策略470的储存库或对于验证功能450可访问的另一数据库/储存库。
47.在步骤610中,验证功能450在部署相应软件之前拦截部署资源。在一些实施例中,验证功能450是帷入控制器。准入控制器是在对象的持久性之前、但在请求被认证和授权之后截取对api服务器的请求的一段代码。在本发明的实施例中,验证功能450将作为验证控制器操作。验证控制器可能不修改它们准许的对象。在其他环境中,验证功能450可以是部署程序430的任何函数,其操作以在部署对应的软件之前拦截部署资源。
48.在步骤620中,验证功能450识别部署所需的签名。验证功能450可访问先前存储的准入策略,诸如存储到准入策略470的先前存储的准入策略。如前所述,准入策略对应于特定软件、与软件将被部署到的节点480相关联的客户端、开发/部署团队、或在发起部署之前已经建立并存储在准许策略中的其他因素。验证功能450可以从相关联的准入策略中提取所需要的一个或多个签名和与那些签名相关联的任何相关联的区段。
49.在决策630中,验证功能450确定签名是否存在并且在所拦截的部署资源中被验证。验证功能450比较配置文件或其他部署资源中存在的签名,并且确定是否存在所需的签名。此外,验证功能450利用与每个签名相关联的散列算法和/或公钥来识别签名是否有效。签名的验证通过对数据应用散列函数并使用签名者的公钥解密签名来完成。如果所产生的散列相等,则签名可被确认为有效。如参考签名功能440所描述的,验证功能450基于所附路径或区段的其他描述确定哪些区段与签名相关联。在一些实施例中,准入策略可指定一个区段可能需要多个签名。在其他实施例中,准入策略可以指定以下签名中的至少一个签名对于特定区段是必需的。不是所有区段都需要签名验证。
50.如果验证功能450确定所有必要的签名存在并且被验证(判定630,是分支),则验证功能450允许根据配置和部署参数将软件部署到(多个)节点480(步骤640),从而使得软件490在相关联的(多个)节点480上操作。
51.如果验证功能450确定必要的签名并非全部存在和/或不是所有的必要的签名可被验证为可信的(判定630,否分支),则验证功能阻止将软件部署到(多个)节点480。在一些实施例中,除了防止部署发生之外,验证功能450可产生错误或其他通知。这种错误或通信可传递至与部署相关联的管理用户、与期望部署软件的每个节点480相关联的用户和/或其他用户。在一些实施例中,通知可包括关于什么导致软件不能被部署的细节。例如,验证功能450可以指定从部署资源缺失的所需签名和/或不能被认证或验证的签名。认证或验证签名的失败可意味着在签名者创建签名之后,与签名相关联的区段被修改。这样的通知可以向负责部署软件的管理用户提供细节,以更好地使他们能够纠正部署资源的任何问题,在必要时重新指定各个区段,并且尝试再次部署软件。
52.图7示出了用于实施图8和9所示出的部署资源的签名要求的示例准入策略700。
53.准入策略700示出了包括签名要求的五个区段。更具体地,“spec.repeats”、“spec.template.metadata.*”、“spec.template.spec.container.image”、“spec.template.spec.container.ports”和“spec.template,spec.container,env.*”。指定区段的路径
以点符号书写,但是本发明的实施例认识到可以利用其他类型的符号或描述性手段以识别区段。“*”充当通配符并且表示,例如,元数据标题的所有子区段将被签名。每个区段还包括出现在冒号之后的那个区段的签名要求。如所描绘的,一些区段要求单个签名,而其他区段要求来自多个所列出的签名的至少一个签名(其中“或”被描绘为“||”)。虽然未描绘,但在准入策略700中,其他准入策略可列出针对特定区段的多个签名,且要求在部署软件之前获得所有所列签名。例如,虽然不包括在准入策略700中,但是要求多个签名的策略可以是“spec.template.spec.container.ports:bobsmith@foo.com和&aliejones@foo.com”(其中,“and”被描绘为“&&”)。
54.图8示出了示例配置文件或部署资源,本文被称为部署资源800。如所描述的,部署资源800对应于准入策略700并且是将通过验证功能450的验证的部署资源的示例。
55.部署资源800包括已经作为注释附加到部署资源800的签名区段810,并且签名区段810包括与准入策略700的要求相对应的数字签名和路径。每个签名包括(i)指定已被签名的区段的路径、签名者标识标签(在所描绘的示例中,签名者标识标签是电子邮件地址)以及被描绘为长字符串的加密签名。如上所述,使用散列算法和/或签名者的私钥来生成经加密的签名。签名已由签名功能440附加到部署资源800并且可由验证功能450由来自储存库准入策略470的访问准入策略700来验证。验证功能450可利用与签名者相关联的公钥来验证加密签名是合法的,并且相关联区段中的数据未被修改。
56.当将部署资源800与准入策略700比较时,由准入策略700指定的所有签名要求都将显现。假设验证功能450能够验证签名的完整性,部署资源800将能够在软件部署过程期间用于配置软件。
57.相比之下,图9示出了将不满足准入策略700的要求的部署资源900。在审阅签名区段910时,签名920指定“bobsmith@foo.com”,而准入策略700对于区段“spec.template.metadata.*”要求来自“chrissbuck@foo.com”的签名。因此,验证功能450将确定来自准入策略700的所需签名缺失,并且将阻止部署资源900用于配置被调度为部署到节点480的对应软件。此外,虽然未描绘,但部署资源900还可能遇到无法验证的签名。例如,如果所需的签名被添加,并且然后在添加签名之后,来自相关联区段的数据被修改,则签名将不再有效,因为区段的内容的改变将导致验证过程期间的失配。在这种情况下,验证功能450将再次确定由于无效签名而不能为软件部署处理部署资源。
58.如先前所描述的,验证功能450可以生成描述部署资源900中的缺陷的错误或通知。在这个具体示例中,验证功能450可以生成通知,该通知标识“bobsmith@foo.com”已经签署部署资源900的“spec.template.metadata.*”区段并且准入策略700需要来自“chrissbuck@foo.com”的数字签名。进一步,假设验证功能450确定另一签名无效,验证功能450将导致该通知以识别无效签名。这样的信息可以由管理用户利用来解决缺陷并且更新部署资源900,使得其满足准入策略700的签名要求。
59.虽然图8和9被描绘为yaml配置文件,但是应该注意的是,本发明的不同实施例可以利用任何类型的部署资源或配置文件。
60.本发明可以是在集成的任何可能的技术细节水平上的系统、方法、和/或计算机程序产品。计算机程序产品可包括其上具有用于使处理器执行本发明的各方面的计算机可读程序指令的计算机可读存储介质(或多个介质)。
61.计算机可读存储介质可以是可以保留和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质可以是,例如但不限于,电子存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备、或者上述的任意合适的组合。计算机可读存储介质的更具体示例的非穷尽列表包括以下各项:便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、静态随机存取存储器(sram)、便携式紧凑盘只读存储器(cd-rom)、数字通用盘(dvd)、记忆棒、软盘、诸如穿孔卡之类的机械编码设备或具有记录在其上的指令的槽中的凸出结构、以及上述各项的任何合适的组合。如本文所使用的计算机可读存储介质不应被解释为暂时性信号本身,例如无线电波或其他自由传播的电磁波、通过波导或其他传输介质传播的电磁波(例如,穿过光纤电缆的光脉冲)或通过电线发射的电信号。
62.本文所描述的计算机可读程序指令可以经由网络(例如,互联网、局域网、广域网和/或无线网络)从计算机可读存储介质下载至相应的计算/处理装置或者下载至外部计算机或外部存储装置。网络可以包括铜传输电缆、光传输纤维、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配器卡或网络接口接收来自网络的计算机可读程序指令,并转发计算机可读程序指令以存储在相应计算/处理设备内的计算机可读存储介质中。
63.用于执行本发明的操作的计算机可读程序指令可以是汇编指令、指令集架构(isa)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、集成电路的配置数据、或以一种或多种程序设计语言的任何组合编写的源代码或目标代码,这些程序设计语言包括面向对象的程序设计语言(诸如smalltalk、c++等)和过程程序设计语言(诸如“c”程序设计语言或类似程序设计语言)。计算机可读程序指令可以完全地在用户计算机上执行、部分在用户计算机上执行、作为独立软件包执行、部分在用户计算机上部分在远程计算机上执行或者完全在远程计算机或服务器上执行。在后一种情况下,远程计算机可通过任何类型的网络(包括局域网(lan)或广域网(wan))连接至用户计算机,或者可连接至外部计算机(例如,使用互联网服务提供商通过互联网)。在一些实施例中,包括例如可编程逻辑电路、现场可编程门阵列(fpga)或可编程逻辑阵列(pla)的电子电路可以通过利用计算机可读程序指令的状态信息来使电子电路个性化来执行计算机可读程序指令,以便执行本发明的各方面。
64.本文参照根据本发明的实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本发明的多个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
65.这些计算机可读程序指令可以被提供给计算机的处理器、或其他可编程数据处理装置以便产生机器,这样使得经由计算机的处理器或其他可编程数据处理装置执行的这些指令创建用于实现在流程图和/或框图的或多个框中指定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置、和/或其他设备以特定方式工作,从而,其中存储有指令的计算机可读存储介质包括包含实现流程图和/或框图中的或多个方框中规定的功能/动作的方面的指令的制造品。
66.这些计算机可读程序指令还可以被加载到计算机、其他可编程数据处理装置、或
其他设备上,以便使得在该计算机、其他可编程装置或其他设备上执行一系列操作步骤以产生计算机实现的过程,从而使得在该计算机、其他可编程装置、或其他设备上执行的指令实现流程图和/或框图的或多个框中所指定的功能/动作。
67.附图中的流程图和框图展示了根据本发明的不同实施例的系统、方法和计算机程序产品的可能实现方式的架构、功能和操作。对此,流程图或框图中的每个框可表示指令的模块、段或部分,其包括用于实现指定的逻辑功能的一个或多个可执行指令。在一些备选实现中,框中标注的功能可以不按照图中标注的顺序发生。例如,连续示出的两个方框实际上可以作为一个步骤完成,同时、基本上同时、以部分或完全时间上重叠的方式执行,或者方框有时可以以相反的顺序执行,这取决于所涉及的功能。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作或执行专用硬件与计算机指令的组合的专用的基于硬件的系统来实现。
68.已经出于说明的目的呈现了对本发明的不同实施例的描述,但并不旨在是详尽的或限于所公开的实施例。在不背离本发明的范围和精神的情况下,许多修改和变化对于本领域普通技术人员来说是显而易见的。本文所使用的术语被选择来最好地解释实施例的原理、实际应用、或优于市场中所发现的技术的技术改进、或使得本领域普通技术人员能够理解本文所公开的实施例。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1