基于容器宿主机的安全保护方法、装置以及电子设备与流程

文档序号:31147381发布日期:2022-08-17 00:18阅读:40来源:国知局
基于容器宿主机的安全保护方法、装置以及电子设备与流程

1.本公开涉及安全技术领域,具体而言,涉及一种基于容器宿主机的安全保护方法、基于容器宿主机的安全保护装置,以及实现上述方法的电子设备。


背景技术:

2.容器(container)技术能够有效的将单个操作系统的资源划分到孤立的组中,以便更好的在孤立的组之间平衡有冲突的资源使用需求,从而能够大幅提升工作效率。而便捷登录容器的方案也是开发人员不断追求的目标。
3.相关技术提供的一种容器登录方案为,基于安全壳程序(secure shell,简称:ssh)登录宿主机,然后在宿主机上使用相关容器命令来切进容器。在这种容器登录方案中,若用户能通过ssh登录宿主机,但是并没有使用切进容器,而可能通过宿主机漏洞进而提权获取宿主机的更大权限,进而对宿主机实施破坏。
4.可见,针对相关技术提供的上述容器登录方案,相关宿主机的安全性亟待提升。
5.需要说明的是,在上述背景技术部分公开的信息仅用于加强对本公开的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。


技术实现要素:

6.本公开的目的在于提供一种基于容器宿主机的安全保护方法、基于容器宿主机的安全保护装置、电子设备以及计算机可读存储介质,进而在一定程度上在提升容器的宿主机的安全性。
7.根据本公开的一个方面,提供一种基于容器宿主机的安全保护方法,该方法包括:确定目标账号具有使用目标容器的权限和具有登录宿主机的权限中的至少一种权限,其中所述容器存储于所述宿主机;响应于上述目标账号登录上述宿主机,监听上述目标账号在上述宿主机的执行命令;通过监听结果确定上述目标账号是否用于切入上述宿主机中容器;响应上述目标账号不用于切入上述宿主机中容器,退出上述目标账号在上述宿主机的登录。
8.根据本公开的一个方面,提供一种基于容器宿主机的安全保护装置,所述装置包括:权限确定模块、监听模块、切入确定模块以及退出模块。
9.其中,上述权限确定模块,被配置为:确定目标账号具有使用目标容器的权限和具有登录宿主机的权限中的至少一种权限,其中所述容器存储于所述宿主机;上述监听模块,被配置为:响应于上述目标账号登录上述宿主机,监听上述目标账号在上述宿主机的执行命令;上述切入确定模块,被配置为:通过监听结果确定上述目标账号是否用于切入上述宿主机中容器;以及,上述退出模块,被配置为:响应上述目标账号不用于切入上述宿主机中容器,退出上述目标账号在上述宿主机的登录。
10.在示例性的实施例中,基于前述方案,上述切入确定模块,被具体配置为:若上述监听结果为在上述目标账号登录上述宿主机之后,在第一预设时长内未接收到来自上述目
标账号的执行命令,则确定上述目标账号不用于切入上述宿主机中容器。
11.在示例性的实施例中,基于前述方案,上述装置还包括:校验模块。
12.其中,上述校验模块被配置为:若上述监听结果为在上述目标账号登录上述宿主机之后,在上述第一预设时长内接收到来自上述目标账号的执行命令,检验上述执行命令的合法性;以及,若上述执行命令合法,则确定上述目标账号用于切入上述宿主机中容器;或,若上述执行命令不合法,则确定上述目标账号不用于切入上述宿主机中容器。
13.在示例性的实施例中,基于前述方案,上述监听模块,被具体配置为:响应于接收到上述目标账号通过壳程序登录上述宿主机,通过获取壳程序的参数以监听上述目标账号在上述宿主机的执行命令。
14.在示例性的实施例中,基于前述方案,上述切入确定模块,被具体配置为:获取在上述目标账号登录上述宿主机之后的第二预设时长内上述壳程序的参数;响应于上述第二预设时长内获取到的壳程序的参数为空,则确定上述执行命令不用于切入上述宿主机中容器。
15.在示例性的实施例中,基于前述方案,上述校验模块,还被配置为:响应于上述第二预设时长内获取到的壳程序的参数不为空,检验上述第二预设时长内获取到的壳程序的参数的合法性;以及,若上述壳程序的参数合法,则确定上述目标账号用于切入上述宿主机中容器;或,若上述壳程序的参数不合法,则确定上述目标账号不用于切入上述宿主机中容器。
16.在示例性的实施例中,基于前述方案,上述装置还包括:登录模块。
17.其中,上述登录模块被配置为:获取上述目标账号待登录的目标容器的标识;根据上述目标容器的标识确定上述目标容器对应的宿主机的地址信息;根据上述宿主机的地址信息使得上述目标账号登录宿主机。
18.在示例性的实施例中,基于前述方案,上述装置还包括:记录模块。
19.其中,上述记录模块被配置为:在退出上述目标账号在上述宿主机的登录之后,记录被退出的上述目标账号,以实现对不法登录宿主机的账号的记录。
20.根据本公开的一个方面,提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述第一方面中任意实施例所述的基于容器宿主机的安全保护方法。
21.根据本公开的一个方面,提供一种电子设备,包括:处理器;以及存储器,用于存储所述处理器的可执行指令;其中,所述处理器配置为经由执行所述可执行指令来执行上述第一方面中任意实施例所述的基于容器宿主机的安全保护方法。
22.根据本公开的一个方面,提供一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质中读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述各个实施例中提供的基于容器宿主机的安全保护方法。
23.本公开示例性实施例可以具有以下部分或全部有益效果:
24.在本公开的一示例实施方式所提供的资源配置方案中,在目标账号登录宿主机之前,先确定目标账号是否具有使用目标容器的权限和/或是否具有登录存储上述目标容器的宿主机的权限,在上述两种权限均不存在的情况下不允许该目标账号登录宿主机。从而
为宿主机的安全提供第一道保障。进一步地,确定目标账号具备上述两种权限中的至少一种权限后,允许目标账号登录宿主机,并在目标账号登录宿主机之后,监听该目标账号进一步的执行命令,以判断该目标账号是否用于切入该宿主机中的容器。进一步地,若上述目标账号不用于切入所述宿主机中容器,说明该账户可能会对宿主机的安全性造成威胁,则强制退出该目标账号在宿主机的登录。若上述目标账号用于切入宿主机中容器,说明该账户不会对宿主机的安全性造成威胁则使得该账户持续登录。本技术方案通过权限确认以及对登录宿主机的账号的密切监视并对账号的登录状态进行管理两种方式同时保障宿主机安全,可以有效避免宿主机被恶意登录的账号入侵或攻击破坏,有效提升宿主机的安全。同时,对于正常登录宿主机中容器的账号不加干涉,从而保证容器的正常使用。
25.应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
26.此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
27.图1示出了可以应用本公开一实施例的基于容器宿主机的安全保护方案的示例性应用环境的系统架构的示意图。
28.图2示意性示出了根据本公开的一实施例的基于容器宿主机的安全保护方法的流程示意图。
29.图3示意性示出了根据本公开的另一实施例的基于容器宿主机的安全保护方法的流程示意图。
30.图4示出本公开一示例性实施例中基于账号登录宿主机方法的流程示意图。
31.图5示意性示出了根据本公开的再一实施例的基于容器宿主机的安全保护方法的流程示意图。
32.图6示出本公开又一示例性实施例中基于容器宿主机的安全保护方法的流程示意图。
33.图7示出本公开一示例性实施例中权限申请方法的流程示意图。
34.图8示出了可以应用本公开另一实施例的基于容器宿主机的安全保护装置的结构示意图。
35.图9示出了适于用来实现本公开实施例的电子设备的计算机系统的结构示意图。
具体实施方式
36.现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本公开将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施方式中。在下面的描述中,提供许多具体细节从而给出对本公开的实施方式的充分理解。然而,本领域技术人员将意识到,可
以实践本公开的技术方案而省略所述特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知技术方案以避免喧宾夺主而使得本公开的各方面变得模糊。
37.此外,附图仅为本公开的示意性图解,并非一定是按比例绘制。图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。附图中所示的一些方框图是功能实体,不一定必须与物理或逻辑上独立的实体相对应。可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
38.云技术(cloud technology)是指在广域网或局域网内将硬件、软件、网络等系列资源统一起来,实现数据的计算、储存、处理和共享的一种托管技术。
39.云技术(cloud technology)基于云计算商业模式应用的网络技术、信息技术、整合技术、管理后台技术、应用技术等的总称,可以组成资源池,按需所用,灵活便利。云计算技术将变成重要支撑。技术网络系统的后台服务需要大量的计算、存储资源,如视频网站、图片类网站和更多的门户网站。伴随着互联网行业的高度发展和应用,将来每个物品都有可能存在自己的识别标志,都需要传输到后台系统进行逻辑处理,不同程度级别的数据将会分开处理,各类行业数据皆需要强大的系统后盾支撑,只能通过云计算来实现。
40.云安全(cloud security)是指基于云计算商业模式应用的安全软件、硬件、用户、机构、安全云平台的总称。云安全融合了并行处理、网格计算、未知病毒行为判断等新兴技术和概念,通过网状的大量客户端对网络中软件行为的异常监测,获取互联网中木马、恶意程序的最新信息,并发送到服务端进行自动分析和处理,再把病毒和木马的解决方案分发到每一个客户端。
41.云安全主要研究方向包括:1.云计算安全,主要研究如何保障云自身及云上各种应用的安全,包括云计算机系统安全、用户数据的安全存储与隔离、用户接入认证、信息传输安全、网络攻击防护、合规审计等;2.安全基础设施的云化,主要研究如何采用云计算新建与整合安全基础设施资源,优化安全防护机制,包括通过云计算技术构建超大规模安全事件、信息采集与处理平台,实现对海量信息的采集与关联分析,提升全网安全事件把控能力及风险控制能力;3.云安全服务,主要研究各种基于云计算平台为用户提供的安全服务,如防病毒服务等。
42.示例性的,图1示出了可以应用本公开一实施例的基于容器宿主机的安全保护方案的示例性应用环境的系统架构的示意图。
43.如图1所示,系统架构100可以包括终端110、网络120、容器的宿主机130以及管理后台140。其中,终端110、宿主机130以及管理后台140之间通过网络120连接。
44.其中,终端110可以是智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、智能手表等,但并不局限于此。网络120可以是能够在终端110和服务器端130之间提供通信链路的各种连接类型的通信介质,例如可以是有线通信链路、无线通信链路或者光纤电缆等等,本技术在此不做限制。宿主机130以及管理后台140可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、以及大数据和人工智能平台等基础云计算服务的云服务器。
45.为了避免用户在登录宿主机后切进宿主机中容器的过程中所需的繁琐步骤,可以将宿主机登录和切进容器这两个步骤进行封装,从而使得容器登录者只需要关注容器id或者容器名登录。
46.示例性的,假如被封装的容器登录工具为go_docker,用户使用go_docker登录宿主机并使用容器的实现方式如表1所示:
47.表1
[0048][0049]
其中,
“–
i”表示容器id,
“–
n”表示容器名。本实施例中,容器id为“30f2f4e3c2bfa6600b2a026f8e842463e5b81a2de651b071ea7c782d316fc92d”,容器名为“01vector-tuji”。
[0050]
参考图2,在步骤s21中通过go_docker登录容器,具体地,用户通过终端220填写账号信息以及待登录的容器名或容器id。其中,用户无需要关心容器在哪个宿主机ip上,而是在docker管理后台210获取该容器名或该容器id的宿主机ip(执行步骤s22查看待登录的容器的宿主机ip)。进一步地,根据宿主机ip执行步骤s23:ssh登录宿主机230,具体地,用户通过上述账号信息登录相关宿主机,并进一步执行步骤s24进而切入宿主机中的容器240。
[0051]
在示例性的实施例中,上述容器登录工具通过发起ssh登录宿主机,对应的实现为:$ssh 1.2.3.4

