本发明涉及通信技术领域,尤其涉及一种堡垒机自动部署方法、装置、设备及介质。
背景技术:
随着企业的迅猛发展,企业内部的运维混乱现象越来越常见,以企业的账号运维安全管理为例,在企业中经常会有多人共用一个账号的现象,多人共用一个账号不仅容易泄露账号信息,也容易出现越权操作的问题。因此,企业开始使用堡垒机作为其运维和安全审计的系统,以解决企业运维混乱的问题。
现有堡垒机的购买及部署是独立分开的,即用户在官网购买堡垒机产品,客服人员再根据用户选择的堡垒机配置去主机管理平台上部署相应的堡垒机,最后交付部署好的堡垒机给用户使用。堡垒机服务部署的过程较长,且用户无法第一时间获取到购买的堡垒机产品。
技术实现要素:
为了克服现有技术的不足,本发明的目的之一在于提供一种堡垒机自动部署方法,以解决部署堡垒机服务用时较长的问题。
本发明的目的之一采用以下技术方案实现:
一种堡垒机自动部署方法,包括以下步骤:
接收堡垒机订单信息,存储所述订单信息中的堡垒机配置参数;
将所述堡垒机配置参数预处理为api参数,并根据所述api参数生成数字签名;
将所述数字签名及所述api参数发送给服务端;
调用所述服务端的api接口,所述api接口为所述服务端创建堡垒机服务的api接口;
生成所述堡垒机服务的访问域名。
进一步地,接收堡垒机订单信息,存储所述订单信息中的堡垒机配置参数,具体包括:
将所述堡垒机配置参数的参数名、所述堡垒机参数的参数值以key-value的形式存储。
进一步地,将所述堡垒机配置参数组成url格式字符串,所述url格式字符串即为所述api参数;
使用密钥,所述密钥包括私钥与公钥;
通过所述私钥对所述api参数进行签名,得到所述数字签名。
进一步地,将所述堡垒机配置参数预处理为api参数,并根据所述api参数生成数字签名,包括以下步骤:
将所述堡垒机配置参数按预设排序规则进行排序;
将排序后的所述堡垒机配置参数组成url格式字符串;所述url格式字符串即为所述api参数;
使用密钥,所述密钥包括私钥与公钥;
对所述api参数进行哈希加密,得到第一数字签名;
用所述私钥对所述的第一数字签名进行加密,得到第二数字签名;
使用base64对所述的第二数字签名进行编码,得到所述的数字签名。
进一步地,将所述数字签名及所述api参数发送给服务端,包括以下步骤:
接收验证结果,所述验证结果为所述api参数是否被篡改的验证结果;
当验证结果为验证通过时,调用所述服务端的api接口;
当验证结果为验证失败时,返回错误信息。
进一步地,使用密钥,所述密钥包括私钥与公钥,还包括以下步骤:
接收验证结果,所述验证结果为所述服务端的ip验证结果;
当验证通过时,使用密钥,所述密钥包括私钥与公钥。
进一步地,生成所述堡垒机服务的访问域名,还包括以下步骤:
随机生成所述堡垒机服务的访问域名,并储存在域名数据库中;
将所述访问域名配置到nginx服务器上。
本发明的目的之二在于提供一种堡垒机自动部署装置,其提供一种堡垒机自动部署方法,以解决部署堡垒机服务用时较长的问题。
本发明的目的之二采用以下技术方案实现:
一种堡垒机自动部署装置,其包括:
订单接收模块,用于接收堡垒机订单信息,存储所述订单信息中的堡垒机配置参数;
签名生成模块,用于将所述堡垒机配置参数预处理为api参数,并根据所述api参数生成数字签名;
发送模块,用于将所述数字签名及所述api参数发送给服务端;
api调用模块,用于调用所述服务端的api接口,所述api接口为所述服务端创建堡垒机服务的api接口;
域名生成模块,用于生成所述堡垒机服务的访问域名。
本发明的目的之三在于提供执行发明目的之一的电子设备,其包括处理器、存储介质以及计算机程序,所述计算机程序存储于存储介质中,所述计算机程序被处理器执行时实现上述的堡垒机自动部署方法。
本发明的目的之四在于提供存储发明目的之一的计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述的堡垒机自动部署方法。
相比现有技术,本发明的有益效果在于:
本发明将堡垒机配置参数预处理为api参数,服务端根据api参数就可以完成动态配置堡垒机参数,通过调用服务端提供的api接口就可以实现堡垒机服务的自动创建;用户通过生成的访问域名就可以接入堡垒机服务,实现了堡垒机的自动部署,提高了堡垒机的部署效率及用户体验,并且通过数字签名,保证了配置参数传输的完整性,防止参数在传递过程中被篡改。
附图说明
图1是实施例一的堡垒机自动部署方法的流程图;
图2是实施例二的生成数字签名方法的流程图;
图3是实施例三的生成数字签名方法的流程图;
图4是实施例四的生成访问域名方法的流程图;
图5是实施例五的堡垒机自动部署装置的结构框图;
图6是实施例六的电子设备的结构框图。
具体实施方式
以下将结合附图,对本发明进行更为详细的描述,需要说明的是,以下参照附图对本发明进行的描述仅是示意性的,而非限制性的。各个不同实施例之间可以进行相互组合,以构成未在以下描述中示出的其他实施例。
实施例一
实施例一提供了一种堡垒机自动方法,旨在通过动态配置堡垒机服务器的参数信息,调用api接口,以实现堡垒机的自动部署。
随着云技术的发展,传统的硬件,或者软硬件结合的堡垒机逐渐被云堡垒机替代。云堡垒机的计算能力以及安全防护能力都高于传统堡垒机,且成本更低。云堡垒机服务器根据参数就可以创建相应的堡垒机服务,用户通过访问相应的api接口就可以实现堡垒机服务的接入。
需要说明的是,本实施例中出现的服务端指的是具有云堡垒机服务功能的服务端,该服务端可以完成堡垒机创建、数字签名验证等相关操作,通常服务端是存储有堡垒机管理平台的服务器。
请参照图1所示,一种堡垒机自动部署方法,其特征在于,包括以下步骤:
s110、接收堡垒机订单信息,存储所述订单信息中的堡垒机配置参数;
上述的堡垒机订单信息通常包含较多内容,例如用户信息、ip地址、用户选择的配置参数信息等。创建堡垒机服务时,只需要提取上述订单信息中的配置参数信息就可以完成堡垒机服务的创建,本实施例所提供的堡垒机自动部署方法,由于只涉及堡垒机服务创建的相关方法,因此只需要存储订单信息中的堡垒机配置参数。
存储堡垒机的配置参数时,需要对堡垒机配置参数按照服务端的识别顺序进行排序,以便于服务端对配置参数进行识别。
根据上述原理,接收堡垒机订单信息,存储所述订单信息中的堡垒机配置参数,具体为:
将所述堡垒机配置参数的参数名、所述堡垒机参数的参数值以key-value的形式存储。
该key-value存储方式以创建一个单核cpu的堡垒机为例,需要的堡垒机配置参数的参数名为“cpu”,参数值为内核数量“1”,则将cpu作为key值,1作为value值,以key-value键值对的形式对所述堡垒机配置参数进行存储。上述key-value键值对的存储方式适用于多种存储工具,针对不同的软件编程语言而言,其适用的键值对存储工具也不同,例如c++的stl的映射容器(mapcontainer)、java的hashmap以及python的字典类型等都是键值对存储工具,因此,在本实施例中,不限定存储所述key-value键值对的存储工具,具体根据服务端的编程语言,选择相应的键值对存储工具进。
s120、将所述堡垒机配置参数预处理为api参数,并根据所述api参数生成数字签名;
由于服务端通过提供api接口以便于创建堡垒机服务,因此需要将配置参数转换为api参数,以便于服务端根据api参数创建相应配置的堡垒机服务,配置参数的预处理方式是根据api参数的传递方式进行确定,通常api参数的传递有url(request-url)和body(request-body)两种方式,因此根据具体的api参数传递方式,可以将堡垒机配置参数预处理为url格式的api参数或者body体格式的api参数。
在s120中,通过生成数字签名可以保证api参数在传递过程中的完整性。由于接收堡垒机订单信息的服务器和云堡垒机所在的服务器是不同的服务器,因此api参数在传递过程中有可能会被篡改,所以通过生成的数字签名能验证配置参数是否被篡改。
本实施例中不对生成数字签名的具体方法进行限定,但是需要满足服务端可以对生成的数字签名进行验证。
s130、将所述数字签名及所述api参数发送给服务端;
将api参数及数字签名都发送给服务端以便于服务端进行验证,具体地,将所述的数字签名及所述的api参数发送给服务端,包括以下步骤:
接收验证结果,所述验证结果为所述api参数是否被篡改的验证结果;
当验证结果为验证通过时,调用所述服务端的api接口;
当验证结果为验证失败时,返回错误信息。
服务端通过对数字签名进行验证,以确定配置参数是否被篡改。
s140、调用所述服务端创建的api接口,所述api接口为所述服务端创建堡垒机服务的api接口;
s150、生成所述堡垒机服务的访问域名。
用户通过生成的访问域名就可以连入堡垒机服务,实现堡垒机服务的访问。
实施例二
实施例二是在实施例一基础上进行的。
请参照图2所示,将所述堡垒机配置参数预处理为api参数,并根据所述api参数生成数字签名,具体包括以下步骤:
s210、将所述堡垒机配置参数组成url格式字符串,所述url格式字符串即为所述api参数;
s220、使用密钥,所述密钥包括私钥与公钥;
s230、用所述私钥对所述的api参数进行签名,得到所述的数字签名。
本实施例选用url传递(request-url)方式进行api参数的传输,因此使用配置参数按照顺序组成url格式的字符串,该url格式字符串即为api参数,服务端通过识别该api参数,就可以自动创建堡垒机服务并提供相应的api接口;此过程需要将配置参数中的特殊字符进行百分比转义编码,例如将“{”符号转义为“%7b”进行替代,以便得到url格式的字符串。对url格式的配置参数字符串进行私钥签名,就可以得到数字签名。
接收订单信息的服务器内存有随机生成的一个密钥对,并将私钥存储在接收订单信息的服务器中,服务端通过使用该私钥对应的公钥就可以对数字签名进行解密并验证api参数的完整性;通常该服务器只需要生成一次密钥对(公钥和私钥),每次接收到新的订单时,都用同样的私钥进行数字签名,无需为每一个订单都生成一次密钥对。
本实施例不对具体的非对称加密算法(即公钥和私钥的生成方法)进行限定,只要是能实现数字签名解密的。
在使用密钥前,服务端还会验证密钥使用者的合法性,具体地,使用密钥,所述密钥包括私钥与公钥,还包括以下步骤:
接收验证结果,所述验证结果为所述服务端的ip验证结果;
当验证通过时,使用密钥,所述密钥包括私钥与公钥。
服务端会存有一个ip白名单库,该ip白名单库存储了合法的ip地址,只有白名单库中的ip地址才拥有使用密钥的权限。本实施例对创建白名单库的具体方法不作限定,由堡垒机服务提供方(服务端)创建,或者是第三方网络安全公司共享的ip白名单库。通过设置ip白名单可以防止黑客等非法用户恶意访问或购买堡垒机服务。
实施例三
实施例三是在实施例一的基础上进行的,
实施例三与实施例二的不同之处在于,实施例二中使用私钥和公钥来实现数字签名的生成和验证,本实施例通过哈希加密、私钥签名与base64编码的方式进行数字签名,使得数字签名的可靠性更高。
虽然通过私钥生成的数字签名可以用来校验信息发送者身份,但是存在服务器中的私钥被人获取,进而更改api参数信息的问题,此时,服务端仅通过公钥验证的方法,难以判断出api参数已被更改,因此,需要进一步对api参数进行加密,以确保配置参数在传递过程中未被更改。具体地,请参照图3所示,根据所述api参数生成数字签名,还包括以下步骤:
s310、将所述堡垒机配置参数按预设排序规则进行排序;
预设排序规则通常为根据key进行升序排序或者降序排序,以升序的排序为例,当key存储的参数名分别为“tc”,“ect”,“edc”,“act”时,按升序排序的排列规则进行排列后,key变为“act”,“ect”,“edc”,“tc”。具体排序规则可以根据实际需求进行设定,排序目的主要是为了便于服务端按照相同顺序对api参数进行哈希加密,避免因顺序不同造成哈希加密结果不同,防止验证时的误判。
s320、将排序后的所述堡垒机配置参数组成url格式字符串;所述url格式字符串即为所述api参数;
本实施例也选用url传递(request-url)方式进行api参数的传输,相比于body体的api传递方式而言,由于body体的参数值、参数名是分开的,而url格式字符串因为已经将参数组合成了字符串,所以更易于进行哈希加密。
s330、使用密钥,所述密钥包括私钥与公钥;
s330中的密钥生成方式请参照实施例二。
s340、对所述api参数进行哈希加密,得到第一数字签名;
s340中所描述的哈希加密方法可以为hmac-sha256或hmac-sha1签名方法,本实施例不对具体的哈希加密算法进行限定,服务端存储有同样的哈希加密算法,以便于对签名进行验证。
s350、用所述私钥对所述的第一数字签名进行加密,得到第二数字签名;
s360、使用base64对所述的第二数字签名进行编码,得到所述的数字签名。
使用base64对哈希加密后的数据进行编码,得到最后的签名,可以加快数据传递的速度,因为加密后的数据通常较长,使用base64可以缩短数据的长度,减少资源占用;此外base64编码后的数据具有不可读性,即使上述的数字签名在传递过程中被截获,也难以查看到base64编码前的数据。
由于哈希算法是不可逆的算法,因此他人无法逆推得到明文(api参数),即使在传递过程中api参数被更改,也难以对数字签名进行相应的更改。通过本实施例的双重加密方法可以达到防伪装攻击(即请求来源是否合法)、防篡改攻击、防重放攻击(即请求被恶意攻击)、防数据信息泄漏的技术效果。
需要说明的是,服务端在验证时,需要使用base64对数字签名进行解码,通过公钥对解码后数字签名进行解密,就得到第一数字签名,即哈希加密后的api参数;服务端还需要采用同样的哈希加密方法对接收到的api参数进行加密,将加密后的结果与第一数字签名进行比对,完成api参数的验证。
实施例四
实施例四是在实施例一基础上进行的,其主要对访问域名的生成方法进行解释和说明。
请参照图4所示,生成所述堡垒机服务的访问域名,还包括以下步骤:
s410、随机生成所述堡垒机服务的访问域名,并储存在域名数据库中;
随机生成的访问域名具有唯一性,可以防止域名重复,从而避免访问堡垒机服务时出现错误。实施例中采用md5算法实现随机域名的生成,在其他实施例中也可以通过其他方式生成随机域名。
s410中的域名数据库可以便于用户端查询域名。
s420、将所述访问域名配置到nginx服务器上。
由于nginx具有占有内存少,并发能力强的优点,因此本实施例通过nginx可以实现使用访问域名连接到堡垒机服务的功能,用户通过访问域名就可以实现访问堡垒机服务平台端所在的内网ip,且堡垒机服务平台端所在服务器的内网ip不会被用户获取,能有效防止服务器被恶意攻击。
需要说明的是,除了将访问域名配置到nginx服务器上,还会将购买用户的名称、内网ip地址等信息发送给nginx服务器,以便于nginx服务器根据访问域名转发至堡垒机服务。
实施例五
实施例五公开了一种对应上述实施例的堡垒机自动部署方法对应的装置,为上述实施例的虚拟装置结构,请参照图5所示,包括:
订单接收模块510,用于接收堡垒机订单信息,存储所述订单信息中的堡垒机配置参数;
签名生成模块520,用于将所述堡垒机配置参数预处理为api参数,并根据所述api参数生成数字签名;
发送模块530,用于将所述数字签名及所述api参数发送给服务端;
api调用模块540,用于调用所述服务端的api接口,所述api接口为所述服务端创建堡垒机服务的api接口;
域名生成模块550,用于生成所述堡垒机服务的访问域名。
优选地,接收堡垒机订单信息,存储所述订单信息中的堡垒机配置参数,具体包括:
将所述堡垒机配置参数的参数名、所述堡垒机参数的参数值以key-value的形式存储。
优选地,将所述堡垒机配置参数预处理为api参数,并根据所述api参数生成数字签名,包括以下步骤:
将所述堡垒机配置参数组成url格式字符串,所述url格式字符串即为所述api参数;
使用密钥,所述密钥包括私钥与公钥;
通过所述私钥对所述api参数进行签名,得到所述数字签名。
优选地,将所述堡垒机配置参数预处理为api参数,并根据所述api参数生成数字签名,包括以下步骤:
将所述堡垒机配置参数按预设排序规则进行排序;
将排序后的所述堡垒机配置参数组成url格式字符串;所述url格式字符串即为所述api参数;
使用密钥,所述密钥包括私钥与公钥;
对所述api参数进行哈希加密,得到第一数字签名;
用所述私钥对所述的第一数字签名进行加密,得到第二数字签名;
使用base64对所述的第二数字签名进行编码,得到所述的数字签名。
优选地,将所述数字签名及所述api参数发送给服务端,包括以下步骤:
接收验证结果,所述验证结果为所述api参数是否被篡改的验证结果;
当验证结果为验证通过时,调用所述服务端的api接口;
当验证结果为验证失败时,返回错误信息。
优选地,使用密钥,所述密钥包括私钥与公钥,还包括以下步骤:
接收验证结果,所述验证结果为所述服务端的ip验证结果;
当验证通过时,使用密钥,所述密钥包括私钥与公钥。
优选地,生成所述堡垒机服务的访问域名,还包括以下步骤:
随机生成所述堡垒机服务的访问域名,并储存在域名数据库中;
将所述访问域名配置到nginx服务器上。
实施例六
图6为本发明实施例六提供的一种电子设备的结构示意图,如图6所示,该电子设备包括处理器610、存储器620、输入装置630和输出装置640;计算机设备中处理器610的数量可以是一个或多个,图6中以一个处理器610为例;电子设备中的处理器610、存储器620、输入装置630和输出装置640可以通过总线或其他方式连接,图6中以通过总线连接为例。
存储器620作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本发明实施例中的堡垒机自动部署方法对应的程序指令/模块(例如,堡垒机自动部署方法装置中的订单接收模块510、签名生成模块520、发送模块530、api调用模块540以及域名生成模块550)。处理器610通过运行存储在存储器620中的软件程序、指令以及模块,从而执行电子设备的各种功能应用以及数据处理,即实现上述实施例一至实施例四的堡垒机自动部署方法。
存储器620可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序,例如存储有生成数字签名的工具及应用程序;存储数据区可存储根据终端的使用所创建的数据等,例如存储有订单信息及配置参数。此外,存储器620可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储器620可进一步包括相对于处理器610远程设置的存储器,这些远程存储器可以通过网络连接至电子设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
输入装置630可用于接收输入的用户身份信息、订单信息等。输出装置640可包括显示屏等显示设备,用于显示用户购买结果,包括购买失败提示,购买成功提示及生成的访问域名等。
实施例七
本发明实施例七还提供一种包含计算机可执行指令的存储介质,该存储介质可用于计算机执行堡垒机自动方法,该方法包括:
接收堡垒机订单信息,存储所述订单信息中的堡垒机配置参数;
将所述堡垒机配置参数预处理为api参数,并根据所述api参数生成数字签名;
将所述数字签名及所述api参数发送给服务端;
调用所述服务端的api接口,所述api接口为所述服务端创建堡垒机服务的api接口;
生成所述api接口的访问域名。
当然,本发明实施例所提供的一种包含计算机可执行指令的存储介质,其计算机可执行指令不限于如上所述的方法操作,还可以执行本发明任意实施例所提供的基于堡垒机自动部署方法中的相关操作。
通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本发明可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、闪存(flash)、硬盘或光盘等,包括若干指令用以使得一台电子设备(可以是手机,个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
值得注意的是,上述基于堡垒机自动部署方法装置的实施例中,所包括的各个单元和模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。
对本领域的技术人员来说,可根据以上描述的技术方案以及构思,做出其它各种相应的改变以及形变,而所有的这些改变以及形变都应该属于本发明权利要求的保护范围之内。