一种容器应用认证方法、系统、计算设备及可读存储介质与流程

文档序号:25543248发布日期:2021-06-18 20:40阅读:110来源:国知局
一种容器应用认证方法、系统、计算设备及可读存储介质与流程

本发明涉及安全认证领域,尤其涉及一种容器应用的认证方法、系统、计算设备及可读存储介质。



背景技术:

容器技术具有轻量、标准、易部署、易维护等优点,容器中运行的应用软件,需要一种严格的认证授权,才能保证软件正确运行。现有的应用程序软件,通常采用读取读取软件运行环境参数,获得一个和软件相关的认证串,通过网络发送到服务端进行统一认证,这种方式对于实体机来说是有效的,但对于docker来说,因为docker是软件,复制一个docker就实际上复制了一份软件,运行在同一个宿主机上的docker,其运行环境参数是完全相同的,换言之,识别容器环境区别物理主机不能实现docker内部软件保护的目的。



技术实现要素:

为此,本发明提供了一种容器应用认证方法、系统、计算设备及可读存储介质,以力图解决或者至少缓解上面存在的问题。

根据本发明的一个方面,提供一种容器应用认证方法,适于在容器应用认证系统中执行,容器应用认证系统包括认证服务器、容器应用系统,容器应用系统包括多个容器应用客户端、一个容器应用服务端和一个认证客户端,方法包括:启动容器应用客户端,并在容器应用客户端生成第一认证消息;通过容器应用服务端对第一认证消息进行认证;若第一认证消息认证通过,则确定容器应用客户端启动成功;认证客户端获取用户输入的激活序列码,并通过认证服务器对激活序列码进行认证;若激活序列码认证通过,认证服务器向认证客户端发送授权信息;认证客户端根据授权信息激活容器应用客户端。

可选的,在根据本发明的容器应用认证方法中,还包括:容器应用客户端安装时,容器应用服务端为容器应用客户端分配相应的ip地址和进程号。

可选的,在根据本发明的容器应用认证方法中,在容器应用客户端生成第一认证消息包括:对当前容器应用客户端的ip地址和进行号进行哈希运算;根据哈希运算结果、ip地址和进程号生成第一认证消息。

可选的,在根据本发明的容器应用认证方法中,容器应用服务端存储有认证信息表,存储有多条认证信息记录,每一条认证信息记录包括ip地址、进程号和根据ip地址和进程号进行哈希运算的哈希值,通过容器应用服务端对第一认证消息进行认证包括:容器应用服务端查询第一认证消息是否存在于认证信息表中;若存在,则第一认证消息认证成功,否则,第一认证消息认证失败。

可选的,在根据本发明的容器应用认证方法中,当认证客户端与认证服务器通信连接成功时,通过认证服务器对激活序列码进行认证包括:认证客户端获取用户输入的激活序列码;将激活序列码发送至认证服务器进行认证。

可选的,在根据本发明的容器应用认证方法中,当认证客户端与认证服务器通信连接失败时,通过认证服务器对激活序列码进行认证包括:认证客户端生成二维码,并提示用户通过移动终端扫描二维码;通过用户用移动终端扫描二维码,将激活序列码发送至认证服务器进行认证。

可选的,在根据本发明的容器应用认证方法中,当认证客户端与认证服务器通信连接失败时,通过认证服务器对激活序列码进行认证包括:认证客户端提示用户发送认证短信;通过用户用移动终端发送认证短信,将激活序列码发送至认证服务器进行认证。

可选的,在根据本发明的容器应用认证方法中,还包括:认证客户端接收授权信息并保存;当认证客户端与认证服务器通信连接成功时,认证客户端通过心跳机制保持与认证服务器的通信连接;当认证客户端与认证服务器通信连接失败时,认证客户端每间隔预定时长,完成对激活序列码的下一次认证。

可选的,在根据本发明的容器应用认证方法中,认证服务器向认证客户端发放授权信息还包括:当认证客户端与认证服务器通信连接失败时,认证服务器通过移动终端向认证客户端发送授权信息。

根据本发明的另一个方面,提供一种容器应用认证系统,包括认证服务器、容器应用系统,容器应用系统包括多个容器应用客户端、一个容器应用服务端和一个认证客户端,其中,容器应用客户端,适于在启动时生成第一认证消息;容器应用服务端,适于对第一认证消息进行认证;认证客户端,适于获取用户输入的激活序列码,并通过认证服务器对激活序列码进行认证,还适于根据认证服务器返回的授权信息激活容器应用客户端;认证服务器,适于对激活序列码进行认证,若激活序列码认证通过,向认证客户端发送授权信息。