t"sudo docker exec

it/bin/bash 30f2f4e3c2bfa"。
[0052]
其中,上述“1.2.3.4”为根据容器id或者容器name查到所在宿主机ip;登录宿主机之后,执行docker相关命令“sudo docker exec”来切进id为“30f2f4e3c2bfa”的容器。
[0053]
本公开实施例所提供的基于容器宿主机的安全保护方法可以由宿主机130执行,本公开对此不做特殊限定。举例而言,宿主机130响应于目标账号登录宿主机,监听该目标账号的执行命令。并通过监听结果确定该目标账号是否将切入该宿主机中容器。进一步地,响应该目标账号不用于切入所述宿主机中容器,则强制退出该目标账号在该宿主机的登录。
[0054]
进一步地,响应该目标账号将切入该宿主机中容器,则保持该目标账号在该宿主机的登录状态,从而确保对容器的正常使用。
[0055]
接下来,先介绍基于容器宿主机的安全保护方法的实施例。其中,图3示出本公开另一示例性实施例中基于容器宿主机的安全保护方法的流程示意图。参考图3,该方法包括:
[0056]
步骤s310,确定目标账号具有使用目标容器的权限和具有登录宿主机的权限中的至少一种权限,其中所述容器存储于所述宿主机;
[0057]
步骤s320,响应于所述目标账号登录所述宿主机,监听所述目标账号在所述宿主机的执行命令;
[0058]
步骤s330,通过监听结果判断所述目标账号是否用于切入所述宿主机中容器;
[0059]
步骤s340,响应所述目标账号不用于切入所述宿主机中容器,退出所述目标账号在所述宿主机的登录;以及,
[0060]
步骤s350,响应所述目标账号用于切入所述宿主机中容器,保持所述目标账号在所述宿主机的登录状态。
[0061]
在本图3所示实施例所提供的资源配置方案中,本技术方案通过权限确认的方式
为宿主机的安全提供第一道保障,又通过对登录宿主机的账号的密切监视并对账号的登录状态进行管理为宿主机的安全提供另一道保障。从而可以有效避免宿主机被恶意登录的账号入侵或攻击破坏,有效提升宿主机的安全。同时,对于正常登录宿主机中容器的账号不加干涉,从而保证容器的正常使用。
[0062]
以下对图3所示实施例中各个步骤的具体实施方式进行详细说明:
[0063]
需要说明的是,目标账号拥有相关宿主机的任何一个容器权限,则该目标账号则具有登录该宿主机的权限。鉴于上述目标容器处于所述宿主机中,因此,若上述目标账号具有使用上述目标容器的权限,则上述目标账号也具有登录上述宿主机的权限。在目标账号具有登录相关宿主机的情况下,该目标账号可以ssh登录该宿主机,并能够执行docker命令(如,sudo docker exec)切进该宿主机中容器。
[0064]
在一种示例性的实施例中,在步骤s310中可以通过先验信息确定目标账号的权限。具体的,根据账号与可登录的容器之间的权限关系表,确定目标账号是否具有使用目标容器的权限。以及,根据账号与可登录的宿主机之间的权限关系表,确定目标账户是否具有登录宿主机的权限。
[0065]
在示例性的实施例中,另一种确定目标账号是否具有使用上述目标容器的权限的具体实施方式为:
[0066]
参考图1与图2,管理后台140(如,docker管理后台210)中存储有账号与其具有权限的容器的关联表。开发人员a具有容器x的权限,开发人员b具有容器y的权限。则docker管理后台查询待登录容器对应的宿主机的ip地址时,通过docker管理后台判断上述目标账号是否具有该待登录的目标容器的权限。例如,开发人员a在终端输入其账号信息以及待登录的容器名/容器id,docker管理后台查询关联表以确定开发人员a在终端输入其账号是否与待登录容器相关联,若相关联则说明具有相关权限,开发人员a可以通过其账号登录目标容器。
[0067]
在示例性的实施例中,再一种确定目标账号是否具有登录上述宿主机的权限的具体实施方式为:
[0068]
通过管理宿主机的轻量目录访问协议(lightweight directory access protocol,简称:ldap)的用户权限来确定上述目标账号是否具有登录宿主机的权限。具体的,如果上述目标账号没有登录该宿主机任何权限,那么docker管理后台通过openldap向宿主机下发以下信息:关于该账号无登录宿主机的权限信息,则上述目标账号无法ssh登录该宿主机。如果上述目标账号具有登录该宿主机的权限,那么docker管理后台通过openldap向宿主机下发以下信息:关于该账号具有登录宿主机的权限信息,则上述目标账号能够ssh登录该宿主机。
[0069]
在示例性的实施例中,还可以通过使用独立的运维系统来管理宿主机的本地账号权限,从而通过运维系统确定目标账号是否具有登录该宿主机的权限。并在目标账号没有登录宿主机的权限时,响应于登录权限申请,通过运维系统直接下发shell命令来给宿主机添加账号,从而实现相关账号在宿主机的登录。
[0070]
需要说明的是,确定目标账号是否具有目标容器的使用权限或确定目标账号是否具有宿主机的登录权限的具体实施方式不限于上述几种,还可以是本技术领域中的其他方式。
[0071]
在示例性的实施例中,在上述目标账号不具有使用上述目标容器的权限且不具有登录上述宿主机的权限的情况下,则拒绝该目标账号登录上述宿主机。从而为宿主机的安全提供第一道保障。
[0072]
在示例性的实施例中,在上述目标账号具有在上述宿主机的登录权限的情况下,该目标账号能够成功登录该宿主机。其中,图4示出本公开一示例性实施例中对账号登录宿主机方法的流程示意图。参考图4,该方法包括步骤s410-步骤s430。
[0073]
在步骤s410中,获取所述目标账号待登录的目标容器的标识;以及,在步骤s420中,根据所述目标容器的标识确定所述目标容器对应的宿主机的地址信息。
[0074]
如前述实施例,参考图2,用户可以通过终端220填写账号信息以及待登录的容器名或容器id,然后通过docker管理后台210获取该容器名或该容器id的宿主机ip。
[0075]
继续参考图4,在目标账号具有使用所述目标容器的权限登录上述宿主机的权限中至少一种权限的情况下,执行步骤s430,根据所述宿主机的地址信息使得所述目标账号登录宿主机。
[0076]
通过上述实施例还可以看出,若黑客申请了该宿主机上的一个容器权限,则其具备登录该宿主机的权限。具体参考图2,若其ssh登录宿主机230之后并为执行步骤s24切入容器240(如,未通过go_docker容器登录工具登录相关容器),而是在ssh登录宿主机之后执行步骤s24’:在宿主机提权或入侵宿主机。则在这种情况下黑客有机会尝试在宿主机提权,还可能尝试利用宿主机漏洞获取更大的权限,进而施加其他入侵和破坏,威胁到宿主机的安全。
[0077]
针对上述技术问题,本技术方案执行步骤s320:响应于所述目标账号登录所述宿主机,监听所述目标账号在所述宿主机的执行命令;以及,步骤s330,通过监听结果判断所述目标账号是否用于切入所述宿主机中容器。
[0078]
示例性的,容器管理后台区分出上述目标账号具有该宿主机的容器使用权限之后,通过openldap等方案将具有权限的信息下发到宿主机。进而,在宿主机上,可以看到容器账号登录者并做标记,修改用户的壳程序(bourne again shell简称:bash)配置。其中,壳程序shell用于用户与操作系统进行交互,具体用来与核作区别,相当于是一个命令解析器。具体的,壳程序分为多种(除了bash之外,还有bourne shell(简称:sh)、kornshell(简称:ksh)以及c shell(简称:csh)等)。本技术方案针对“linux容器”,且linux系统对应的壳程序为bash。因此,本技术方案为了监听登录宿主机后目标账号的执行命令,对现有bash进行适配修改,然后,通过检测登录ssh的bash用法,以加强bash使用时对命令参数的监听与判断。如检测到目标账号不是登录容器,则结束bash,进而退出ssh登录,从而避免恶意停留宿主机。
[0079]
具体的,对于容器使用者,在申请了容器使用权限之后,则该用户的账号具有相关宿主机的登录权限。又参考表2所示,每个具有登录linux系统(宿主机为linux系统)权限的账号都有一个bash字段,其中,“/bin/bash”表明用户通过该账号登录linux系统之后的壳程序信息。
[0080]
表2
[0081]
[0082]
例如,qinbochen的账号为:#getent passwd|grep qinbochen。通过该账号登录宿主机之后,可以查看该账号对应的壳程序信息如下:qinbochen:x:12345:100:/bin/eash:/data/home/qinbochen:/bin/bash。
[0083]
比如针对上述账号qinbochen,可以将其对应的壳程序信息的最后字段“/bin/bash”修改为“/bin/docker_bash”,从而便于加强bash使用时对命令参数的监听与判断。则账号qinbochen修改后壳程序信息具体为:qinbochen:x:2345:100:/bin/eash:/data/home/qinbochen:/bin/docker_bash。
[0084]
进一步地,本实施例中通过获取“/bin/docker_bash”执行bash命令参数的方式,来监听目标账号在登录宿主机之后所执行的命令。
[0085]
继续参考图3,在步骤s340中,响应所述目标账号不用于切入所述宿主机中容器,退出所述目标账号在所述宿主机的登录。
[0086]
一种示例性的实施例中,参考图5,在步骤s510中,在所述目标账号登录所述宿主机之后,判断在第一预设时长内是否接收到来自所述目标账号的执行命令。响应于未接收到来自所述目标账号的执行命令,则执行步骤s520,确定所述目标账号不用于切入所述宿主机中容器。响应于接收到来自所述目标账号的执行命令,则执行步骤s530,检验所述执行命令的合法性。进一步地,若所述执行指令不合法,再次执行步骤s520,确定所述目标账号不用于切入所述宿主机中容器。若所述执行指令合法,执行步骤s540,确定所述目标账号用于切入所述宿主机中容器。
[0087]
其中,上述第一预设时长为根据实际需要设置的较短的时长(比如可以设置为5毫秒),本技术方案对此时长不做限定。
[0088]
示例性的,对于在登录宿主机之后的第一预设时长内接收到的、来自目标账号的执行命令的合法性校验方式如下:通过检验上述执行指令是否为预设指令的方式,来判断该指令是否合法。其中,预设指令为用于切入宿主机中容器的指令。本技术方案具体地指令形式不做限定,可以根据实际中切入宿主机中容器的指令确定。具体的,若上述指令与预设指令不同,则确定该指令不合法。反之,若上述指令与预设指令相同,则确定该指令合法。
[0089]
另一种示例性的实施例中,通过获取“/bin/docker_bash”执行bash命令参数的方式,来监听目标账号在登录宿主机之后所执行的命令。具体的,获取在上述目标账号ssh登录上述宿主机之后的第二预设时长内执行bash命令参数。
[0090]
其中,上述第二预设时长为根据实际需要设置的较短的时长(比如可以设置为5毫秒),本技术方案对此时长不做限定。
[0091]
响应于第二预设时长内获取到的壳程序的参数为空,说明该用户ssh登录宿主机之后并没切入容器,为了避免该账号恶意停留在宿主机,则可以通过结束该目标账号对应的bash,进而结束该目标账号在该宿主机的ssh登录,从而强制该目标账号退出登录。
[0092]
响应于第二预设时长内获取到的壳程序的参数不为空,然后进一步地检验获取到的壳程序的参数的合法性。示例性的,判断传递给bash的参数是否为“sudo docker exec”。若是,说明参数合法,即该用户ssh登录宿主机之后切入容器,则保持该目标账号的登录状态,保证用户正常使用容器。
[0093]
若传递给bash的参数不合法,则可以通过结束该目标账号对应的bash,进而结束该目标账号在该宿主机的ssh登录,从而强制该目标账号退出登录,从而阻止潜在的提权尝
试,以起到保护宿主机的作用。
[0094]
需要说明的是,上述第一预设时长、第二预设时长均是根据实际需要而设定的参数。示例性的,上述第一预设时长、第二预设时长取值可以为零,即,要么账号登录宿主机的命令中携带有切进容器的命令,则保持该类账号的登录状态,要么账号登录宿主机的命令中未携带有切进容器的命令,则强制退出该类账号在宿主机的登录。
[0095]
在示例性的实施例中,还可以通过“/bin/docker_bash”收集命令的使用情况,并发送到后台进行记录与统计。从而,后台可以全网统计用户使用容器登录情况,从而达到审计效果。
[0096]
在意示例性的实施例中,图6示出本公开又一示例性实施例中基于容器宿主机的安全保护方法的流程示意图。
[0097]
参考图6,在步骤s61中,用户通过终端610向容器管理后台620发起容器使用,比如创建容器、销毁容器、重建容器等。
[0098]
在步骤s62中,容器管理后台620按照用户的指令,向宿主机640发起相应的容器操作。具体地,可以通过步骤s22查看待登录的容器的宿主机ip,并进一步地,根据宿主机ip进行ssh登录宿主机。
[0099]
在步骤s63中,容器管理后台620向权限管理后台630发起通知,告知权限管理后台630用户增加容器的权限。
[0100]
在步骤s64中,权限管理后台630向容器所在宿主机640下发权限变更信息,包括该账号对宿主机的登录权限和该账号对容器的使用权限。其中,对宿主机的登录权限可以保证用户能够ssh登陆宿主机。
[0101]
在示例性的实施例中,对于没有容器使用权限的用户(如,非容器负责人等),可以通过申请容器使用权限的方式获取相关权限。具体地,参考图7示出本公开一示例性实施例中权限申请方法的流程示意图,包括:
[0102]
步骤s71,用户通过终端610发起容器权限申请。示例性的,没有容器使用权限的用户发起该申请,例如,非容器负责人发起该申请。而容器负责人可设置默认有相关容器权限而不需要法神权限申请。
[0103]
步骤s72,权限管理后台630对发起权限申请的用户进行判断,在确认权限申请合理之后生成账号。进一步地,可以将该账号的bash字段修改为专用/bin/docker_bash路径,以用于加强bash使用时对命令参数的监听与判断,从而判断该账号登录ssh宿主机后是否切进容器。
[0104]
步骤s73,权限管理后台630下发账号到宿主机640。示例性的,可通过openldap方案,或者业务运营平台添加本地账号,并确保宿主机640部署了专用bash。
[0105]
其中,通过业务运营平台的添加账号或者修改账号bash参考命令为:
[0106]
usermod-s/bin/docker_bash qinbochen(针对已有账号,需要修改)。
[0107]
useradd

