CN116400983B - 一种大规模插件的一体化管理方法及系统 - Google Patents
一种大规模插件的一体化管理方法及系统 Download PDFInfo
- Publication number
- CN116400983B CN116400983B CN202310665514.8A CN202310665514A CN116400983B CN 116400983 B CN116400983 B CN 116400983B CN 202310665514 A CN202310665514 A CN 202310665514A CN 116400983 B CN116400983 B CN 116400983B
- Authority
- CN
- China
- Prior art keywords
- plug
- execution
- tasks
- task
- ins
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000007726 management method Methods 0.000 title claims abstract description 44
- 238000000034 method Methods 0.000 claims abstract description 37
- 230000008569 process Effects 0.000 claims description 25
- 230000009471 action Effects 0.000 claims description 21
- 238000012795 verification Methods 0.000 claims description 13
- 238000012805 post-processing Methods 0.000 claims description 10
- 238000007781 pre-processing Methods 0.000 claims description 10
- 230000006854 communication Effects 0.000 claims description 9
- 238000004891 communication Methods 0.000 claims description 8
- 238000011161 development Methods 0.000 abstract description 6
- 230000008520 organization Effects 0.000 abstract description 4
- 239000000523 sample Substances 0.000 description 7
- 230000018109 developmental process Effects 0.000 description 5
- 238000012423 maintenance Methods 0.000 description 4
- 238000007689 inspection Methods 0.000 description 3
- 230000002708 enhancing effect Effects 0.000 description 2
- 238000009434 installation Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 230000008439 repair process Effects 0.000 description 2
- 238000013515 script Methods 0.000 description 2
- 230000002730 additional effect Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 231100000989 no adverse effect Toxicity 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000033772 system development Effects 0.000 description 1
- 230000000007 visual 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/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
- G06F9/44526—Plug-ins; Add-ons
-
- 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/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本申请实施例提供了一种大规模插件的一体化管理方法及系统,通过服务平台下发若干任务及需要执行所述若干任务对应插件的名称、插件的ID、插件的执行入口和插件执行所需参数至探针程序;所述探针程序根据需要执行所述若干任务对应插件的元信息分配对应的插件,所述插件中包含对应任务的执行逻辑;所述探针程序将所述若干任务和对应的待执行插件放入异步队列中,通过任务分发引擎从所述异步队列中获取所述若干任务对应的待执行插件;通过所述任务分发引擎根据不同的任务类型将所述若干任务分发给对应的执行引擎,所述执行引擎通过控制获取的所述若干任务对应的待执行插件执行所述若干任务;通过所述服务平台存储、管理和展示插件的执行对应任务结果。通过本申请的插件管理和组织方法可以降低开发、运维和管理成本。
Description
技术领域
本申请各实施例属于网络安全技术领域,具体涉及一种大规模插件的一体化管理方法的方法及系统。
背景技术
插件是指计算机软件领域中实现软件拓展的一种技术,适用于大型软件系统开发,便于增强软件的可拓展性、可移植性,同时降低软件维护成本。软件系统的发展带来了对软件扩展的需求,插件为增强软件的可扩展性和可移植性以及降低软件维护成本提供了一种方便的方法,但当需要管理数千个及更多的插件的时候,传统的插件管理方法无法实现有效管理,会遇到跨平台、安装、更新、环境依赖、兼容性和可靠性等多方面的问题进而无法实现对任务有效执行。
发明内容
为了解决或缓解现有技术存在的问题。
第一方面,本发明提供了一种大规模插件的一体化管理方法,包括:
通过服务平台下发若干任务及需要执行所述若干任务对应插件名称、插件ID、插件执行入口和插件执行所需参数至探针程序;
所述探针程序根据需要执行所述若干任务对应插件的元信息分配对应的插件,所述插件中包含对应任务的执行逻辑;
所述探针程序将所述若干任务和对应的待执行插件放入异步队列中,通过任务分发引擎从所述异步队列中获取所述若干任务对应的待执行插件;
通过所述任务分发引擎根据不同的任务类型将所述若干任务分发给对应的执行引擎,所述执行引擎通过控制获取的所述若干任务对应的待执行插件执行所述若干任务;
通过所述服务平台存储、管理和展示插件执行对应任务的结果。
作为本申请一优选实施例,所述探针程序根据需要执行所述若干任务对应插件的元信息分配对应的插件之前,包括:
用户通过所述服务平台发起更新所述探针程序上的当前插件的请求;
所述服务平台接收到所述用户的更新请求后,下发所述插件更新请求至探针程序;
所述探针程序通过插件ID判断本地是否存在执行所述若干任务的插件;
若存在,则进行插件版本验证和插件完整性验证;若不存在或插件版本不正确,则所述探针程序根据所述服务平台下发的所述若干任务对应插件的元信息从所述服务平台上下载对应的插件,并对下载后的插件进行完整性验证。
作为本申请一优选实施例,所述探针程序根据需要执行所述若干任务对应插件的元信息分配对应的插件之前,包括:
所述探针程序根据插件的输入参数结构对所述服务平台下发的需要执行所述若干任务的插件执行所需参数进行检查,若所述插件执行所需参数存在问题,则所述探针程序向所述服务平台返回错误信息,若所述插件执行所需参数符合要求,则所述任务执行引擎将所述插件执行所需参数转化为插件的输入参数结构分发给执行引擎。
作为本申请一优选实施例,所述插件的输入参数结构包含插件ID、插件名称、超时时间、任务ID,元信息和通用参数字段。
作为本申请一优选实施例,所述执行引擎执行过程包括预处理阶段、执行动作阶段和后处理阶段;
所述执行引擎通过所述预处理阶段检查当前执行环境是否满足执行动作阶段要求的基本条件;
所述执行引擎通过所述执行动作阶段根据插件中包含的对应任务的执行逻辑执行对应任务;
当执行任务过程对系统产生潜在影响时,则所述执行引擎通过所述后处理阶段消除执行任务过程中对系统产生的潜在影响;当所述执行任务过程中未对系统产生潜在影响时,则所述执行引擎不进行任何操作。
作为本申请一优选实施例,所述通过所述服务平台存储、管理和展示所述插件执行对应任务的结果,包括:
通过所述分发引擎将所述插件的执行结果进行汇总得到汇总信息;
通过上报引擎从所述分发引擎获得汇总信息,并将所述汇总信息转化为统一数据结构格式后,通过统一通信协议发送至服务平台进行存储、管理和展示。
作为本申请一优选实施例,所述插件的执行结果根据插件的输出参数结构进行输出,所述插件的输出参数结构包含任务ID、执行结果状态和通用输出字段,其中,任务ID与入参的任务ID字段一致。
作为本申请一优选实施例,插件文档说明与插件通过插件ID进行关联,所述若干任务与插件通过任务ID进行关联。
所述方法还包括:
所述服务平台实时通过在线升级平台检查是否有插件新版本更新包以便更新服务平台上的插件版本。
与现有技术相比,本申请实施例提供了一种插件执行任务的方法,通过服务平台下发若干任务及需要执行所述若干任务对应插件的名称、插件的ID、插件的执行入口和插件执行所需参数至探针程序;所述探针程序根据需要执行所述若干任务对应插件的元信息分配对应的插件,所述插件中包含对应任务的执行逻辑;所述探针程序将所述若干任务和对应的待执行插件放入异步队列中,通过任务分发引擎从所述异步队列中获取所述若干任务对应的待执行插件;通过所述任务分发引擎根据不同的任务类型将所述若干任务分发给对应的执行引擎,所述执行引擎通过控制获取的所述若干任务对应的待执行插件执行所述若干任务;通过所述服务平台存储、管理和展示插件执行对应任务的结果。通过本申请的插件管理和组织可以降低开发、运维和管理成本。
第二方面,本申请实施例还提供了一种插件执行任务系统,包括:
服务平台,用于下发若干任务及需要执行所述若干任务对应插件的名称、插件的ID、插件的执行入口和插件执行所需参数至探针程序,用于存储、管理和展示插件执行对应任务的结果。
探针程序,用于根据需要执行所述若干任务对应插件的元信息分配对应的插件,用于将所述若干任务和对应的待执行插件放入异步队列中;
任务分发引擎,用于从所述异步队列中获取所述若干任务对应的待执行插件;用于根据不同的任务类型将所述若干任务分发给对应的执行引擎;
执行引擎,用于通过控制获取的所述若干任务对应的待执行插件来执行所述若干任务;
插件,用于执行任务,所述插件中包含对应任务的执行逻辑。
与现有技术相比,本申请实施例第二方面提供的技术方案的有益效果与第一方面相同,在此不再赘述。
附图说明
图1是本发明实施例提供的一种插件执行任务的方法的流程示意图;
图2是本发明实施例提供的一种插件执行任务系统的结构示意图;
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定,后文将参照附图以示例性而非限制性的方式详细描述本申请的一些具体实施例。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获取的所有其他实施例,都应当属于本申请保护的范围。
第一方面,如图1所示,本申请实施例提供了一种插件执行任务的方法,包括:
步骤S01,通过服务平台下发若干任务及需要执行所述若干任务对应插件名称、插件ID、插件执行入口和插件执行所需参数至探针程序;
需要说明的是,通过服务平台可以进行的操作包括:查看插件当前版本、查看服务平台上可用的插件列表、选择服务平台上已有的某个插件版本进行应用、通过服务平台在线升级下载插件的可用新版本和安装离线升级包。
步骤S02,所述探针程序根据需要执行所述若干任务对应插件的元信息分配对应的插件,所述插件中包含对应任务的执行逻辑;
所述探针程序根据需要执行所述若干任务对应插件元信息分配对应的插件之前,包括:
用户通过所述服务平台发起更新所述探针程序上的当前插件的请求;
所述服务平台接收到所述用户的更新请求后,下发所述插件更新请求至探针程序;
所述探针程序通过插件ID判断本地是否存在执行所述若干任务的插件;
若存在,则进行插件版本验证和插件完整性验证;若不存在或插件版本不正确,则所述探针程序根据所述服务平台下发的所述若干任务对应插件的元信息从所述服务平台上下载对应的插件,并对下载后的插件进行完整性验证。
在本申请实施例中,插件的更新流程包括更新到服务平台和应用到探针两个阶段,服务平台的检查更新是指从在线升级平台检查是否有插件新版本更新包;服务平台的更新是指在线或离线安装插件新版本更新包;服务平台更新后若不选择应用更新操作则探针无法查询到插件版本更新。
用户通过服务平台选择应用某个插件版本后,则服务平台将应用某个插件元信息立刻下发给探针程序。所述插件元信息包括插件名称,插件ID,插件下载链接,哈希值等。
探针的检查更新指的是询问服务平台是否已应用与当前版本不同的更新包;探针的更新是指将服务平台当前应用的更新包下载到探针程序本地以替换探针程序本地的插件版本。如果有与当前所述插件版本不同的更新包,且用户通过服务平台发起更新请求,且点击应用新版本,服务平台才会下发插件更新请求。
在执行插件前会检查更新,且在执行任务前和插件更新后会对插件进行完整性验证,所述服务平台向所述探针程序下发插件更新请求的通信过程是通过双向认证的加密网络信道传输的,可保证通信双方的身份可信、机密性和完整性。
所述探针程序根据需要执行所述若干任务对应插件的元信息分配对应的插件之前,还包括:
所述探针程序根据插件的输入参数结构对所述服务平台下发的需要执行所述若干任务的插件执行所需参数进行检查,若所述插件执行所需参数存在问题,则所述探针程序向所述服务平台返回错误信息,若所述插件执行所需参数符合要求,则所述任务执行引擎将所述插件执行所需参数转化为插件的输入参数结构分发给执行引擎。
也就是说,所述探针程序在对若干任务分配插件之前,对所述服务平台下发的需要执行所述若干任务的插件执行所需参数进行检查,以确定所述若干任务的插件执行所需参数的正确性,以便所述任务执行引擎将所述插件执行所需参数转化为插件的输入参数结构分发给执行引擎。
步骤S03,所述探针程序将所述若干任务和对应的待执行插件放入异步队列中,通过任务分发引擎从所述异步队列中获取所述若干任务对应的待执行插件;
需要说明的是,通过服务平台下发若干任务时,同时需要将若干任务的参数下发给探针程序,当探针程序收到若干任务的参数后,将根据若干任务列表中每个任务对应的参数分配一个或多个插件,然后探针程序创建一个异步任务队列,异步地并发执行插件。通过异步队列可以方便任务分发引擎从异步队列中获取所述若干任务对应的待执行插件执行对应的任务。
步骤S04,通过所述任务分发引擎根据不同的任务类型将所述若干任务分发给对应的执行引擎,所述执行引擎通过控制获取的所述若干任务对应的待执行插件执行所述若干任务;
所述插件的输入参数结构包含插件ID、插件名称、超时时间、任务ID、元信息和通用参数字段。其中,插件ID是插件的唯一标识,插件名称是插件的人类可读名称,超时时间为当前任务最长执行时间,任务ID用于和服务平台任务进行对应,元信息包括名称,插件ID,下载链接,哈希值,通用参数字段是各个插件入参的不同部分。
所述探针程序根据以上插件的输入参数结构和输出参数结构管理若干任务的分发过程,由分发引擎根据不同的任务类型分发给不同的执行引擎管理,其中每个执行引擎对自己的执行过程负责,执行引擎的执行过程包括错误捕获、错误处理、超时处理、资源控制等。
所述服务平台下发的任务中包含若干参数,这些参数适合服务平台具体业务的形式组织,但与插件需要的形式不同,探针程序作为中间层将服务平台下发的参数根据插件声明的具体要求对任务中包含若干参数进行检查,若存在问题则向服务平台返回错误信息,若符合要求则转化为插件需要的参数结构后传递给插件。
所述执行引擎将执行过程划分为包括预处理阶段、执行动作阶段和后处理阶段在内的三个阶段;
所述执行引擎通过所述预处理阶段检查当前执行环境是否满足执行动作阶段要求的基本条件;
所述执行引擎通过所述执行动作阶段根据插件中包含的对应任务的执行逻辑执行对应任务;
当执行任务过程对系统产生潜在影响时,则所述执行引擎通过所述后处理阶段消除执行任务过程中对系统产生的潜在影响;当所述执行任务过程中未对系统产生潜在影响时,则所述执行引擎不进行任何操作。
具体的,执行引擎将执行过程抽象为预处理、执行动作、后处理三个阶段,由插件进行具体实现,其中,预处理阶段负责检查当前执行环境是否满足执行动作要求的基本条件以避免发生意料之外的错误;执行动作阶段执行任务所要求的特定于业务的实际逻辑;后处理阶段负责恢复执行动作期间可能产生的额外影响或意外结果,保证执行任务只产生预期的影响。
执行动作阶段期间可能指定了多个插件的判断动作,这些判断的结果组合成一个数组后,需要根据预先指定的条件判断这些动作执行结果的组合是否满足预期条件。
当得到异步队列中所有若干任务的预期值后,根据标准输出状态的组合判断整体任务的执行状态,需要运行一次运算,具体逻辑由伪代码进行展示。
步骤S05,通过所述服务平台存储、管理和展示插件执行对应任务的结果。
所述通过所述服务平台存储,管理和展示所述插件执行对应任务的结果,包括:
通过所述分发引擎将所述插件的执行结果进行汇总得到汇总信息;
通过上报引擎从所述分发引擎获得汇总信息,并对所述汇总信息格式转换后发送至服务平台进行存储、管理和展示。
本申请的所述插件的执行结果进行汇总过程是执行对应任务过程的一部分,发生在探针程序中。
所述插件的执行结果根据插件的输出参数结构进行输出,所述插件的输出参数结构包含任务ID、执行结果状态和通用输出字段,其中,任务ID与入参的任务ID字段一致。执行结果状态是一个表明了插件执行结果类别的枚举值,通用输出字段是各个插件出参的不同部分。其中执行结果状态分为成功、失败、不适用、错误、未定义五种情况。
插件文档说明与插件通过插件ID进行关联,所述任务与插件通过任务ID进行关联,通过上述关联可以将文档与任务的执行结果关联起来进行展示。
具体的,得到最终判断结果后将任务执行结果上报给服务平台进行可视化集中展示。展示中往往除了展示任务本身执行的相关信息之外,还需要展示具体任务关联到的动作的文档说明。这些文档说明包含的内容包括但不限于任务概述、任务执行原理、意外情况修复说明、其他额外信息等。在大规模插件管理中,这些文档的管理也是大规模的,而且与执行任务的插件需要共同维护,但是任务本身的执行过程不必使用这些文档,所以采取文档与插件同步维护,同步更新,使用同版本号与插件共同发布的模式进行管理。当执行插件的版本更新、回退、新增、删除时,文档会同步变化。这些文档虽然共同发布但存储在服务平台上,不与插件一同下发至探针程序。文档与插件通过插件ID进行关联,任务与插件通过任务ID进行关联,从而将文档与任务的执行结果关联起来进行展示。
本申请实施例通过探针程序为插件提供了跨平台的统一执行环境,以满足插件的适应性和兼容性需求,简化了插件的跨平台版本管理流程。通过提供一种统一的通信协议,规范化了插件的输入和输出公共字段格式,在保持灵活性的同时简化了插件功能和修复迭代带来的通信字段版本兼容性问题。插件版本管理流程统一在若干任务执行流程中,插件文档说明版本管理统一在服务平台安装插件更新包流程中、解耦了文档版本维护和插件版本维护流程。此外,本申请实施例还提供了相对独立的插件主动更新流程和插件文档说明展示流程等。通过上述共同构成了一种大规模插件的一体化管理方法,提供了大规模插件管理所需的兼容性、稳定性、灵活性,有效降低了开发、运维和管理成本。
以下以使用该大规模插件管理方法在实际场景中为例详细说明本申请的技术方案。
假设现在需要检查100台Linux主机的远程登录配置。在实际进行检查之前先对插件进行升级。使用服务平台上的在线更新下载最新的插件版本,然后应用该插件更新。更新成功后服务平台上所有相关的插件和插件关联的文档内容都更新到了最新版本。
假设现在想要确保这些主机root用户不能登录,且只有用户创建的普通用户可登录,且最大认证失败次数小于等于5,且认证失败后等待重新尝试的时间大于等于 30秒。那么我们可用选中这100台主机,然后指定这些检查对应的3个插件作为一个任务在主机安装的探针程序上运行。
以下是一个描述服务平台下发给探针的任务的参数示例(不包括插件参数部分):
{
"task_id": "T005",
"timestamp": "2023-02-24T10:00:00Z",
"timeout": "5m",
"plugins": [
{
"id": "P001",
"version": "1.0.0",
"download_url": "https://example.com/plugins/P001-1.0.0.tar.gz",
"hash": "7e7f3992f16e0a134038b924c2e9ab11f76daae9"
},
{
"id": "P002",
"version": "1.2.0",
"download_url": "https://example.com/plugins/P002-1.2.0.tar.gz",
"hash": "f503b4c04b7950301e219445feccfa0d34d34ba8"
},
{
"id": "P003",
"version": "2.1.0",
"download_url": "https://example.com/plugins/P003-2.1.0.tar.gz",
"hash": "6177370d7ac764bf91c8a3e9b9bde813718692e7"
}
],
"bool_mode": "AND"
}
其中的字段说明如下:
task_id:任务的唯一标识符。
timestamp:任务创建的时间戳。
timeout:任务超时时间,5 分钟后任务将被自动终止。
plugins:任务所需的插件列表,其中每个插件具有 id、version 和download_url三个字段,分别指定插件的唯一标识符、版本和下载地址。
bool_mode:用于定义多个插件执行结果的逻辑操作符,包括 AND 和 OR 两种方式。
在这个例子中,任务需要执行三个插件,分别是 P001、P002 和 P003。同时,bool_mode字段的值为 AND,表示只有当所有插件的执行结果都为 true 时,任务才会被视为成功。任务超时时间为 5 分钟,如果任务在这个时间内没有完成,它将被终止。
以下是针对所述检查要求下发给探针程序的参数的核心部分的三个插件的参数示例:
插件 1: 禁用root用户登录
{
"plugin_name": "Disable Root Login",
"plugin_id": "P001",
"task_id": "T001",
"timeout": "30s",
"notes": "This plugin disables root login on the host.",
"requirements": {
"description": "Root login must be disabled",
"commands": [
"grep -q '^PermitRootLogin' /etc/ssh/sshd_config&& sed -i 's/^PermitRootLogin.*/PermitRootLogin no/g' /etc/ssh/sshd_config || echo 'PermitRootLogin no' >> /etc/ssh/sshd_config",
"servicesshd reload"
]
}
}
插件 2: 只允许普通用户登录
{
"plugin_name": "Allow Only Regular Users to Login",
"plugin_id": "P002",
"task_id": "T002",
"timeout": "30s",
"notes": "This plugin allows only regular users to login to thehost.",
"requirements": {
"description": "Only regular users should be allowed to login",
"commands": [
"grep -q '^AllowUsers' /etc/ssh/sshd_config&& sed -i 's/^AllowUsers.*/AllowUsers *@*/g' /etc/ssh/sshd_config || echo 'AllowUsers *@*'>> /etc/ssh/sshd_config",
"servicesshd reload"
]
}
}
插件 3: 限制认证失败
{
"plugin_name": "Limit Authentication Failures",
"plugin_id": "P003",
"task_id": "T003",
"timeout": "30s",
"notes": "This plugin limits the number of authentication failuresto 5 and waits for 30 seconds between retries.",
"requirements": {
"description": "Authentication failures should be limited to 5 andretries should wait for 30 seconds",
"commands": [
"grep -q '^MaxAuthTries' /etc/ssh/sshd_config&& sed -i 's/^MaxAuthTries.*/MaxAuthTries 5/g' /etc/ssh/sshd_config || echo 'MaxAuthTries5' >> /etc/ssh/sshd_config",
"grep -q '^LoginGraceTime' /etc/ssh/sshd_config&& sed -i 's/^LoginGraceTime.*/LoginGraceTime 30s/g' /etc/ssh/sshd_config || echo 'LoginGraceTime 30s' >> /etc/ssh/sshd_config",
"servicesshd reload"
]
}
}
针对插件 1 的字段解释如下:
plugin_name:插件的名称,即 "Disable Root Login"。
plugin_id:插件的唯一标识符,即 "P001"。
task_id:该插件所属任务的唯一标识符,即 "T001"。
timeout:该插件的最大执行时间,即 30 秒。
notes:该插件的备注信息,即 "This plugin disables root login on thehost."。
requirements:该插件需要满足的要求,包括描述和命令两个字段。
description:该插件需要实现的目标,即 "Root login must be disabled"。
需要说明的是,虽然这里的实施例都是给出了要执行的命令,但实际上插件的执行逻辑不是只有执行命令这一种形式,包括但不限于使用Lua嵌入式脚本、WebAssembly插件、动态链接库插件等。
commands:该插件需要执行的命令列表,其中包括:
使用 grep 命令在 /etc/ssh/sshd_config文件需要说明的是,虽然这里的实施例都是给出了要执行的命令,但实际上插件的执行逻辑不是只有执行命令这一种形式,包括但不限于使用Lua嵌入式脚本、WebAssembly插件、动态链接库插件等。
查找是否存在以PermitRootLogin开头的行,如果找到则使用 sed 命令将该行的内容替换为PermitRootLogin no,如果找不到则在文件末尾添加一行PermitRootLoginno。使用 service 命令重新加载sshd服务的配置文件,使修改生效。
探针接收到任务后检查本地是否存在相关插件,若存在则检查版本。若不存在或版本不正确则从服务端提供的信息中下载正确的版本。载入插件完成后,以上3个任务将会被放入异步队列中执行。任务分发引擎从异步队列中取出待执行的插件,转化参数形式后分发给执行引擎。执行引擎取出任务带参数启动插件执行具体任务。
因为以上三个插件的检查步骤均为对SSH配置文件的检查,所以要求环境必须为Linux操作系统。又因为检查过程中对环境没有不良影响,无需进行后处理。在执行引擎实际调起插件执行动作之前将提前检查是否为Linux操作系统。
上述插件1的一个输出结果的示例如下:
{
"task_id": "T001",
"status": "success",
"output": {
"current_setting": {
"PermitRootLogin": "no"
},
"expect_setting": {
"PermitRootLogin": "no"
},
"is_matched": true
}
}
其中,各字段的含义如下:
task_id:任务的唯一标识符。
status:插件执行结果的状态,是一个表示插件执行结果类别的枚举值。常见的状态包括:
success:插件执行成功。
failed:插件执行失败。
unmatch:插件不适用于当前环境。
fault:插件执行过程中发生了错误。
unset:插件执行结果未定义。
output:插件的输出结果,是一个包含各个插件输出参数的对象。
current_setting:当前的设置值,是一个对象,包含了各个设置项的当前值。
expect_setting:期望的设置值,是一个对象,包含了各个设置项的期望值。
is_matched:表示当前的设置是否与期望的设置匹配,是一个布尔值。如果当前的设置与期望的设置完全一致,则为 true,否则为 false。在这个例子中,由于成功将PermitRootLogin设置为了 no,因此current_setting和expect_setting的值完全一致,所以is_matched为 true。
因为上述参数中bool_mode的值为 AND,所以这里判断结果必须全部满足要求,即所有的判断都为 True。假设以上三个插件的检查结果一个是 FAIL,其他都是 SUCCESS,那么经过上述的 reduce 运算后的结果为 FAIL,所以该由三个插件组成的任务的最终结果是 FAIL。
最终上报的结果的示例如下:
{
"trace_id": "001",
"status": "fail",
"output": {
"sub_tasks": [
{
"task_id": "T001",
"status": "success",
"output": {}
},
{
"task_id": "T002",
"status": "success",
"output": {}
},
{
"task_id": "T003",
"status": "fail",
"output": {
"current_setting": {
"MaxAuthTries": "6",
"LoginGraceTime": "30"
},
"expect_setting": {
"MaxAuthTries": "5",
"LoginGraceTime": "30"
},
"is_matched": false
}
}
]
}
}
服务平台得到以上上报结果后,将根据trace_id关联到创建的检查,用task_id关联到对应插件的任务,用对应插件的plugin_id取出相关文档并进行展示。
本申请的关键在于插件的管理方式,具体包括抽象基于插件的任务执行的关键共同步骤进行统一的设计和管理,同时分离执行逻辑、管理逻辑和展示部分来形成大规模插件管理系统的核心部分。
本申请实施例解决了兼容性和扩展性问题,大大降低了开发和维护成本。插件的运行环境是隔离的,任务执行的结果是一致的,增强了软件系统的可靠性和安全性,通过本申请的插件管理和组织可以降低开发、运维和管理成本。
本申请实施例提供了一种通过稳定统一的通信协议控制插件的安装、卸载、更新、执行、展示的方法,实际体现为在通过统一通信协议下发任务执行插件过程中,并添加额外的检查要素和交互流程以满足所有包括管理和任务执行在内的大规模插件管理需求。本申请在该交互流程之外还提供了独立的版本管理方法和任务执行结果展示方法以满足相关需求。通过本专利提供的方法解决了大规模插件的通信、版本管理、任务管理难题。
第二方面,如图2所示,本申请实施例还提供了一种插件执行任务系统,包括:
服务平台01,用于下发若干任务及需要执行所述若干任务对应插件的名称、插件的ID、插件的执行入口和插件执行所需参数至探针程序,用于展示插件执行对应任务的结果。
探针程序02,用于根据需要执行所述若干任务对应插件的元信息分配对应的插件,用于将所述若干任务和对应的待执行插件放入异步队列中;
任务分发引擎03,用于从所述异步队列中获取所述若干任务对应的待执行插件;用于根据不同的任务类型将所述若干任务分发给对应的执行引擎;
执行引擎04,用于通过控制获取的所述若干任务对应的待执行插件执行所述若干任务;
插件05,用于执行任务,所述插件中包含对应任务的执行逻辑。
本申请实施例提供的一种插件执行任务系统系统由服务平台、探针程序、任务分发引擎、执行引擎和插件组成,服务平台负责若干任务的组织、查询、管理、增加、修改、删除、结果展示;探针程序和插件程序的版本管理、更新、回退、安装、卸载等。探针程序接受服务平台下发若干任务,并利用任务分发引擎、执行引擎的功能通过控制插件实际运行这些若干任务,每个独立的任务都对应一个或多个插件。插件中包含对应任务的实际逻辑,在探针程序的控制下执行具体的任务要求。
最后应说明的是:以上各实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述各实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。
Claims (8)
1.一种大规模插件的一体化管理方法,其特征在于,包括:
通过服务平台下发若干任务及需要执行所述若干任务对应插件名称、插件ID、插件执行入口和插件执行所需参数至探针程序;
所述探针程序根据需要执行所述若干任务对应插件的元信息分配对应的插件,所述插件中包含对应任务的执行逻辑;
所述探针程序将所述若干任务和对应的待执行插件放入异步队列中,通过任务分发引擎从所述异步队列中获取所述若干任务对应的待执行插件;
通过所述任务分发引擎根据不同的任务类型将所述若干任务分发给对应的执行引擎,所述执行引擎通过控制所述若干任务对应的待执行插件执行所述若干任务;
通过所述服务平台存储、管理和展示插件的执行对应任务结果;
所述探针程序根据需要执行所述若干任务对应插件的元信息分配对应的插件之前,包括:
用户通过所述服务平台发起更新所述探针程序上的插件的请求;
所述服务平台接收到所述用户的更新请求后,下发所述插件更新请求至探针程序;
所述探针程序接收到所述更新请求后,通过插件ID判断本地是否存在执行所述若干任务的插件;
若存在,则进行插件版本验证和插件完整性验证;若不存在或插件版本不正确,则所述探针程序根据所述服务平台下发的所述若干任务对应插件的元信息从所述服务平台上下载对应的插件,并对下载后的插件进行完整性验证
所述执行引擎执行过程包括预处理阶段、执行动作阶段和后处理阶段;
所述执行引擎通过所述预处理阶段检查当前执行环境是否满足执行动作阶段要求的基本条件;
所述执行引擎通过所述执行动作阶段根据插件中包含的对应任务的执行逻辑执行对应任务;
当执行任务过程对系统产生潜在影响时,则所述执行引擎通过所述后处理阶段消除执行任务过程中对系统产生的潜在影响;当所述执行任务过程中未对系统产生潜在影响时,则所述执行引擎不进行任何操作。
2.如权利要求1所述的一种大规模插件的一体化管理方法,其特征在于,所述探针程序根据需要执行所述若干任务对应插件的元信息分配对应的插件之前,包括:
所述探针程序根据插件的输入参数结构对所述服务平台下发的需要执行所述若干任务的插件执行所需参数进行检查,若所述插件执行所需参数存在问题,则所述探针程序向所述服务平台返回错误信息,若所述插件执行所需参数符合要求,则所述任务执行引擎将所述插件执行所需参数转化为插件的输入参数结构分发给执行引擎。
3.如权利要求2所述的一种大规模插件的一体化管理方法,其特征在于,所述插件的输入参数结构包含插件ID、插件名称、超时时间、任务ID,元信息和通用参数字段。
4.如权利要求1所述的一种大规模插件的一体化管理方法,其特征在于,所述通过所述服务平台存储、管理和展示所述插件执行对应任务的结果,包括:
通过所述分发引擎将所述插件的执行结果进行汇总得到汇总信息;
通过上报引擎从所述分发引擎获得汇总信息,并将所述汇总信息转化为统一数据结构格式后,通过统一通信协议发送至服务平台进行存储、管理和展示。
5.如权利要求4所述的一种大规模插件的一体化管理方法,其特征在于,所述插件的执行结果根据插件的输出参数结构进行输出,所述插件的输出参数结构包含任务ID、执行结果状态和通用输出字段,其中,插件的输出参数结构任务ID与插件的输入参数结构的任务ID字段一致。
6.如权利要求4所述的一种大规模插件的一体化管理方法,其特征在于,插件文档说明与插件通过插件ID进行关联,所述若干任务与插件通过任务ID进行关联。
7.如权利要求1所述的一种大规模插件的一体化管理方法,其特征在于,所述方法还包括:
所述服务平台实时通过在线升级平台检查是否有插件新版本更新包以便更新服务平台上的插件版本。
8.一种大规模插件管理执行任务系统,其特征在于,包括:
服务平台,用于下发若干任务及需要执行所述若干任务对应插件名称、插件ID、插件执行入口和插件执行所需参数至探针程序,用于存储、管理和展示插件执行对应任务的结果;
探针程序,用于根据需要执行所述若干任务对应插件的元信息分配对应的插件,用于将所述若干任务和对应的待执行插件放入异步队列中;
任务分发引擎,用于从所述异步队列中获取所述若干任务对应的待执行插件;用于根据不同的任务类型将所述若干任务分发给对应的执行引擎;
执行引擎,用于通过控制获取的所述若干任务对应的待执行插件来执行所述若干任务;
插件,用于执行任务,所述插件中包含对应任务的执行逻辑;
所述探针程序根据需要执行所述若干任务对应插件的元信息分配对应的插件之前,包括:
用户通过所述服务平台发起更新所述探针程序上的插件的请求;
所述服务平台接收到所述用户的更新请求后,下发所述插件更新请求至探针程序;
所述探针程序接收到所述更新请求后,通过插件ID判断本地是否存在执行所述若干任务的插件;
若存在,则进行插件版本验证和插件完整性验证;若不存在或插件版本不正确,则所述探针程序根据所述服务平台下发的所述若干任务对应插件的元信息从所述服务平台上下载对应的插件,并对下载后的插件进行完整性验证
所述执行引擎执行过程包括预处理阶段、执行动作阶段和后处理阶段;
所述执行引擎通过所述预处理阶段检查当前执行环境是否满足执行动作阶段要求的基本条件;
所述执行引擎通过所述执行动作阶段根据插件中包含的对应任务的执行逻辑执行对应任务;
当执行任务过程对系统产生潜在影响时,则所述执行引擎通过所述后处理阶段消除执行任务过程中对系统产生的潜在影响;当所述执行任务过程中未对系统产生潜在影响时,则所述执行引擎不进行任何操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310665514.8A CN116400983B (zh) | 2023-06-07 | 2023-06-07 | 一种大规模插件的一体化管理方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310665514.8A CN116400983B (zh) | 2023-06-07 | 2023-06-07 | 一种大规模插件的一体化管理方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116400983A CN116400983A (zh) | 2023-07-07 |
CN116400983B true CN116400983B (zh) | 2023-08-11 |
Family
ID=87009086
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310665514.8A Active CN116400983B (zh) | 2023-06-07 | 2023-06-07 | 一种大规模插件的一体化管理方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116400983B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104166590A (zh) * | 2013-05-20 | 2014-11-26 | 阿里巴巴集团控股有限公司 | 一种实现任务调度的方法及系统 |
CN113176996A (zh) * | 2021-04-29 | 2021-07-27 | 深信服科技股份有限公司 | 故障处理方法、引擎、插件化探针、设备及可读存储介质 |
CN114327678A (zh) * | 2021-12-29 | 2022-04-12 | 中电福富信息科技有限公司 | 一种支持多引擎的实时数据处理系统及方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10922215B2 (en) * | 2018-04-16 | 2021-02-16 | Servicenow, Inc. | Feature toggling using a plugin architecture in a remote network management platform |
-
2023
- 2023-06-07 CN CN202310665514.8A patent/CN116400983B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104166590A (zh) * | 2013-05-20 | 2014-11-26 | 阿里巴巴集团控股有限公司 | 一种实现任务调度的方法及系统 |
CN113176996A (zh) * | 2021-04-29 | 2021-07-27 | 深信服科技股份有限公司 | 故障处理方法、引擎、插件化探针、设备及可读存储介质 |
CN114327678A (zh) * | 2021-12-29 | 2022-04-12 | 中电福富信息科技有限公司 | 一种支持多引擎的实时数据处理系统及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN116400983A (zh) | 2023-07-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6854112B2 (en) | System and method for the automatic installation and configuration of an operating system | |
US11561784B2 (en) | Versioning of pipeline templates for continuous delivery of services on datacenters configured in cloud platforms | |
JP3385590B2 (ja) | コンピュータ・ネットワークを通してコンピュータ・プログラムを更新する場合に使用するためのソフトウエア更新プログラムを記録したコンピュータ読み取り可能な記録媒体 | |
US8578371B2 (en) | Software distribution method and system with automatic prerequisite installation | |
US6202207B1 (en) | Method and a mechanism for synchronized updating of interoperating software | |
US7937697B2 (en) | Method, system and computer program for distributing software patches | |
US8893106B2 (en) | Change analysis on enterprise systems prior to deployment | |
US20040060035A1 (en) | Automated method and system for building, deploying and installing software resources across multiple computer systems | |
US10656971B2 (en) | Agile framework for vertical application development and delivery | |
US20110138374A1 (en) | Downtime reduction for enterprise manager patching | |
US7966612B2 (en) | Method, system and computer program for installing shared software components | |
US8464246B2 (en) | Automation of mainframe software deployment | |
US20020124245A1 (en) | Method and apparatus for advanced software deployment | |
US20100049959A1 (en) | Method and system for configuration of componentized software applications | |
US20040088397A1 (en) | System and method for management of software applications | |
MXPA05001673A (es) | Esquema a base de etiqueta para disribuir metadatos de actualizacion en un sistema de distribucion de actualizacion. | |
US9459859B2 (en) | Template derivation for configuration object management | |
US20220236975A1 (en) | Optimized compilation of pipelines for continuous delivery of services on datacenters configured in cloud platforms | |
US9626251B2 (en) | Undo configuration transactional compensation | |
US20120096453A1 (en) | Software Package Management Mechanism | |
CN118012453A (zh) | 软件部署方法、装置、电子设备、存储介质和程序产品 | |
CN116400983B (zh) | 一种大规模插件的一体化管理方法及系统 | |
Cisco | Cisco NSM 4.2 Installation and Licensing Guide | |
CN111897794A (zh) | 数据库的维护方法、装置、电子设备和存储介质 | |
CN115840572A (zh) | 一种版本包的部署管理方法、装置、电子设备及存储介质 |
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 |