根据本发明的又一个方面,提供一种计算设备,包括:至少一个处理器;以及存储器,存储有程序指令,其中,程序指令被配置为适于由至少一个处理器执行,程序指令包括用于执行如上的任一项容器应用认证方法的指令。

根据本发明的又一方面,提供一种存储有程序指令的可读存储介质,当程序指令被计算设备读取并执行时,使得计算设备执行如上的任一项容器应用认证方法。根据本发明的容器应用认证方法,通过容器应用客户端和容器应用服务端之间第一认证消息的认证,实现容器应用服务端对容器应用客户端的合法性的认证,避免了其他非法复制的容器应用客户端在宿主机上正常启动,同时,认证客户端通过认证服务器对激活序列码的认证获得授权信息,并由认证客户端统一管理授权信息,根据授权信息激活相应的容器应用客户端,保证只有授权通过的容器应用客户端能够激活启用,实现了对容器应用的授权认证,避免了仅对容器运行环境进行授权认证导致的容器应用任意复制的弊端。

附图说明

为了实现上述以及相关目的,本文结合下面的描述和附图来描述某些说明性方面,这些方面指示了可以实践本文所公开的原理的各种方式,并且所有方面及其等效方面旨在落入所要求保护的主题的范围内。通过结合附图阅读下面的详细描述,本公开的上述以及其它目的、特征和优势将变得更加明显。遍及本公开,相同的附图标记通常指代相同的部件或元素。

图1示出了根据本发明一个实施例的容器应用认证系统100的示意图;

图2示出了根据本发明一个实施例的计算设备200的框图;

图3示出了根据本发明一个实施例的容器应用认证方法300的流程图;

图4示出了根据本发明一个实施例的激活认证过程400的流程图;

图5示出了根据本发明一个实施例的激活认证过程500的流程图。

具体实施方式

下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。

根据容器应用可以被复制并在同一宿主机上运行的特性,为了防止其他复制的非法容器应用在该宿主机上运行,本发明提供了一种通过服务认证机制控制实现对容器应用的授权认证。

图1示出了根据本发明一个实施例的容器应用认证系统100的示意图。如图1所示,容器应用认证系统100包括容器应用系统110、认证服务器120以及移动终端130。其中,容器应用系统110包括容器应用服务端1101、容器应用客户端1102(包括1102-1、1102-2……1102-n)和认证客户端1103。应当指出,图1所示的容器应用认证系统100仅是示例性的,在具体的实践中,可以根据实际需要进行设计。

根据本发明的一个实施例,容器应用通常运行在宿主机上,本实施例中,容器应用服务端1101即为宿主机,是具备通信、计算、存储功能的物理设备,其可以实现为服务器,例如应用服务器、web服务器等。在docker容器架构中,docker宿主机即为容器应用服务端,容器应用服务端1101适于给运行在其上面的合法容器应用客户端1102分配相应的ip地址和进程号(pid),在容器应用客户端启动时,根据相应的分配的ip地址和进程号进行认证,该认证过程可以通过监听服务程序完成。

容器应用客户端1102,即为包含应用程序软件的容器,多个容器应用客户端可以共同运行在一个宿主机上,并分别从容器应用服务端1101获得有效的ip地址和pid,以便在启动时完成与容器应用服务端的认证。

认证客户端1103,用于完成与外部认证服务器120的激活授权认证,并统一管理所有容器应用客户端1102的激活授权。在docker容器应用系统中,认证客户端1103可以通过一个和容器应用客户端并列的容器应用客户端实现,并通过安装认证服务程序的客户端完成与认证服务器120的认证过程。

认证服务器120用于完成对容器应用系统中容器应用客户端的授权激活认证,安装有认证服务程序的服务端,对认证客户端发送的认证请求通过后,向认证客户端返回授权信息。根据本发明的一个实施例,认证客户端与认证服务器的认证机制为kms认证。

移动终端130,是具有通信功能的终端设备,例如:手机、平板电脑等,当认证客户端1103离线,不能通信连接认证服务器120时,可以通过移动终端间接完成与认证服务器120间的认证过程。例如:认证客户端1103可以生成二维码供用户移动终端扫描,以完成与认证服务器的认证交互。