s/bin/docker_bash qinbochen(针对没有账号,需要添加)。
[0108]
示例性的,可以由运维平台来保证所有的宿主机都安装了/bin/docker_bash这个程序。该程序的可能实现可以参考如表4所示的代码。
[0109]
步骤s74,根据上述账号,用户ssh登录宿主机。
[0110]
示例性的,用户可以通过容器登录工具go_docker的方式直接进入到容器,其对应
的实现可以如表3所示:
[0111]
表3
[0112][0113]
其中,表3中password一般是go_docker工具自动应答,不需要手动输入。或者通过校验其他有效凭证(比如证书、自研票据等)的方式登录。而容器id一般支持输入前几位,不需要输入完整容器id,由后台模糊匹配出完整的容器,方便用户使用。若通过上述实施例提供的方式校验到传递给bash的参数合法,则停留在容器的bash中,以保证用户正常使用容器。
[0114]
示例性的,对于跳过容器登录工具go_docker的方式进而容器,而是直接用ssh登录宿主机且不执行切换进容器的非法账号,其可以是无任何参数意欲停留在宿主机上,或者其他命令参数对宿主机提权或破坏。为了避免该类非法用户危害宿主机的安全性,通过上述实施例提供的方式校验到传递给bash的参数的合法性,即执行步骤s75:宿主机的ssh连接执行专用/bin/docker_bash,该专用bash进行对参数进行检测。
[0115]
步骤s76,专用bash检测到传递的参数不是切进容器,即传递给bash的参数不合法,则直接结束bash进程,进而结束了ssh登录,强制账号退出登录,以保护宿主机的安全。其中,专用bash的一种参考代码,如表4:
[0116]
表4
[0117]
[0118][0119]
而异常情况下,如果有用户不使用封装的工具go_docker,而是直接使用ssh来登录宿主机且不执行切进容器,则对应的账号将被强行退出登录。示例性的,可以在终端显示如表5的页面:
[0120]
表5
[0121][0122]
通过本技术方案能够避免不法用户绕过go_docker登录工具,直接使用ssh工具来登录宿主机且恶意停留宿主机而上不切进容器的行为,进而避免在宿主机中尝试其他提权活动,或实施破坏和入侵活动,从而有效保证宿主机的安全性。
[0123]
继续参考图7,步骤s77,对于异常登录使用,将行为发送到审计后台710。对于异常的使用,后台将知会到平台相关人员。开发了专用bash,该bash除了上述的检测逻辑,还可以进一步将登录和使用情况,发送到审计后台,审计后台可以掌控不法使用情况,从而发现异常情况。
[0124]
本领域技术人员可以理解实现上述实施方式的全部或部分步骤被实现为由处理器(包含cpu和gpu)执行的计算机程序。在该计算机程序被处理器执行时,执行本公开提供的上述方法所限定的上述功能。所述的程序可以存储于一种计算机可读存储介质中,该存储介质可以是只读存储器,磁盘或光盘等。
[0125]
此外,需要注意的是,上述附图仅是根据本公开示例性实施方式的方法所包括的处理的示意性说明,而不是限制目的。易于理解,上述附图所示的处理并不表明或限制这些处理的时间顺序。另外,也易于理解,这些处理可以是例如在多个模块中同步或异步执行的。
[0126]
以下对本技术方案提供的基于容器宿主机的安全保护装置进行介绍:
[0127]
本示例实施方式中提供的一种基于容器宿主机的安全保护装置。参考图8所示,该基于容器宿主机的安全保护装置800包括:权限确定模块801、监听模块802、切入确定模块803以及退出模块804。
[0128]
其中,上述权限确定模块,被配置为:确定目标账号具有使用目标容器的权限和具有登录宿主机的权限中的至少一种权限,其中所述容器存储于所述宿主机;上述监听模块802,被配置为:响应于上述目标账号登录上述宿主机,监听上述目标账号在上述宿主机的执行命令;上述切入确定模块803,被配置为:通过监听结果确定上述目标账号是否用于切入上述宿主机中容器;以及,上述退出模块804,被配置为:响应上述目标账号不用于切入上述宿主机中容器,退出上述目标账号在上述宿主机的登录。
[0129]
在示例性的实施例中,基于前述方案,上述切入确定模块803,被具体配置为:若上述监听结果为在上述目标账号登录上述宿主机之后,在第一预设时长内未接收到来自上述目标账号的执行命令,则确定上述目标账号不用于切入上述宿主机中容器。
[0130]
在示例性的实施例中,基于前述方案,上述装置还包括:校验模块805。
[0131]
其中,上述校验模块805被配置为:若上述监听结果为在上述目标账号登录上述宿主机之后,在上述第一预设时长内接收到来自上述目标账号的执行命令,检验上述执行命令的合法性;以及,若上述执行命令合法,则确定上述目标账号用于切入上述宿主机中容器;或,若上述执行命令不合法,则确定上述目标账号不用于切入上述宿主机中容器。
[0132]
在示例性的实施例中,基于前述方案,上述监听模块802,被具体配置为:响应于接收到上述目标账号通过壳程序登录上述宿主机,通过获取壳程序的参数以监听上述目标账号在上述宿主机的执行命令。
[0133]
在示例性的实施例中,基于前述方案,上述切入确定模块803,被具体配置为:获取在上述目标账号登录上述宿主机之后的第二预设时长内上述壳程序的参数;响应于上述第二预设时长内获取到的壳程序的参数为空,则确定上述执行命令不用于切入上述宿主机中容器。
[0134]
在示例性的实施例中,基于前述方案,上述校验模块805,被具体配置为:响应于上述第二预设时长内获取到的壳程序的参数不为空,检验上述第二预设时长内获取到的壳程序的参数的合法性;以及,若上述壳程序的参数合法,则确定上述目标账号用于切入上述宿主机中容器;或,若上述壳程序的参数不合法,则确定上述目标账号不用于切入上述宿主机中容器。
[0135]
在示例性的实施例中,基于前述方案,上述装置还包括:登录模块806。
[0136]
其中,上述登录模块806被配置为:获取上述目标账号待登录的目标容器的标识;根据上述目标容器的标识确定上述目标容器对应的宿主机的地址信息;以及,根据上述宿主机的地址信息使得上述目标账号登录宿主机。
[0137]
在示例性的实施例中,基于前述方案,上述装置还包括:记录模块807。
[0138]
其中,上述记录模块807被配置为:在退出上述目标账号在上述宿主机的登录之后,记录被退出的上述目标账号,以实现对不法登录宿主机的账号的记录。
[0139]
上述基于容器宿主机的安全保护装置中各模块或单元的具体细节已经在对应的基于容器宿主机的安全保护方法中进行了详细的描述,因此此处不再赘述。
[0140]
图9示出了适于用来实现本发明实施例的电子设备的计算机系统的结构示意图。
[0141]
需要说明的是,图9示出的电子设备的计算机系统900仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
[0142]
如图9所示,计算机系统900包括处理器901,其中处理器901可以包含:图形处理单元(graphics processing unit,gpu)、中央处理单元(central processing unit,cpu),其可以根据存储在只读存储器(read-only memory,rom)902中的程序或者从存储部分908加载到随机访问存储器(random access memory,ram)903中的程序而执行各种适当的动作和处理。在ram 903中,还存储有系统操作所需的各种程序和数据。处理器(gpu/cpu)901、rom 902以及ram 903通过总线904彼此相连。输入/输出(input/output,i/o)接口905也连接至总线904。
[0143]
以下部件连接至i/o接口905:包括键盘、鼠标等的输入部分906;包括诸如阴极射线管(cathode ray tube,crt)、液晶显示器(liquid crystal display,lcd)等以及扬声器等的输出部分907;包括硬盘等的存储部分908;以及包括诸如lan(local area network,局域网)卡、调制解调器等的网络接口卡的通信部分909。通信部分909经由诸如因特网的网络执行通信处理。驱动器910也根据需要连接至i/o接口905。可拆卸介质911,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器910上,以便于从其上读出的计算机程序根据需要被安装入存储部分908。
[0144]
特别地,根据本公开的实施例,下文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分909从网络上被下载和安装,和/或从可拆卸介质911被安装。在该计算机程序被处理器(gpu/cpu)901执行时,执行本技术的系统中限定的各种功能。在一些实施例中,计算机系统900还可以包括ai(artificial intelligence,人工智能)处理器,该ai处理器用于处理有关机器学习的计算操作。
[0145]
需要说明的是,本公开实施例所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(erasable programmable read only memory,eprom)、闪存、光纤、便携式紧凑磁盘只读存储器(compact disc read-only memory,cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本公开中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、有线等等,或者上述的任意合适的组合。
[0146]
附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
[0147]
描述于本公开实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现,所描述的单元也可以设置在处理器中。其中,这些单元的名称在某种情况下并不构成对该单元本身的限定。
[0148]
作为另一方面,本技术还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该电子设备执行时,使得该电子设备实现上述实施例中所述的方法。
[0149]
例如,所述的电子设备可以实现如图3中所示的:步骤s310,确定目标账号具有使用目标容器的权限和具有登录宿主机的权限中的至少一种权限,其中所述容器存储于所述宿主机;步骤s320,响应于所述目标账号登录所述宿主机,监听所述目标账号在所述宿主机的执行命令;步骤s330,通过监听结果判断所述目标账号是否用于切入所述宿主机中容器;以及,步骤s340,响应所述目标账号不用于切入所述宿主机中容器,退出所述目标账号在所述宿主机的登录。
[0150]
应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本公开的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。
[0151]
通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本公开实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是cd-rom,u盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、触控终端、或者网络设备等)执行根据本公开实施方式的方法。
[0152]
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本技术旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
[0153]
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1