根据本发明的一个实施例,在docker容器应用中,宿主机(即容器应用服务端)安装有监听应用程序服务端,docker容器应用(即容器应用客户端)安装有监听程序客户端,宿主机给docker容器分配特定的ip地址和进程号,在docker容器应用启动时,通过ip地址和进程号生成第一认证消息,通过第一认证消息完成与宿主机之间的认证,认证成功后,docker容器应用启动成功,并等待激活,若认证失败,则docker容器启动失败。docker容器启动成功后,认证客户端1103根据用户输入的激活序列码生成激活认证消息,并通过认证服务器120进行认证,认证通过后,由认证服务器120发放授权信息,认证客户端1103根据授权信息激活相应的容器应用客户端。

图1中的容器应用服务端和认证服务器都可以通过计算设备实现,图2示出了根据本发明一个实施例的计算设备200的框图。需要说明的是,图2所示的计算设备200仅为一个示例,在实践中,用于实施本发明的容器应用认证方法的计算设备可以是任意型号的设备,其硬件配置情况可以与图2所示的计算设备200相同,也可以与图2所示的计算设备200不同。实践中用于实施本发明的容器应用认证方法的计算设备可以对图2所示的计算设备200的硬件组件进行增加或删减,本发明对计算设备的具体硬件配置情况不做限制。

如图2所示,在基本配置202中,计算设备200典型地包括系统存储器206和一个或者多个处理器204。存储器总线208可以用于在处理器204和系统存储器206之间的通信。

取决于期望的配置,处理器204可以是任何类型的处理,包括但不限于:微处理器(µp)、微控制器(µc)、数字信息处理器(dsp)或者它们的任何组合。处理器204可以包括诸如一级高速缓存210和二级高速缓存212之类的一个或者多个级别的高速缓存、处理器核心214和寄存器216。示例的处理器核心214可以包括运算逻辑单元(alu)、浮点数单元(fpu)、数字信号处理核心(dsp核心)或者它们的任何组合。示例的存储器控制器218可以与处理器204一起使用,或者在一些实现中,存储器控制器218可以是处理器204的一个内部部分。

取决于期望的配置,系统存储器206可以是任意类型的存储器,包括但不限于:易失性存储器(诸如ram)、非易失性存储器(诸如rom、闪存等)或者它们的任何组合。计算设备中的物理内存通常指的是易失性存储器ram,磁盘中的数据需要加载至物理内存中才能够被处理器204读取。系统存储器206可以包括操作系统220、一个或者多个应用222以及程序数据224。在一些实施方式中,应用222可以布置为在操作系统上由一个或多个处理器204利用程序数据224执行指令。操作系统220例如可以是linux、windows等,其包括用于处理基本系统服务以及执行依赖于硬件的任务的程序指令。应用222包括用于实现各种用户期望的功能的程序指令,应用222例如可以是浏览器、即时通讯软件、软件开发工具(例如集成开发环境ide、编译器等)等,但不限于此。当应用222被安装到计算设备200中时,可以向操作系统220添加驱动模块。

在计算设备200启动运行时,处理器204会从存储器206中读取操作系统220的程序指令并执行。应用222运行在操作系统220之上,利用操作系统220以及底层硬件提供的接口来实现各种用户期望的功能。当用户启动应用222时,应用222会加载至存储器206中,处理器204从存储器206中读取并执行应用222的程序指令。

计算设备200还包括储存设备232,储存设备232包括可移除储存器236和不可移除储存器238,可移除储存器236和不可移除储存器238均与储存接口总线234连接。

计算设备200还可以包括有助于从各种接口设备(例如,输出设备242、外设接口244和通信设备246)到基本配置202经由总线/接口控制器230的通信的接口总线240。示例的输出设备242包括图形处理单元248和音频处理单元250。它们可以被配置为有助于经由一个或者多个a/v端口252与诸如显示器253或者扬声器之类的各种外部设备进行通信。示例外设接口244可以包括串行接口控制器254和并行接口控制器256,它们可以被配置为有助于经由一个或者多个i/o端口258和诸如输入设备(例如,键盘、鼠标、笔、语音输入设备、触摸输入设备)或者其他外设(例如打印机、扫描仪等)之类的外部设备进行通信。示例的通信设备246可以包括网络控制器260,其可以被布置为便于经由一个或者多个通信端口264与一个或者多个其他计算设备262通过网络通信链路的通信。

网络通信链路可以是通信介质的一个示例。通信介质通常可以体现为在诸如载波或者其他传输机制之类的调制数据信号中的计算机可读指令、数据结构、程序模块,并且可以包括任何信息递送介质。“调制数据信号”可以这样的信号,它的数据集中的一个或者多个或者它的改变可以在信号中编码信息的方式进行。作为非限制性的示例,通信介质可以包括诸如有线网络或者专线网络之类的有线介质,以及诸如声音、射频(rf)、微波、红外(ir)或者其它无线介质在内的各种无线介质。这里使用的术语计算机可读介质可以包括存储介质和通信介质二者。

在根据本发明的计算设备200中,应用222包括用于执行本发明的容器应用认证方法300的指令,该指令可以指示处理器204执行本发明的系容器应用认证方法300。

图3示出了根据本发明一个实施例的容器应用认证方法300的流程图,适于在如图1所示的容器应用认证系统中执行,如图1所示,方法300始于步骤s310,在该步骤中,完成容器应用的安装。根据本发明的一个实施例,docker容器采用c/s架构,其运行的宿主机可以视为容器应用服务端,docker容器为容器应用客户端,宿主机上运行监听程序的服务端,docker容器上运行监听程序的客户端,本步骤中,宿主机通过监听程序为docker容器应用分配特定的ip地址和进程号。

随后进入步骤s320,容器应用服务器引导容器应用客户端启动。在docker容器架构中,宿主机通过监听程序引导docker容器应用启动,并在docker容器中根据其ip地址和进程号生成第一认证消息,第一认证消息包括当前docker容器的ip地址、进程号以及根据ip地址和进程号进行哈希运算的哈希值,docker容器将第一认证消息发送至宿主机进行认证。

随后进入步骤s330,容器应用服务端对第一认证消息进行认证。在容器应用服务端存储有认证信息表,其中存储有所有容器应用客户端的认证信息记录,每一条认证信息记录包括容器应用客户端的ip地址、进程号和对应的哈希值,本步骤中对第一认证消息的认证,即根据第一认证消息中的ip地址、进程号和其对应的哈希值进行查找的过程,若能够查找到,则认证成功,否则,认证失败。

根据本发明的一个实施例,若第一认证消息认证失败,进入步骤s340,容器应用客户端启动失败,从而使得非法复制的容器应用客户端由于没有合法的ip地址和进程号而无法在宿主机上启动。

根据本发明的一个实施例,若第一认证消息认证成功,则进入步骤s350,容器应用客户端启动成功。

随后进入步骤s360,对容器应用客户端进行激活授权认证。每一个容器应用对应一个激活序列码。根据本发明的一个实施例,对激活序列码的认证通过kms认证完成,在docker架构中,指定docker容器集群中的一个docker容器作为认证客户端完成该认证过程,并由该认证客户端统一管理docker容器集群的所有docker容器。根据认证客户端与认证服务器之间是否通信连接,本步骤可以实现为离线认证和在线认证。

图4示出了根据本发明一个实施例的激活认证过程400的流程图,该过程为认证客户端在线认证过程(认证客户端与认证服务器通信连接),本实施例中,认证机制为kms认证机制。

如图4所示,该过程始于步骤s410,根据用户输入,认证客户端获取用户输入的激活序列码,并直接发送至认证服务器,认证服务器对收到的激活序列码进行认证,如果认证失败,则进入步骤s420,返回认证失败消息给认证客户端,此时,容器应用客户端无法激活使用。

如果激活序列码认证成功,则进入步骤s430,认证服务器返回授权信息。其中包括授权码序列和授权码数量信息。例如,认证服务器根据激活码序列查询到,其对应5个容器应用客户端,则返回5个授权码以及授权码数量5。

随后进入步骤s440,认证客户端在收到授权信息后进行存储,并将授权码发送至相应的容器应用客户端进行激活,使容器应用客户端进入激活使用状态。

随后进入步骤s450,在授权认证完成后,认证客户端通过发送心跳包,保持与认证服务器的通信连接,以确认此次授权的持续有效性。

图5示出了根据本发明一个实施例的容器应用认证过程500的流程图,该过程为认证客户端离线认证过程(即认证客户端与认证服务器的通信连接失败),本实施例中,采用kms认证机制。如图5所示,该过程始于步骤s510,在该步骤中,认证客户端离线时,启动离线认证过程,例如:提示用户通过移动终端发送指定短信,或者生成指定二维码,以便用户通过移动终端进行扫描。

随后进入步骤s520,用户根据认证客户端的提示,通过移动终端发送指定内容短信到指定号码,或者根据提示扫描二维码,完成将激活序列码发送到认证服务器的过程。

若认证成功,进入步骤s530,认证服务器将授权码信息发送至移动终端,其中包括授权码序列和授权码数量。

随后进入步骤s540,用户根据移动终端收到的授权信息,输入认证客户端进行存储,并由认证客户端根据授权信息激活相应的容器应用客户端。

根据本发明的一个实施例,若步骤s520中,认证服务器对激活序列码认证失败,则进入步骤s550,返回认证失败消息给相应的移动终端,此时,容器应用客户端将无法被激活。

根据本发明的一个实施例,在根据过程500完成激活认证时,记录激活认证失效时间,并在激活认证失效时,根据过程500再次完成激活认证。

根据本发明的又一个实施例,根据上述描述可知,在根据认证过程400完成激活认证时,通过心跳机制保持激活认证的持续有效性,如果认证客户端心跳包发送失败,则记录认证失效时间,并在认证失效时启动离线激活认证过程,即根据图5所示的过程完成认证。

根据本发明的容器应用认证方法,通过容器应用客户端和容器应用服务端之间第一认证消息的认证,实现容器应用服务端对容器应用客户端的合法性的认证,避免了其他非法复制的容器应用客户端在宿主机上正常启动,同时,认证客户端通过认证服务器对激活序列码的认证获得授权信息,并由认证客户端统一管理授权信息,根据授权信息激活相应的容器应用客户端,保证只有授权通过的容器应用客户端能够激活启用,实现了对容器应用的授权认证,避免了仅对容器运行环境进行授权认证导致的容器应用任意复制的弊端。

这里描述的各种技术可结合硬件或软件,或者它们的组合一起实现。从而,本发明的方法和设备,或者本发明的方法和设备的某些方面或部分可采取嵌入有形媒介,例如可移动硬盘、u盘、软盘、cd-rom或者其它任意机器可读的存储介质中的程序代码(即指令)的形式,其中当程序被载入诸如计算机之类的机器,并被所述机器执行时,所述机器变成实践本发明的设备。

在程序代码在可编程计算机上执行的情况下,计算设备一般包括处理器、处理器可读的存储介质(包括易失性和非易失性存储器和/或存储元件),至少一个输入装置,和至少一个输出装置。其中,存储器被配置用于存储程序代码;处理器被配置用于根据该存储器中存储的所述程序代码中的指令,执行本发明的容器应用认证方法。

以示例而非限制的方式,可读介质包括可读存储介质和通信介质。可读存储介质存储诸如计算机可读指令、数据结构、程序模块或其它数据等信息。通信介质一般以诸如载波或其它传输机制等已调制数据信号来体现计算机可读指令、数据结构、程序模块或其它数据,并且包括任何信息传递介质。以上的任一种的组合也包括在可读介质的范围之内。

在此处所提供的说明书中,算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与本发明的示例一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。

在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下被实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。

应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多特征。

本领域那些技术人员应当理解在本文所公开的示例中的设备的模块或单元或组件可以布置在如该实施例中所描述的设备中,或者可替换地可以定位在与该示例中的设备不同的一个或多个设备中。前述示例中的模块可以组合为一个模块或者此外可以分成多个子模块。

本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。

此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。

此外,所述实施例中的一些在此被描述成可以由计算机系统的处理器或者由执行所述功能的其它装置实施的方法或方法元素的组合。因此,具有用于实施所述方法或方法元素的必要指令的处理器形成用于实施该方法或方法元素的装置。此外,装置实施例的在此所述的元素是如下装置的例子:该装置用于实施由为了实施该发明的目的的元素所执行的功能。

如在此所使用的那样,除非另行规定,使用序数词“第一”、“第二”、“第三”等等来描述普通对象仅仅表示涉及类似对象的不同实例,并且并不意图暗示这样被描述的对象必须具有时间上、空间上、排序方面或者以任意其它方式的给定顺序。

尽管根据有限数量的实施例描述了本发明,但是受益于上面的描述,本技术领域内的技术人员明白,在由此描述的本发明的范围内,可以设想其它实施例。此外,应当注意,本说明书中使用的语言主要是为了可读性和教导的目的而选择的,而不是为了解释或者限定本发明的主题而选择的。因此,在不偏离所附权利要求书的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。对于本发明的范围,对本发明所做的公开是说明性的,而非限制性的,本发明的范围由所附权利要求书限定。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1