CN115113970A - 一种基于容器引擎的数据处理方法以及相关设备 - Google Patents
一种基于容器引擎的数据处理方法以及相关设备 Download PDFInfo
- Publication number
- CN115113970A CN115113970A CN202110286214.XA CN202110286214A CN115113970A CN 115113970 A CN115113970 A CN 115113970A CN 202110286214 A CN202110286214 A CN 202110286214A CN 115113970 A CN115113970 A CN 115113970A
- Authority
- CN
- China
- Prior art keywords
- container
- legal
- illegal
- information
- result
- 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.)
- Pending
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 13
- 238000012795 verification Methods 0.000 claims abstract description 278
- 238000000034 method Methods 0.000 claims abstract description 204
- 230000008569 process Effects 0.000 claims abstract description 157
- 238000002955 isolation Methods 0.000 claims abstract description 130
- 230000001419 dependent effect Effects 0.000 claims abstract description 95
- 238000012545 processing Methods 0.000 claims abstract description 85
- 230000007246 mechanism Effects 0.000 claims abstract description 27
- 238000012544 monitoring process Methods 0.000 claims abstract description 27
- 238000004590 computer program Methods 0.000 claims description 11
- 238000004891 communication Methods 0.000 claims description 9
- 230000000903 blocking effect Effects 0.000 claims description 3
- 238000012986 modification Methods 0.000 claims description 3
- 230000004048 modification Effects 0.000 claims description 3
- 238000005516 engineering process Methods 0.000 description 24
- 230000006870 function Effects 0.000 description 10
- 238000007726 management method Methods 0.000 description 10
- 238000011161 development Methods 0.000 description 8
- 238000010586 diagram Methods 0.000 description 8
- 230000003993 interaction Effects 0.000 description 6
- 230000004044 response Effects 0.000 description 6
- 238000011160 research Methods 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 3
- 230000000977 initiatory effect Effects 0.000 description 3
- 238000012384 transportation and delivery Methods 0.000 description 3
- 241000700605 Viruses Species 0.000 description 2
- 230000006399 behavior Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 2
- 241000272185 Falco Species 0.000 description 1
- 230000002159 abnormal effect Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 230000002155 anti-virotic effect Effects 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 238000012550 audit Methods 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000010219 correlation analysis Methods 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 230000004927 fusion Effects 0.000 description 1
- ZXQYGBMAQZUVMI-GCMPRSNUSA-N gamma-cyhalothrin Chemical compound CC1(C)[C@@H](\C=C(/Cl)C(F)(F)F)[C@H]1C(=O)O[C@H](C#N)C1=CC=CC(OC=2C=CC=CC=2)=C1 ZXQYGBMAQZUVMI-GCMPRSNUSA-N 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000012954 risk control Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
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/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
- G06F21/53—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/20—Network architectures or network communication protocols for network security for managing network security; network security policies in general
-
- 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/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45587—Isolation or security of virtual machine instances
-
- 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/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45595—Network integration; Enabling network access in virtual machine instances
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/2141—Access rights, e.g. capability lists, access control lists, access tables, access matrices
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Storage Device Security (AREA)
Abstract
本发明公开了一种基于容器引擎的数据处理方法以及相关设备,该数据处理方法包括:通过容器引擎守护进程根据针对隔离容器的创建请求生成容器守护进程;当监听到针对隔离容器所生成的容器创建进程启动时,将创建请求从容器引擎守护进程转发至安全策略代理组件;从创建请求中获取隔离容器对应的创建依赖资源信息;获取针对容器引擎的合法策略文件,根据合法策略文件和创建依赖资源信息进行合法验证,得到合法验证结果;若合法验证结果为非法结果,则按照非法处理机制对容器创建进程进行处理;若合法验证结果为合法结果,则通过容器创建进程创建隔离容器。采用本发明提供的方法,可以避免恶意容器被启动,提高容器运行环境的安全性。
Description
技术领域
本申请涉及云技术领域,尤其涉及一种基于容器引擎的数据处理方法以及相关设备。
背景技术
Docker(应用容器引擎)是一个开源的软件容器平台,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux(一种操作***内核)机器上,也可以实现虚拟化。通过Docker技术可以帮助企业快速水平扩展服务,从而到达弹性部署业务的能力。
但是,随着Docker的发展与普及,用户使用Docker时所面临的安全风险也越来越多,比如,容器不可信,容器携带高危漏洞,容器具有高权限,容器挂载了客户端高危目录、启动Docker的用户不合规、错误口令用户启动口令容器等等。目前,用户通过Docker启动容器时,很容易运行可疑容器,导致客户端环境被攻击,从而造成隐私泄露、文件丢失等损失。
发明内容
本申请实施例提供一种基于容器引擎的数据处理方法以及相关设备,可以避免恶意容器被启动,提高了容器运行环境的安全性。
本申请实施例一方面提供了一种基于容器引擎的数据处理方法,包括:
当容器引擎守护进程获取到针对隔离容器的创建请求时,根据创建请求生成针对隔离容器的容器创建进程;
当监听到容器创建进程启动时,将创建请求从容器引擎守护进程转发至安全策略代理组件;
通过安全策略代理组件从创建请求中获取隔离容器对应的创建依赖资源信息;
通过安全策略代理组件获取针对容器引擎的合法策略文件,根据合法策略文件对创建依赖资源信息进行合法验证,得到隔离容器对应的合法验证结果;
若合法验证结果为非法结果,则按照非法处理机制对容器创建进程进行处理;
若合法验证结果为合法结果,则通过容器创建进程创建隔离容器。
本申请实施例一方面提供了一种基于容器引擎的数据处理装置,包括:
请求处理模块,用于当容器引擎守护进程获取到针对隔离容器的创建请求时,根据创建请求生成针对隔离容器的容器创建进程;
监听获取模块,用于当监听到容器创建进程启动时,将创建请求从容器引擎守护进程转发至安全策略代理组件;通过安全策略代理组件从创建请求中获取隔离容器对应的创建依赖资源信息;
合法验证模块,用于通过安全策略代理组件获取针对容器引擎的合法策略文件,根据合法策略文件对创建依赖资源信息进行合法验证,得到隔离容器对应的合法验证结果;
非法处理模块,用于若合法验证结果为非法结果,则按照非法处理机制对容器创建进程进行处理;
合法处理模块,若合法验证结果为合法结果,则通过容器创建进程创建隔离容器。
其中,请求处理模块,包括:
镜像获取单元,用于当容器引擎守护进程获取到针对隔离容器的创建请求时,通过容器引擎守护进程获取针对隔离容器的镜像数据;
进程生成单元,用于在容器引擎守护进程中,基于镜像数据和创建请求生成针对隔离容器的容器创建进程。
其中,监听获取模块,包括:
第一监听单元,当通过容器引擎守护进程关联的钩子脚本,监听到容器创建进程启动时,通过钩子脚本暂停运行容器创建进程,通过钩子脚本将创建请求从容器引擎守护进程转发至安全策略代理组件。
其中,监听获取模块,包括:
第二监听单元,用于当通过安全策略代理组件关联的内核钩子脚本,监听到容器创建进程启动时,通过内核钩子脚本暂停运行容器创建进程,在安全策略代理组件中,通过内核钩子脚本从容器引擎守护进程获取创建请求。
其中,创建依赖资源信息包括用户信息;
合法验证模块,包括:
用户信息验证单元,用于通过安全策略代理组件在合法策略文件中获取非法用户信息列表;
用户信息验证单元,还用于根据用户信息遍历查找非法用户信息列表;
用户信息验证单元,还用于若在非法用户信息列表中查找到与用户信息相同的非法用户信息,则确定合法验证结果为非法结果;
用户信息验证单元,还用于若没有在非法用户信息列表中查找到与用户信息相同的非法用户信息,则确定合法验证结果为合法结果。
其中,创建依赖资源信息包括第一镜像信息;
合法验证模块,包括:
非法镜像验证单元,用于通过安全策略代理组件从合法策略文件中获取非法镜像列表;
非法镜像验证单元,还用于根据第一镜像信息遍历查找非法镜像列表;
非法镜像验证单元,还用于若在非法镜像列表中查找到与第一镜像信息相同的镜像信息,则确定合法验证结果为非法结果;
非法镜像验证单元,还用于若没有在非法镜像列表中查找到与第一镜像信息相同的镜像信息,则确定合法验证结果为合法结果。
其中,合法验证模块,包括:
特权字段验证单元,用于通过安全策略代理组件在合法策略文件中查找非法特权字段信息;
特权字段验证单元,还用于当非法特权字段信息为第一特权状态信息时,在创建依赖资源信息中查找目标特权字段信息;
特权字段验证单元,还用于若在创建依赖资源信息中未查找到目标特权字段信息,则确定合法验证结果为合法结果;
特权字段验证单元,还用于若在创建依赖资源信息中查找到目标特权字段信息,则获取目标特权字段信息对应的特权状态信息;
特权字段验证单元,还用于若目标特权字段信息对应的特权状态信息为生效状态信息,则确定合法验证结果为非法结果;
特权字段验证单元,还用于若目标特权字段信息对应的特权状态信息为无效状态信息,则确定合法验证结果为合法结果。
其中,创建依赖资源信息包括加载目录路径;
合法验证模块,包括:
敏感目录验证单元,用于通过安全策略代理组件从合法策略文件中获取敏感挂载目录路径;
敏感目录验证单元,还用于根据加载目录路径遍历查找敏感挂载目录路径;
敏感目录验证单元,还用于若在敏感挂载目录路径中查找到与加载目录路径相同的目录路径,则确定合法验证结果为非法结果;
敏感目录验证单元,还用于若没有在敏感挂载目录路径中查找到与加载目录路径相同的目录路径,则确定合法验证结果为合法结果。
其中,创建依赖资源信息包括第二镜像信息;
合法验证模块,包括:
镜像验证单元,用于通过安全策略代理组件在合法策略文件中获取需验证镜像列表;
镜像验证单元,还用于若第二镜像信息不属于需验证镜像列表,则确定合法验证结果为合法结果;
镜像验证单元,还用于若第二镜像信息属于需验证镜像列表,则通过安全策略代理组件生成口令验证请求;
口令验证单元,用于根据口令验证请求,获取针对隔离容器的镜像口令信息;
口令验证单元,还用于若镜像口令信息为合法口令信息,则确定合法验证结果为合法结果;
口令验证单元,还用于若镜像口令信息为非法口令信息,则确定合法验证结果为非法结果。
其中,数据处理装置,还包括:
文件接收模块,用于接收容器安全服务端发送的目标策略文件和目标策略文件关联的签名文件;
签名验证模块,用于获取目标公钥;目标公钥为容器安全服务端的公钥;
签名验证模块,还用于通过目标公钥对签名文件进行解密,得到待验证哈希值,获取目标策略文件对应的文件哈希值,根据待验证哈希值和文件哈希值验证签名文件,得到签名验证结果;
签名验证模块,还用于若签名验证结果为验签成功结果,则将目标策略文件存储为针对容器引擎的合法策略文件;属于验签成功的签名文件,是由容器安全服务端通过所拥有的私钥对目标策略文件进行签名得到。
其中,数据处理装置,还包括:
监听模块,用于监听容器安全服务端对目标策略文件的更新状态;
监听模块,还用于若监听到目标策略文件的更新状态为修改状态,则从容器安全服务端获取修改后的目标策略文件,根据修改后的目标策略文件更新针对容器引擎的合法策略文件。
其中,目标策略文件是由容器安全服务端根据非法用户信息、非法镜像列表、非法特权字段信息、敏感挂载目录路径和需验证镜像列表生成的;非法镜像列表是容器安全服务端从镜像仓库管理***中获取的。
其中,非法处理模块,包括:
第一非法处理单元,用于若非法结果为第一非法结果,则通过容器创建进程创建隔离容器,按照第一非法处理机制向容器安全服务端发送告警信息,以使容器安全服务端根据隔离容器的运行情况和告警信息更新目标策略文件;
第二非法处理单元,用于若非法结果为第二非法结果,则按照第二非法处理机制阻断容器创建进程。
本申请实施例一方面提供了一种计算机设备,包括:处理器和存储器;
处理器与存储器相连,其中,存储器用于存储计算机程序,计算机程序被处理器执行时,使得该计算机设备执行本申请实施例提供的方法。
本申请实施例一方面提供了一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,该计算机程序适于由处理器加载并执行,以使得具有该处理器的计算机设备执行本申请实施例提供的方法。
本申请实施例一方面提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行本申请实施例提供的方法。
在本申请实施例中,当容器引擎守护进程获取到针对隔离容器的创建请求时,可以根据创建请求生成针对隔离容器的容器创建进程;然后当监听到容器创建进程启动时,将创建请求从容器引擎守护进程转发至安全策略代理组件,再通过安全策略代理组件从创建请求中获取隔离容器对应的创建依赖资源信息,然后通过安全策略代理组件获取针对容器引擎的合法策略文件,根据合法策略文件对创建依赖资源信息进行合法验证,得到隔离容器对应的合法验证结果;若合法验证结果为非法结果,则按照非法处理机制对容器创建进程进行处理;若合法验证结果为合法结果,则通过容器创建进程创建隔离容器。采用本申请实施例提供的方法,在启动容器创建进程时,从创建请求中获取创建依赖资源信息,然后根据创建依赖资源信息和合法策略文件对隔离容器做合法验证,验证通过后才根据该容器创建进程创建隔离容器,可以避免恶意容器被启动,提高了容器运行环境的安全性。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种网络架构图;
图2a-图2b是本申请实施例提供的一种基于容器引擎的数据处理场景示意图;
图3是本申请实施例提供的一种基于容器引擎的数据处理方法的流程示意图;
图4是本申请实施例提供的一种容器启动防护方法的整体流程图;
图5是本申请实施例提供的一种容器启动防护方法的流程示意图;
图6是本申请实施例提供的一种策略下发过程的流程示意图;
图7是本申请实施例提供的一种基于容器引擎的数据处理装置的结构示意图;
图8是本申请实施例提供的一种计算机设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
云技术(Cloud technology)是基于云计算商业模式应用的网络技术、信息技术、整合技术、管理平台技术、应用技术等的总称,可以组成资源池,按需所用,灵活便利。云计算技术将变成重要支撑。技术网络***的后台服务需要大量的计算、存储资源,如视频网站、图片类网站和更多的门户网站。伴随着互联网行业的高度发展和应用,将来每个物品都有可能存在自己的识别标志,都需要传输到后台***进行逻辑处理,不同程度级别的数据将会分开处理,各类行业数据皆需要强大的***后盾支撑,只能通过云计算来实现。
云计算(cloud computing)指IT基础设施的交付和使用模式,指通过网络以按需、易扩展的方式获得所需资源;广义云计算指服务的交付和使用模式,指通过网络以按需、易扩展的方式获得所需服务。这种服务可以是IT和软件、互联网相关,也可是其他服务。云计算是网格计算(Grid Computing)、分布式计算(Distributed Computing)、并行计算(Parallel Computing)、效用计算(Utility Computing)、网络存储(Network StorageTechnologies)、虚拟化(Virtualization)、负载均衡(Load Balance)等传统计算机和网络技术发展融合的产物。
随着互联网、实时数据流、连接设备多样化的发展,以及搜索服务、社会网络、移动商务和开放协作等需求的推动,云计算迅速发展起来。不同于以往的并行分布式计算,云计算的产生从理念上将推动整个互联网模式、企业管理模式发生革命性的变革。
本申请实施例提供的方案属于云技术领域下属的云安全(Cloud Security)。
云安全(Cloud Security)是指基于云计算商业模式应用的安全软件、硬件、用户、机构、安全云平台的总称。云安全融合了并行处理、网格计算、未知病毒行为判断等新兴技术和概念,通过网状的大量客户端对网络中软件行为的异常监测,获取互联网中木马、恶意程序的最新信息,并发送到服务端进行自动分析和处理,再把病毒和木马的解决方案分发到每一个客户端。
云安全主要研究方向包括:1.云计算安全,主要研究如何保障云自身及云上各种应用的安全,包括云计算机***安全、用户数据的安全存储与隔离、用户接入认证、信息传输安全、网络攻击防护、合规审计等;2.安全基础设施的云化,主要研究如何采用云计算新建与整合安全基础设施资源,优化安全防护机制,包括通过云计算技术构建超大规模安全事件、信息采集与处理平台,实现对海量信息的采集与关联分析,提升全网安全事件把控能力及风险控制能力;3.云安全服务,主要研究各种基于云计算平台为用户提供的安全服务,如防病毒服务等。
图1是本申请实施例提供的一种网络架构图。如图1所示,该网络架构可以包括安全服务器100以及终端集群,其中,上述终端集群可以包括多个终端,如图1所示,具体可以包括终端10a、终端10b、终端10c、…、终端10n。如图1所示,终端10a、终端10b、终端10c、…、终端10n可以分别与上述安全服务器100进行网络连接,以便于每个终端可以通过网络连接与安全服务器100进行数据交互,以便于每个终端可以接收到来自于上述安全服务器100的安全数据。
如图1所示,每个终端均可以集成安装有目标应用,当该目标应用运行于各终端时,每个终端可以通过该目标应用生成隔离容器。其中,该目标应用可以为能够创建和使用隔离容器的容器引擎。上述安全服务器100可以将安全数据分别下发给每个终端。其中,安全数据可以是目标策略文件和目标策略文件相关联的签名文件。其中,目标策略文件可以是针对根据非法用户信息、非法镜像列表、非法特权字段信息、敏感挂载目录路径和需验证镜像列表生成的。其中,签名文件,是安全服务器100通过私钥对目标策略文件进行签名得到的。上述每个终端接收到安全服务器100传来的安全数据,会获取该安全服务器100对应的公钥,通过该公钥对签名文件进行验签处理,验签成功则可以确定该安全数据来自于安全服务器100,终端会将该目标策略文件作为合法策略文件进行存储。上述每个终端存储了合法策略文件后,在通过该目标应用生成隔离容器之前,可以先通过该合法策略文件对该隔离容器做合法验证,然后根据合法验证结果来确定是否生成该隔离容器。由此可见,本申请中生成隔离容器之前需要先通过合法策略文件对隔离容器做合法验证,验证通过才能启动隔离容器,可以避免恶意容器的启动,减少风险的发生。
可以理解的是,本申请实施例提供的方法可以由计算机设备执行,计算机设备包括但不限于终端或安全服务器。其中,安全服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式***,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算服务的云服务器。
可以理解的是,上述设备(如上述安全服务器100、终端10a、终端10b、终端10c、…、终端10n)可以是一个分布式***中的一个节点,其中,该分布式***可以为区块链***,该区块链***可以是由该多个节点通过网络通信的形式连接形成的分布式***。其中,节点之间可以组成的点对点(P2P,Peer To Peer)网络,P2P协议是一个运行在传输控制协议(TCP,Transmission Control Protocol)协议之上的应用层协议。在分布式***中,任意形式的计算机设备,比如服务器、终端等电子设备都可以通过加入该点对点网络而成为该区块链***中的一个节点。
其中,终端以及安全服务器可以通过有线或无线通信方式进行直接或间接地连接,本申请在此不做限制。
其中,图1中的终端10a、终端10b、终端10c以及终端10n可以包括手机、平板电脑、笔记本电脑、掌上电脑、智能音响、移动互联网设备(MID,mobile internet device)、POS(Point Of Sales,销售点)机、可穿戴设备(例如智能手表、智能手环等)等。
下述以终端10b接收安全服务器100的目标策略文件后,在启动容器前进行合法验证为例进行说明。
为便于理解,请参见图2a-图2b,图2a-图2b是本申请实施例提供的一种基于容器引擎的数据处理场景示意图。如图2a所示,安全服务器100可以通过策略配置处理生成目标策略文件,然后对该目标策略文件做签名处理,得到签名文件,然后,安全服务器100会将目标策略文件和签名文件一起发送给终端10b。其中,策略配置处理可以是,根据策略配置规则和非法用户信息、非法镜像列表、非法特权字段信息、敏感挂载目录路径和需验证镜像列表等信息生成目标策略文件。其中,策略配置规则可以是用户根据需求人工设定的,这里不作限定。其中,签名处理可以是安全服务器100通过所拥有的私钥对签名文件进行签名,得到签名文件。终端10b接收到签名文件和目标策略文件后,需要先针对签名文件进行验签处理,即通过安全服务器100的公钥对该签名文件进行签名验证,如果验签成功,说明接收到的签名文件和策略文件是由安全服务器100发送的,该签名文件和策略文件的来源是可靠的,因此,终端10b可以将该目标策略文件作为合法策略文件进行存储。
终端10b存储了合法策略文件后,在监听到针对隔离容器的容器创建进程启动时,就可以先暂停运行该容器创建进程,根据合法策略文件和创建依赖资源信息做合法验证,验证通过才继续运行该容器创建进程,生成隔离容器;验证不通过就根据非法处理机制对该容器创建进程进行处理。如图2b所示,终端10b上集成安装有容器引擎客户端11,用户A打算通过容器引擎客户端11启动容器B来进行应用的开发,终端10b响应用户A对容器引擎客户端11的操作,获取了针对容器B的创建请求,然后,终端10b根据创建请求生成了针对容器B的容器创建进程。用户A作为容器引擎客户端11普通的使用用户,可能并不知道容器B是否存在不可信、携带高危漏洞、具有高权限、挂载了终端10b的高危目录等容器风险问题,也可能出现对容器引擎客户端11不熟悉而使用了高用户权限去启动容器B、或者使用错误口令启动容器B等操作风险问题,此时如果终端10b根据容器创建进程生成了容器B并运行,很有可能遭遇黑客入侵等安全问题,导致运行环境被攻击,给用户A带来损失。因此,终端10b在监听到针对容器B的容器创建进程启动时,会先暂停运行该容器创建进程,然后从创建请求中获取创建依赖资源信息,获取如图2a中所示存储在本地的合法策略文件,然后根据创建依赖资源信息和合法策略文件对容器B做合法验证。其中,创建依赖资源信息可以包括用户信息、第一镜像信息、特权字段信息、加载目录路径、第二镜像信息等等,针对不同类型的创建依赖资源信息,可以在合法策略文件中找到对应的策略来做合法验证,当所有创建依赖资源信息均通过合法验证以后,终端10b会确定针对容器B的创建请求验证通过,如果有任何一条创建依赖资源信息没有通过合法验证,则确定验证失败。如图2b所示,假设容器B是不可信容器,则终端10b在对容器B做合法验证后,会确认验证失败,此时,终端10b会阻断容器创建进程,然后提示用户A启动失败。
上述可知,终端10b在获取到针对容器B的创建请求后,监听到针对容器B所生成的容器创建进程启动时,从创建请求中获取创建依赖资源信息以后,再根据合法策略文件和创建依赖资源信息对容器B进行合法验证,得到合法验证结果,最后根据合法验证结果来对容器创建进程进行处理,具体实现过程可以如下:
在终端10b中,包含有容器引擎客户端11对应的容器引擎守护进程。其中,容器引擎守护进程可以与容器引擎客户端11进行交互,并管理容器的启动、运行、生成。终端10b会将容器B的创建请求发送到该容器引擎守护进程。当容器引擎守护进程获取到该创建请求时,可以根据该创建请求生成针对容器B的容器创建进程。终端10b可以监听该容器创建进程,当监听到容器创建进程启动时,将该创建请求从容器引擎守护进程转发至安全策略代理组件。其中,监听到容器创建进程启动进行创建请求的转发,可以通过容器引擎守护进程来实现,也可以通过安全策略代理组件来实现。然后,终端10b可以通过安全策略代理组件从创建请求中获取隔离容器对应的创建依赖资源信息,再通过安全策略代理组件获取合法策略文件,同创建依赖资源信息一起针对容器B进行合法验证,得到合法验证结果。然后终端10b会将该合法验证结果发送给容器引擎守护进程,在容器引擎守护进程中,根据该合法验证结果对该容器创建进程进行处理,并将处理结果返给到容器引擎客户端11。
可选的,上述提到的有关安全策略代理组件所实现的数据处理方法,均可以在容器引擎守护进程中实现,只需将对应的功能模块内置到容器引擎守护进程中。
进一步地,请参见图3,图3是本申请实施例提供的一种基于容器引擎的数据处理方法的流程示意图,该方法由图1中所述的计算机设备执行,即可以为图1中的安全服务器100,也可以为图1中的终端集群(也包括终端10a、终端10b、终端10c以及终端10n)。如图3所示,该数据处理过程包括如下步骤:
步骤S101,当容器引擎守护进程获取到针对隔离容器的创建请求时,根据所述创建请求生成针对所述隔离容器的容器创建进程。
具体的,隔离容器可以是一种能够将软件打包成标准化单元,以用于开发、交付和部署的容器。容器是完全使用沙箱机制,相互之间不会有任何接口。容器的创建可以通过容器引擎来实现,比如Docker(一个开源的应用容器引擎)。通过容器引擎,开发者可以打包他们的应用以及依赖包到一个可移植的隔离容器中,然后发布到任何流行的Linux(一种操作***内核)机器上,也可以实现虚拟化。容器引擎可以集成安装在计算机设备中,包含容器引擎客户端和容器引擎守护进程。其中,容器引擎客户端是一个泛称,它可以是命令行工具,也可以是遵循了docker API(docker application programming interface,应用容器引擎接口)规则的客户端,简单地说可以理解为一个用于交互/发送指令的接口。其中,容器引擎守护进程管理镜像和容器。容器引擎客户端可以同用户进行交互,即响应用户的相关操作生成命令请求,然后发送给容器引擎守护进程,容器引擎守护进程负责根据接收到的命令请求完成相应的任务,并把结果返回给容器引擎客户端。
具体的,容器引擎守护进程获取到针对隔离容器的创建请求,可以是,计算机设备响应通过容器引擎客户端实现的针对隔离容器的启动操作,生成针对隔离容器的创建请求,然后将该创建请求发送到容器引擎守护进程。其中,创建请求可以包含用户信息、镜像信息、加载目录信息、特权字段信息等等。
具体的,根据创建请求生成针对隔离容器的容器创建进程,可以是,计算机设备通过容器引擎守护进程获取针对隔离容器的镜像数据,然后,在容器引擎守护进程中,基于该镜像数据和创建请求生成针对隔离容器的容器创建进程。其中,镜像数据对应的镜像,是一个特殊的文件***,除了提供隔离容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。其中,镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体,容器可以被创建、启动、停止、删除、暂停等。其中,获取镜像数据可以从计算机设备存储的镜像文件中获取,也可以从远端的镜像仓库中获取,这里不作限制。
步骤S102,当监听到所述容器创建进程启动时,将所述创建请求从所述容器引擎守护进程转发至安全策略代理组件;通过所述安全策略代理组件从所述创建请求中获取所述隔离容器对应的创建依赖资源信息。
具体的,由于隔离容器的安全性不可知,计算机设备直接通过容器创建进程创建隔离容器,然后启动该隔离容器为用户提供服务,很有可能产生风险,因此,在本申请实施例中,计算机设备会监听容器引擎守护进程根据创建请求生成的容器创建进程,当监听到容器创建进程启动时,将创建请求从容器引擎守护进程转发至安全策略代理组件,然后通过安全策略代理组件从创建请求中获取创建依赖资源信息。其中,安全策略代理组件是一种在分布式***中持续自主发挥作用的应用程序,可以用于验证隔离容器的合法性。其中,创建依赖资源信息是隔离容器被创建所依赖的资源信息中待验证的信息,可以包含用户信息、镜像信息、加载目录信息、特权字段信息等等。
具体的,当监听到容器创建进程启动时,将创建请求从容器引擎守护进程转发至安全策略代理组件。监听的其中一种方式可以为:当通过容器引擎守护进程关联的钩子脚本,监听到容器创建进程启动时,通过钩子脚本暂停运行容器创建进程,通过钩子脚本将创建请求从容器引擎守护进程转发至安全策略代理组件。其中,钩子(Hook),是消息处理机制的一个平台,应用程序可以在上面设置子程序以监视指定窗口的某种消息,而且所监视的窗口可以是其他进程所创建的。也就是说,容器引擎守护进程可以通过钩子,关联钩子脚本,也就是钩子子程序,来监听自己生成的容器创建进程的启动,然后在监听到该容器创建进程启动时,拦截该容器创建进程,先暂停隔离容器的启动,将创建请求转发至安全策略代理组件,以便于安全策略代理组件根据创建请求获取创建依赖资源信息进行针对隔离容器的合法验证,然后接收安全策略代理组件返回的合法验证结果,再对该容器创建进程进行后续处理。
监听的另一种方式可以为:当通过安全策略代理组件关联的内核钩子脚本,监听到容器创建进程启动时,通过内核钩子脚本暂停运行容器创建进程,在安全策略代理组件中,通过内核钩子脚本从容器引擎守护进程获取创建请求。也就是说,安全策略代理组件可以通过钩子,关联内核钩子脚本,也就是内核钩子子程序,来监听容器引擎守护进程生成的容器创建进程的启动,然后在监听到该容器创建进程启动时,拦截该容器创建进程,先暂停隔离容器的启动,然后从容器引擎守护进程中获取创建请求,然后从创建请求中获取创建依赖资源信息进行针对隔离容器的合法验证,然后将合法验证结果发送给容器引擎守护进程,以便于容器引擎守护进程对该容器创建进程进行后续处理。
监听的另一种方式为:当通过容器引擎守护进程关联的钩子插件,监听到容器创建进程启动时,通过该钩子插件暂停运行容器创建进程,通过该钩子插件中的内建服务器,将创建请求发送给安全策略代理组件。其中,钩子插件运行在容器引擎守护进程外,通常通过自身的内建服务器与容器引擎守护进程通信,因此,可以通过钩子插件的内建服务器同安全策略代理组件进行通信。
步骤S103,通过所述安全策略代理组件获取针对所述容器引擎的合法策略文件,根据所述合法策略文件和所述创建依赖资源信息进行合法验证,得到所述隔离容器对应的合法验证结果。
具体的,合法策略文件规定了验证隔离容器的规则与方法,合法策略文件中可以包含有至少一条策略规则,每条策略规则可以对应隔离容器的一条创建依赖资源信息,并对该创建依赖资源信息进行合法验证。因此,计算机设备通过上述安全策略代理组件在创建请求中获取创建依赖资源信息时,可以根据合法策略文件中的策略规则来获取。合法策略文件可以通过容器安全服务端(可以为如上述图1所示的安全服务器100)来配置。计算机设备可以接收容器安全服务端传来的目标策略文件和目标策略文件关联的签名文件。其中,目标策略文件可以是由容器安全服务端根据非法用户信息、非法镜像列表、非法特权字段信息、敏感挂载目录路径和需验证镜像列表生成的。其中,非法镜像列表可以是容器安全服务端从镜像仓库管理***中获取的。其中,签名文件可以是容器安全服务端通过所拥有的私钥加密得到的。
实际上,计算机设备并不能确定所接收到的目标策略文件和目标策略文件关联的签名文件来源于容器安全服务端,因此,计算机设备会通过安全策略代理组件对该目标签名文件进行签名验证处理,即获取容器安全服务端的公钥,然后通过该公钥对该签名文件进行解密,得到待验证哈希值。然后计算机设备会获取该目标策略文件对应的文件哈希值,根据待验证哈希值和文件哈希值验证该签名文件,得到签名验证结果。其中,根据待验证哈希值和文件哈希值验证该签名文件,得到签名验证结果,可以是,如果待验证哈希值和文件哈希值相同,则将签名验证结果确定为验签成功结果;如果待验证哈希值和文件哈希值不相同,则将签名验证结果确定为验签失败结果。如果确定签名验证结果为验签成功结果,说明接收到的目标策略文件和签名文件均来自于容器安全服务端,计算机设备会将该目标策略文件作为合法策略文件进行存储,然后在对隔离容器进行合法验证时直接调用。
可选的,计算机设备可以通过安全策略代理组件持续监听容器安全服务端对目标策略文件的更新状态;若监听到目标策略文件的更新状态为修改状态,则从容器安全服务端获取修改后的目标策略文件,根据修改后的目标策略文件更新存储的合法策略文件。
通过合法策略文件计算机设备可以对隔离容器对应的创建依赖资源信息进行合法验证,当隔离容器对应的创建依赖资源信息符合合法策略文件中的策略规则时,确定该隔离容器的合法验证结果为合法结果;当隔离容器对应的创建依赖资源信息不符合合法策略文件中的策略规则时,确定该隔离容器的合法验证结果为非法结果。
需要说明的是,当通过多条策略规则共同对隔离容器进行合法验证时,只要有一条策略规则对应的合法验证不通过,则确定合法验证结果为非法结果。
步骤S104,若所述合法验证结果为非法结果,则按照非法处理机制对所述容器创建进程进行处理;若所述合法验证结果为合法结果,则通过所述容器创建进程创建所述隔离容器。
具体的,上述可知,计算机设备可以通过安全策略代理组件对隔离容器进行合法验证,得到合法验证结果后,会将该合法验证结果转发到容器引擎守护进程,然后,计算机设备可以通过容器引擎守护进程来对容器创建进程进行后续处理。
具体的,计算机设备通过容器引擎守护进程来对容器创建进程进行后续处理,可以是,如果合法验证结果为合法结果,则通过容器创建进程创建隔离容器;如果合法验证结果为非法结果,则可以按照非法处理机制对该容器创建进程进行处理,比如,阻断该容器创建进程,不创建该隔离容器,并将处理结果发送到容器引擎客户端。
实际上,上述针对隔离容器的多个可行的实施例中提到的策略规则,非法性是有差异的,也就是说,当隔离容器不满足某条策略规则时,对应的非法性弱,运行该隔离容器面临的风险很小,此时如果直接阻断该隔离容器的容器创建进程,对开发人员的开发会带来一定的影响。因此,可以将非法处理机制分为第一非法处理机制和第二非法处理机制。例如,若非法结果为第一非法结果,则可以通过容器创建进程创建隔离容器,按照第一非法处理机制向容器安全服务端发送告警信息,以使容器安全服务端根据隔离容器的运行情况和告警信息更新目标策略文件;若非法结果为第二非法结果,则按照第二非法处理机制阻断容器创建进程。其中,第一非法结果可以表征隔离容器的非法性程度较弱,第二非法结果可以表征隔离容器的非法性程度较强。其中,第一非法结果和第二非法结果的区分,可以根据隔离容器不符合策略规则的条数来确定,即如果隔离容器对应的创建依赖资源信息不满足的策略规则数量超过严重非法阈值时,确定该隔离容器的合法验证结果为第二非法结果,如果该隔离容器不符合的策略规则数量较少且不为0时,确定该隔离容器的合法验证结果为第一非法结果。或者,第一非法结果和第二非法结果的区分,也可以根据策略的非法严重性来决定,如果隔离容器对应的创建依赖资源信息不符合的策略规则的非法严重性较低,则确定合法验证结果为第一非法结果;如果隔离容器对应的创建依赖资源信息不符合的策略规则的非法严重性较高,则确定合法验证结果为第二非法结果。其中,容器安全服务端根据隔离容器的运行情况和告警信息更新目标策略文件,可以是,容器安全服务端根据计算机设备传来的告警信息,监听计算机设备的隔离容器运行情况,如果该隔离容器运行期间,发生风险问题,说明策略文件中第一非法结果和第二非法结果的确定机制有问题,可以调整该确定机制,即可以更新目标策略文件。比如,隔离容器A进行合法验证时违反了策略B,策略B的非法严重性为低,因此进过合法验证后,计算机设备依然启动了隔离容器A,但是计算机设备会向容器安全服务端发送告警信息,容器安全服务端会监听隔离容器A的运行情况,如果监听到隔离容器A带来运行问题,产生风险,容器安全服务端可以将策略A的非法严重性调为高。
通过本申请实施例提供的方法,计算机设备在获取到隔离容器的创建请求后,根据该创建请求通过容器引擎守护进程获取镜像数据,然后通过容器引擎守护进程根据该镜像数据和创建请求生成容器创建进程时,计算机设备会通过钩子技术拦截该容器创建进程,暂停该容器创建进程的运行,然后通过钩子技术将创建请求转发至安全策略代理组件,再通过安全策略代理组件获取创建请求中的创建依赖资源信息,并对该创建依赖资源信息进行合法验证,得到合法验证结果后,将合法验证结果返回到容器引擎守护进程,如果合法验证结果为合法结果,才继续通过该容器引擎创建进程启动隔离容器,否则,阻断该隔离容器的启动。通过本申请实施例提供的方法,可以在通过容器引擎启动隔离容器时,对隔离容器的合法性进行验证,阻止非法容器的启动,能够提高隔离容器运行环境的安全性。
为便于理解,下述以容器引擎为docker容器引擎为例,进一步说明上述针对隔离容器进行合法验证的数据处理流程。
进一步地,请参见图4,图4是本申请实施例提供的一种容器启动防护方法的整体流程图。如图4所示,整体流程涉及到开发人员、容器引擎客户端(client)、容器引擎代理(daemon)、镜像仓库(本地)、本机、安全策略代理(agent)、安全策略服务。其中,容器引擎客户端可以为上述图2b所示的容器引擎客户端11,给开发人员提供服务,在docker容器引擎中可以为docker client。其中,容器引擎代理即上述图3所对应实施例所述的容器引擎守护进程,可以为docker容器引擎对应的docker daemon。其中,镜像仓库是集中存储镜像的地方,本地镜像仓库是指存储在终端中的镜像仓库。其中,本机就是指开发人员启动容器时所使用的终端。其中,安全策略代理即上述图3所对应实施例所述的安全策略代理组件,可以为安全策略代理agent(一种软硬件***)。其中,安全策略服务即上述图3所对应实施例所述的容器安全服务端。其中,应用客户端、容器引擎代理、镜像仓库、安全策略代理可以通过终端(即本机)直接或间接的调用,终端可以为上述图1所示的终端集群中的任一终端。安全策略服务可以为上述图1中的安全服务器100。如图4所示,该容器启动防护方法可以包含两部分:
第一部分,策略下发:
S411:安全策略服务响应策略配置操作生成策略文件。
具体的,服务(server)是一种应用程序类型,通常可以在本地和通过网络为用户提供一些功能,例如客户端/服务器应用程序、数据库服务器以及其他基于服务器的应用程序。安全策略服务即上述所说的容器安全服务端,它可以在如图1所示的安全服务器中运行。安全策略即上述所说的策略规则。安全策略服务可以对应有安全策略交互界面,通过该安全策略交互界面为用户提供增加/删除/修改策略规则等功能,当用户通过安全策略服务对应的安全策略交互界面配置完策略规则以后,安全策略服务可以响应安全策略交互界面的策略配置操作,生成策略文件(即上述图3所对应实施例中提到的目标策略文件)。
S412:安全策略服务下发策略文件到安全策略代理。
具体的,安全策略服务响应用户的策略配置操作生成策略文件以后,就可以将策略文件下发到终端的安全策略代理中。安全策略代理确认该策略文件来自于安全策略服务后,就可以将该策略文件作为合法策略文件进行存储。
第二部分,策略执行:
步骤S421,容器引擎客户端响应容器创建操作生成容器创建请求。
具体的,docker容器引擎作为一个开放的应用容器引擎,可以为开发人员带来非常大的效率提升。通过docker,开发人员可以根据自己的开发需求启动对应的容器(即上述图3所对应实施例中提到的隔离容器),然后在容器内开发或者运行自己的应用,使得开发人员不需要再为每个应用都搭建好环境并一一测试。Docker包含有容器引擎客户端和容器引擎守护进程,容器引擎客户端可以认为是一个应用客户端,或者命令工具行,用于同开发人员进行交互。用户只需在docker的容器引擎客户端中输入一条或者几条关于容器启动的命令,容器引擎客户端便会响应该输入容器启动命令的容器创建操作,生成容器创建请求,然后将该容器创建请求发送给docker daemon。
步骤S422,容器引擎代理从镜像仓库中获取镜像数据。
具体的,docker daemon在接收到创建请求后,根据创建请求确定启动该容器所需的镜像,然后从镜像仓库中获取镜像数据。
步骤S423,将容器创建请求从容器引擎守护进程转发至安全策略代理。
具体的,docker daemon接收到容器创建请求后,会根据该容器创建请求生成对应的容器,以便于开发人员进行应用的开发。但是运行恶意容器反而会给开发人员带来损失,因此计算机设备在监听到docker daemon生成对应的容器时,会先暂停生成容器,会将容器创建请求从docker daemon转发至安全策略代理agent,以便于agent对该容器进行合法验证。
步骤S424,安全策略代理验证容器创建请求是否合法。
具体的,安全策略代理agent接收到创建请求后,会从该容器创建请求中获取创建依赖资源信息,然后,agent会获取在策略下发过程中存储的策略文件,然后遍历该策略文件中的策略规则,一一对创建依赖资源信息进行合法验证。如果创建依赖资源信息符合策略文件中的每一条策略规则,说明该容器没有策略文件对应的风险问题,agent会确认合法验证通过,然后返回true(正确)到docker daemon,表示无风险;如果创建依赖资源信息有至少一条策略文件中的策略规则不符合,说明该容器存在策略文件对应的风险问题中的至少一个问题,agen会确认合法验证不通过,然后返回false(错误)到docker daemon,表示有风险,不能启动容器。
步骤S425,容器引擎代理根据返回结果判断是否创建容器。
具体的,docker daemon根据agent返回的结果判断是否需要创建容器,可以是,当agent返回的结果为true时,说明合法验证结果为合法结果,docker daemon会继续创建容器;当agent返回的结果为false时,说明合法验证结果为非法结果,docker daemon会停止创建容器。其中,创建容器可以是docker daemon根据获取到的镜像数据对应的镜像生成运行实例,即容器。其中,镜像实际上是由一层一层的***文件组成,这种层级的文件***被称为UnionFS(Union file system,统一文件***),镜像可以基于dockerfile(一个描述文件)构建,dockerfile里面包含了若干条密令,每条命令都会对基础文件***创建新的层次结构。其中,通过镜像生成容器,即为该镜像添加一个可读写层,构成一个容器,也叫作镜像的实例化。
通过本申请实施例提供的方法,安全策略服务响应策略配置操作生成策略文件后,将该策略文件下发到安全策略代理,安全策略代理接收到该策略文件后,确认该策略文件后进行存储,然后容器引擎客户端响应容器创建操作生成容器创建请求后,将该容器创建请求发送给容器引擎代理,容器引擎代理根据接收的容器创建请求从镜像仓库中获取镜像数据,然后根据该镜像数据准备创建容器,而当监听到容器引擎代理创建容器时,会先暂停该容器的创建,将容器创建请求转发到安全策略代理,此时安全策略代理会获取之前存储的策略文件,对创建请求进行合法验证,然后将验证结果返回到容器引擎代理,最后由容器引擎代理根据接收的返回结果判断是否创建容器。采用本申请实施例提供的方法,能保证在不修改镜像本身和容器启动方式的前提下,对容器进行合法验证,验证通过后才能创建容器,可以防止恶意用户启动合法容器,或者合法用户启动恶意容器,保证权限可控。
进一步地,请参见图5,图5是本申请实施例提供的一种容器启动防护方法的流程示意图。图5所对应实施例是对图4所对应实施例中描述的容器启动防护方法的整体流程图的进一步细化。如图5所示,该容器启动防护方法可以包括策略下发和策略执行:
策略下发:
步骤S511,安全策略服务响应安全策略交互界面的策略配置操作。
步骤S512,安全策略服务根据策略配置操作生成策略文件。
具体的,策略规则是可以根据需求扩展/修改/删除的。安全策略服务可以为上述图4所对应实施例中的安全策略服务server,也可以为上述图3所对应实施例中的安全策略服务端。步骤S511和步骤S512的实现过程,可以参见上述图4所示步骤S411的具体描述,这里不再进行赘述。一些常见的策略规则的配置过程可以参见下述图6所对应实施例中策略下发过程的具体描述。
步骤S513,安全策略服务通过私钥对该策略文件进行签名处理,得到签名文件。
具体的,签名处理是指安全策略服务使用私钥对策略文件的待验证哈希值进行加密,加密得到的文件即为签名文件。其中,私钥是非对称加密技术中的一种密钥,私钥仅为所有者持有,不可公布,比如安全策略服务的私钥,只能为安全策略服务持有,其他计算机设备无法获得。在非对称加密技术中还有一种密钥,是所有者公布给他人的密钥,称之为公钥,比如安全策略服务的公钥,如图5所示的安全策略代理也能够获取。其中,待验证哈希值也可称之为摘要,是安全策略服务对该策略文件进行哈希运算后得到的哈希值。
步骤S514,安全策略代理监听策略文件和签名文件。
具体的,安全策略代理(即上述图4所对应实施例中的安全策略代理agent)会从server端获取到策略文件和通过策略文件加密得到的签名文件。实际上,agent不能确认刚接收到的策略文件是否来自于server,该策略文件是否出现传输错误,或者是否被恶意篡改等情况,因此agent会进行签名验证处理。
步骤S515,安全策略代理通过安全策略服务的公钥对该签名文件进行验证,得到签名验证结果。
具体的,因为密钥对中的一种密钥加密的数据,必定能使用另一种密钥进行解密,因此,由于签名文件是安全策略服务通过私钥进行加密的,则安全策略代理可以通过安全策略服务的公钥进行解密,得到待验证哈希值。然后安全策略代理可以对接收到的策略文件进行哈希运算,得到策略文件对应的文件哈希值,然后将待验证哈希值和文件哈希值进行比较。需要说明的是,安全策略代理对策略文件进行的哈希运算和安全策略服务对策略文件进行的哈希运算,应该是同一种哈希算法。
具体的,若待验证哈希值和文件哈希值相同,则安全策略代理可以确认签名验证结果为验签成功结果;若待验证哈希值和文件哈希值不相同,则安全策略代理可以确认签名验证结果为验签失败结果。
步骤S516,若签名验证结果为验签成功,则安全策略代理会存储该策略文件。
具体的,若签名验证结果为验签成功结果,Agent会存储该策略文件,即将该策略文件加载到内存中。
策略执行:
步骤S521,应用客户端响应针对隔离容器的创建操作生成容器创建请求。
具体的,应用客户端(即上述图4所对应实施例中的容器引擎客户端)可以响应针对隔离容器的创建操作发起针对容器的创建请求,该创建请求会先连接到docker daemon(即上述图4所对应实施例中的容器引擎代理)。
步骤S522,容器引擎代理根据容器创建请求获取镜像数据,基于容器创建请求和镜像数据生成容器创建进程。
具体的,docker daemon连接本地镜像仓库后,获取针对该容器的镜像对应的镜像数据,开始基于该镜像启动容器。步骤S522的实现可以参见上述图3所对应实施例中的步骤S101的具体描述,这里不再进行赘述。
步骤S523,监听到容器创建进程启动时,将容器创建请求转发至安全策略代理。
具体的,监听到容器创建进程启动时,将容器创建请求转发至安全策略代理,可以是docker使用钩子技术通知到agent,也可以是agent本身通过内核钩子技术来感知当前有新容器即将启动。其中,通过钩子技术实现容器创建请求的转发,可以根据实际情况确定实现方法。
一个可行的实施例中,agent获取容器创建请求可以采用docker hook(钩子)技术:修改docker daemon的启动方式,在/etc/docker/daemon.json(一个配置文件的路径)里添加hook prestart(应用启动前)配置,这样一旦容器启动,首先执行daemon定义的--hook-spec(钩子规则文件)中指定的hooks脚本,脚本将容器创建请求通知到agent。
一个可行的实施例中,agent获取容器创建请求可以采用docker plugin(插件)技术:Docker 1.7之后的版本支持插件机制,新的插件运行在守护进程之外,这意味着守护进程本身需要寻找一种合适的方式去和他们进行交互。每个插件都内建了一个HTTP(Hypertext Transfer Protocol,超文本传输协议)服务器,这个服务器会被守护进程所探测到,并且提供一系列的远程调用接口,通过HTTP POST(提交)方法来交换JSON(JavaScript Object Notation,JS对象简谱)化的信息。每个插件需要暴露的远程调用接口取决于其想实现的功能,在这里我们只需要自定义一个通知agent plugin模块,docker进行安装此plugin,相比第一种方法无需重启daemon,一旦有新容器启动时就会触发plugin的执行,然后将容器创建请求中的容器创建请求通知到agent。
一个可行的实施例中,agent获取容器创建请求可以采用agent ftrace(内核调试框架)hook技术:agent通过ftrace方案,通过向debugfs(内核调试文件***)向用户态注册拦截的***调用exec(函数族)及container-shim(容器运行时名)子进程标识,就能在containerd-shim启动容器首进程时进行拦截注册好的钩子程序,从而使得agent感知新容器启动,并从docker daemon中获取容器创建请求。
一个可行的实施例中,agent获取容器创建请求可以采用agent ebpf(一种内核加强版本的包过滤技术)hook技术:agent通过ebpf方案,通过编写c(一种编程语言)版本的ebpf程序,也可通过内核提供了libbpf库(一个针对ebpf的库)简化ebpf程序的编写,甚至可以开源项目bcc(项目名)或者falco(项目名)项目进行快速开发拦截程序,采用和ftrace同样的拦截方式既可拦截containerd-shim子进程,使得agent感知新容器的启动,然后从docker daemon中获取容器创建请求。
步骤S524,安全策略代理从容器创建请求中获取创建依赖资源信息。
具体的,安全策略代理获取到容器创建请求中,可以解析该容器创建请求,然后从该容器创建请求中提取出创建依赖资源信息。
步骤S525,安全策略代理执行策略文件。
具体的,策略文件中可以包含有至少一条安全策略,每条安全策略可以针对容器的至少一个创建依赖资源信息进行验证。Agent获取到容器创建请求中的创建依赖资源信息后,会根据策略文件和创建依赖资源信息对隔离容器进行合法验证,得到合法验证结果。
一个可行的实施例中,创建依赖资源信息可以为用户信息,策略文件中包含有针对用户信息进行合法验证的非法用户信息列表。此时,计算机设备会通过安全策略代理组件从策略文件中获取该非法用户信息列表,然后,计算机设备将根据用户信息遍历查找该非法用户信息列表。若在非法用户信息列表中查找到与获取到的用户信息相同的非法用户信息,则确定合法验证结果为非法结果;若没有在非法用户信息列表中查找到与获取到的用户信息相同的非法用户信息,则确定合法验证结果为合法结果。比如,策略文件中的非法用户信息列表中包含的非法用户信息为用户A、用户B,从创建请求中获取到的创建依赖资源信息为用户C,然后计算机设备遍历该非法用户信息列表,没有发现有用户C,因此确认用户C不属于非法用户信息,则计算机设备会确定合法验证结果为合法结果。
一个可行的实施例中,创建依赖资源信息可以包含第一镜像信息,策略文件中包含有针对第一镜像信息的非法镜像列表。此时,计算机设备可以通过安全策略代理组件从策略文件中获取非法镜像列表,然后根据该第一镜像信息遍历查找该非法镜像列表。若在非法镜像列表中查找到与第一镜像信息相同的镜像信息,则确定合法验证结果为非法结果;若没有在非法镜像列表中查找到与第一镜像信息相同的镜像信息,则确定合法验证结果为合法结果。其中,镜像信息即针对隔离容器获取的镜像数据的来源等信息,策略文件中的非法镜像列表用于记录不可靠的镜像数据来源等信息。其中,非法镜像列表可以包含有不可信镜像列表和高风险镜像列表,不同的镜像列表对应不同风险类型的镜像源。比如,不可信镜像列表中可以包含有不可信的镜像仓库地址信息,当从第一镜像信息中读取到的镜像来源地址信息为不可信镜像列表中包含的镜像仓库地址信息,则确认该容器对应的镜像不可靠,该容器启动不合法。比如,高风险镜像列表中可以包含有具有高危漏洞的高危镜像信息,当从第一镜像信息中读取到的镜像信息为高风险镜像列表中包含的高危镜像信息,则确认该容器可能带有高危漏洞,该容器启动不合法。
一个可行的实施例中,策略文件中可以包含有针对容器特权的策略规则。具体的,计算机设备通过安全策略代理组件在策略文件中查找非法特权字段信息。当该非法特权字段信息为第一特权状态信息时,在创建依赖资源信息中查找目标特权字段信息;若在创建依赖资源信息中未查找到目标特权字段信息,则确定合法验证结果为合法结果;若在创建依赖资源信息中查找到目标特权字段信息,则获取目标特权字段信息对应的特权状态信息;若目标特权字段信息对应的特权状态信息为生效状态信息,则确定合法验证结果为非法结果;若目标特权字段信息对应的特权状态信息为无效状态信息,则确定合法验证结果为合法结果。换言之,策略文件中的非法特权字段信息为第一特权状态信息时,用于表明此时需要验证隔离容器是否具有高特权,如果隔离容器具有高特权,则启动该隔离容器具有风险。
一个可行的实施例中,创建依赖资源信息可以包含加载目标路径,策略文件中可以包含有针对加载目录路径的敏感挂载目录路径。计算机设备通过安全策略代理组件从策略文件中获取敏感挂载目录路径,然后根据加载目录路径遍历查找该敏感挂载目录路径。若在敏感挂载目录路径中查找到与加载目录路径相同的目录路径,则确定合法验证结果为非法结果;若没有在敏感挂载目录路径中查找到与加载目录路径相同的目录路径,则确定合法验证结果为合法结果。因为在镜像实例化得到容器的过程中,会将计算机设备中的某个目录加载到容器中,然后通过容器就可以访问该目录对应的文件***,容器启动需要的加载的目录对应的路径就称为加载目录路径。通过加载目录路径可以保证计算机设备与容器内部的数据同步。敏感挂载目录路径指的是不允许被容器所加载的目录对应的路径,比如非访问权限目录对应的路径,非访问权限目录对应的文件内容是不能被修改的,一旦容器加载了该目录,就可以对该目录对应的文件内容进行修改,这是不被允许的,因为文件被篡改很容易带来风险。
一个可行的实施例中,创建依赖资源信息可以包含第二镜像信息,策略文件中可以包含针对第二镜像信息的需验证镜像列表。其中,第二镜像信息可以为上述第一镜像信息。具体的,计算机设备通过安全策略代理组件在策略文件中获取需验证镜像列表;若第二镜像信息不属于需验证镜像列表,则确定合法验证结果为合法结果;若第三镜像信息属于需验证镜像列表,则通过安全策略代理组件生成口令验证请求;根据口令验证请求,获取针对隔离容器的镜像口令信息;若镜像口令信息为合法口令信息,则确定合法验证结果为合法结果;若镜像口令信息为非法口令信息,则确定合法验证结果为非法结果。其中,需验证镜像列表中的镜像启动容器时是需要口令验证的,如果使用错误口令通过镜像启动容器,也是不安全的,合法验证不能通过。
上述一个或多个可行的实施例中提到的针对隔离容器的合法验证的策略规则,可以在验证隔离容器是否合法的时候同时使用。当使用多个可行的实施例中提到的策略规则对隔离容器进行合法验证时,只有创建依赖信息符合每个策略规则时,才认为该隔离容器的启动合法,即确认合法验证结果为合法结果,否则确认合法验证结果为非法结果。
如图5所示,以agent根据创建依赖资源信息的类型和策略文件中对应的策略规则,判断请求是否合理为例,对上述多个可行实施例共同使用进行容器的合法验证进行说明。策略规则可以验证不合法用户、高风险镜像、非可信镜源镜像、高权限启动容器、敏感目录挂载、口令验证等风险情况,则同时使用上述可行实施例中描述的对隔离容器进行合法验证的方法,agent的验证过程可以如下:
不合法用户验证:Agent可以检查启动参数user(用户)信息,如果为root(超级用户),则返回false(错误),表示合法验证结果为非法结果,否则继续下一条策略检查;
高风险镜像验证:Agent可以获取创建请求中image(镜像)信息,然后确定该image信息是否存在策略中的imagelist(高风险镜像列表)中,如果存在则返回false,表示合法验证结果为非法结果,否则继续下一条策略检查;
非可信镜像源验证:Agent可以获取创建请求中镜像信息,然后判断该镜像信息是否在策略中的replist(非可信镜像列表)里面,如果在,则返回false,表示合法验证结果为非法结果,否则继续下一条策略检查;
高权限启动验证:当策略里面定义了"Privileged:true"(表示非法特权字段信息为生效状态),agent可以获取请求中创建获取privileged(特权)字段信息,判断该privileged字段信息是否为生效状态信息,即privileged=true(正确),说明该容器具有高权限,是非法的,返回true。需要说明的是,高权限启动验证时返回true表示合法验证结果为非法结果,否则继续下一条策略检查;
敏感目录加载验证:Agent可以获取创建请求中的加载目录,确定获取到的加载目录是否在策略中的secret path(敏感目录挂载路径)里面,如果存在,则返回false,表示合法验证结果为非法结果,否则继续下一条策略检查;
口令验证:Agent可以检查启动容器的镜像是否在策略中的imagelist里面,如果不在,则返回true,如果在,则进行口令验证,口令验证如果通过,则返回true,口令验证失败则返回false。
需要说明的是,上述任何一条策略对应的验证不通过时,合法验证结果为非法结果。
步骤S526,容器引擎代理从安全策略代理中获取验证结果。
具体的,agent会将验证结果返回给docker daemon。
一个可行的实施例中,agent在执行完合法验证策略以后,如果策略中的executionmethod(执行方法)字段为warning(警告),则通过agent侧发送告警到server,但是返回给daemon的始终为true,即验证结果为合法结果;如果为blocked(阻碍),则返回daemon为true;如果为verified,则进行口令验证,如果验证通过,则返回daemon为true;否则返回false,表示验证结果为非法结果。
步骤S527,若验证结果为合法结果,则通过安全引擎代理启动容器;若验证结果为不合法结果,则通过安全引擎代理结束容器的启动。
通过本申请实施例提供的方法,根据策略文件中的策略对隔离容器进行合法验证,可以根据实际运用的情况删除、增加、修改策略文件中的策略,在隔离容器启动前进行防护,能够阻止恶意容器的启动。
进一步地,请参见图6,图6是本申请实施例提供的一种策略下发过程的流程示意图。图6所对应实施例是对图4或者图5所对应实施例中描述的策略下发方法的进一步细化。如图6所示,该策略下发过程包括:
步骤S601,容器安全策略管理响应安全策略交互界面的策略配置操作,更新策略文件。
具体的,容器安全策略管理即上述图5所对应实施例中的安全策略服务,也就是server端。如图6所示,用户可以在server端配置运行节点的容器安全启动的策略规则,策略规则可根据需求扩展/修改/删除等。一些主要策略规则的配置如表1所示:
表1
如表1所示,Policy(策略)001:不合法用户启动,设置的策略参数为userlist,在userlist中可以添加不合法的用户信息,比如root:admin,此时,如果agent在容器的创建依赖资源信息中查找到与userlist中添加的不合法的用户信息相同的用户信息,可以阻断该容器的启动,或者允许该容器启动但是发送告警信息到server端。
如表1所示,Policy002:高危镜像列表,设置的策略参数为imagelist,在imagelist中可以添加具有高风险的镜像名,比如nginx:1.3.1、mysql:3.0,此时,如果agent在容器的创建依赖资源信息中查找到与imagelist中添加的具有高风险的镜像名相同的镜像名,可以阻断该容器的启动,或者允许该容器启动但是发送告警信息到server端。其中,高危镜像列表中包含的镜像,可以通过外部***接口从镜像仓库管理***中获取。
如表1所示,Policy003:非可信镜像源,设置的策略参数为replist,在replist中可以添加具有不可信的镜像源,比如Tcr/ccr/dockerhub,此时,如果agent在容器的创建依赖资源信息中查找到与replist中添加的不可信的镜像信息相同的镜像信息,可以阻断该容器的启动,或者允许该容器启动但是发送告警信息到server端。
如表1所示,Policy004:高权限启动,设置的策略参数为Privilege,可以将Privilege状态信息设置为true,即"Privileged":"true",此时,agent会在容器的创建依赖资源信息中查找特权字段信息,如果在创建依赖资源信息中找到特权字段信息,且确定该特权字段信息的状态信息也为true,则可以阻断该容器的启动,或者允许该容器启动但是发送告警信息到server端。
如表1所示,Policy005:敏感目录挂载,设置的策略参数为secret path,在secretpath可以添加敏感目录路径,比如/etc,此时,如果agent在容器的创建依赖资源信息中查找到与secret path中添加的敏感目录路径相同的目录路径,可以阻断该容器的启动,或者允许该容器启动但是发送告警信息到server端。
如表1所示,Policy006:口令验证,设置的策略参数为imagelist、password,imagelist中可以添加需要口令验证的镜像名,password中添加镜像对应的口令密码,此时,如果agent确定容器对应的镜像名在imagelist中,会对该容器进行口令验证,当获取到的口令验证密码和该容器在password中对应的口令密码相同时,才启动该容器,否则阻断该容器的启动。
需要说明的是,策略文件是可以根据需求随时更改的,因此,除去第一次响应策略配置操作生成策略文件后,容器安全策略管理可以响应更新策略规则的策略配置操作,更新策略文件。可以理解的是,生成策略文件也可以看作一次特殊的更新策略文件,因此,后续统一用更新后的策略文件进行说明。
步骤S602,容器安全策略管理对更新后的策略文件进行签名。
具体的,每次更新完策略文件后,容器安全策略Server会通过私钥对更新后的策略文件进行签名,得到对应的签名文件。然后,Server会将签名文件,更新后的策略文件一同下发到用户运行的节点(即上述图1所示的终端集群中的每个终端)的agent上。其中,签名的具体过程可以参见上述图5所对应实施例中的步骤S513的具体描述,这里不再进行赘述。
步骤S603,容器安全代理监听策略文件的更新状态。
具体的,容器安全代理agent会监听server固定的目录,即策略文件对应的目录,如果监听到发生修改,则重新加载策略。
步骤S604,容器安全代理获取更新后的策略文件和对应的签名文件,验证签名。
具体的,验证签名的具体过程可以参见上述图5所对应实施例中步骤S515的具体描述,这里不再进行赘述。
步骤S605,若验证通过,更新策略文件。
具体的,agent待签名通过后会将更新后的策略文件加载到内存中。
通过本申请实施例提供的方法,可以通过容器安全策略管理配置策略规则,然后根据配置的策略规则生成策略文件,然后对该策略文件签名以后再下发到容器安全代理,容器安全代理需要验证签名才能将策略文件加载到内存中,可以保证策略文件的安全性,进一步保证容器进行合法验证时的正确性,提高容器运行的安全性。
进一步地,请参见图7,图7是本申请实施例提供的一种基于容器引擎的数据处理装置的结构示意图。上述数据处理装置可以是运行于计算机设备中的一个计算机程序(包括程序代码),例如该数据处理装置为一个应用软件;该装置可以用于执行本申请实施例提供的方法中的相应步骤。如图7所示,该数据处理装置1可以包括:请求处理模块11、进程监听模块12、监听获取模块13、非法处理模块14以及合法处理模块15。
请求处理模块11,用于当容器引擎守护进程获取到针对隔离容器的创建请求时,根据创建请求生成针对隔离容器的容器创建进程;
监听获取模块12,用于当监听到容器创建进程启动时,将创建请求从容器引擎守护进程转发至安全策略代理组件;通过安全策略代理组件从创建请求中获取隔离容器对应的创建依赖资源信息;
合法验证模块13,用于通过安全策略代理组件获取针对容器引擎的合法策略文件,根据合法策略文件对创建依赖资源信息进行合法验证,得到隔离容器对应的合法验证结果;
非法处理模块14,用于若合法验证结果为非法结果,则按照非法处理机制对容器创建进程进行处理;
合法处理模块15,若合法验证结果为合法结果,则通过容器创建进程创建隔离容器。
其中,请求处理模块11、监听获取模块12、合法验证模块13、非法处理模块14以及合法处理模块15的具体功能实现方式可以参见图3对应实施例中的步骤S101到步骤S104的具体描述,这里不再进行赘述。
请再参见图7,请求处理模块11可以包括:镜像获取单元111以及进程生成单元112。
镜像获取单元111,用于当容器引擎守护进程获取到针对隔离容器的创建请求时,通过容器引擎守护进程获取针对隔离容器的镜像数据;
进程生成单元112,还用于在容器引擎守护进程中,基于镜像数据和创建请求生成针对隔离容器的容器创建进程。
其中,镜像获取单元111以及进程生成单元112的具体功能实现方式可以参见图3对应实施例中的步骤S101的具体描述,这里不再进行赘述。
请再参见图7,监听获取模块12可以包括:第一监听单元121。
第一监听单元121,当通过容器引擎守护进程关联的钩子脚本,监听到容器创建进程启动时,通过钩子脚本暂停运行容器创建进程,通过钩子脚本将创建请求从容器引擎守护进程转发至安全策略代理组件。
其中,第一监听单元121的具体功能实现方式可以参见图3对应实施例中的步骤S102的具体描述,这里不再进行赘述。
请再参见图7,监听获取模块12可以包括:第二监听单元122。
第二监听单元122,用于当通过安全策略代理组件关联的内核钩子脚本,监听到容器创建进程启动时,通过内核钩子脚本暂停运行容器创建进程,在安全策略代理组件中,通过内核钩子脚本从容器引擎守护进程获取创建请求。
其中,第二监听单元122的具体功能实现方式可以参见图3对应实施例中的步骤S102的具体描述,这里不再进行赘述。
其中,创建依赖资源信息包括用户信息;
请再参见图7,合法验证模块13可以包括:用户信息验证单元131。
用户信息验证单元131,用于通过安全策略代理组件在合法策略文件中获取非法用户信息列表;
用户信息验证单元131,还用于根据用户信息遍历查找非法用户信息列表;
用户信息验证单元131,还用于若在非法用户信息列表中查找到与用户信息相同的非法用户信息,则确定合法验证结果为非法结果;
用户信息验证单元131,还用于若没有在非法用户信息列表中查找到与用户信息相同的非法用户信息,则确定合法验证结果为合法结果。
其中,用户信息验证单元131的具体功能实现方式可以参见图5对应实施例中的步骤S525的具体描述,这里不再进行赘述。
其中,创建依赖资源信息包括第一镜像信息;
请再参见图7,合法验证模块13可以包括:非法镜像验证单元132。
非法镜像验证单元132,用于通过安全策略代理组件从合法策略文件中获取非法镜像列表;
非法镜像验证单元132,还用于根据第一镜像信息遍历查找非法镜像列表;
非法镜像验证单元132,还用于若在非法镜像列表中查找到与第一镜像信息相同的镜像信息,则确定合法验证结果为非法结果;
非法镜像验证单元132,还用于若没有在非法镜像列表中查找到与第一镜像信息相同的镜像信息,则确定合法验证结果为合法结果。
其中,非法镜像验证单元132的具体功能实现方式可以参见图5对应实施例中的步骤S525的具体描述,这里不再进行赘述。
请再参见图7,合法验证模块13可以包括:特权字段验证单元133。
特权字段验证单元133,用于通过安全策略代理组件在合法策略文件中查找非法特权字段信息;
特权字段验证单元133,还用于当非法特权字段信息为第一特权状态信息时,在创建依赖资源信息中查找目标特权字段信息;
特权字段验证单元133,还用于若在创建依赖资源信息中未查找到目标特权字段信息,则确定合法验证结果为合法结果;
特权字段验证单元133,还用于若在创建依赖资源信息中查找到目标特权字段信息,则获取目标特权字段信息对应的特权状态信息;
特权字段验证单元133,还用于若目标特权字段信息对应的特权状态信息为生效状态信息,则确定合法验证结果为非法结果;
特权字段验证单元133,还用于若目标特权字段信息对应的特权状态信息为无效状态信息,则确定合法验证结果为合法结果。
其中,特权字段验证单元133的具体功能实现方式可以参见图5对应实施例中的步骤S525的具体描述,这里不再进行赘述。
其中,创建依赖资源信息包括加载目录路径;
请再参见图7,合法验证模块13可以包括:敏感目录验证单元134。
敏感目录验证单元134,用于通过安全策略代理组件从合法策略文件中获取敏感挂载目录路径;
敏感目录验证单元134,还用于根据加载目录路径遍历查找敏感挂载目录路径;
敏感目录验证单元134,还用于若在敏感挂载目录路径中查找到与加载目录路径相同的目录路径,则确定合法验证结果为非法结果;
敏感目录验证单元134,还用于若没有在敏感挂载目录路径中查找到与加载目录路径相同的目录路径,则确定合法验证结果为合法结果。
其中,敏感目录验证单元134的具体功能实现方式可以参见图5对应实施例中的步骤S525的具体描述,这里不再进行赘述。
其中,创建依赖资源信息包括第二镜像信息;
请再参见图7,合法验证模块13可以包括:镜像验证单元135以及口令验证单元136。
镜像验证单元135,用于通过安全策略代理组件在合法策略文件中获取需验证镜像列表;
镜像验证单元135,还用于若第二镜像信息不属于需验证镜像列表,则确定合法验证结果为合法结果;
镜像验证单元135,还用于若第二镜像信息属于需验证镜像列表,则通过安全策略代理组件生成口令验证请求;
口令验证单元136,用于根据口令验证请求,获取针对隔离容器的镜像口令信息;
口令验证单元136,还用于若镜像口令信息为合法口令信息,则确定合法验证结果为合法结果;
口令验证单元136,还用于若镜像口令信息为非法口令信息,则确定合法验证结果为非法结果。
其中,镜像验证单元135以及口令验证单元136的具体功能实现方式可以参见图5对应实施例中的步骤S525的具体描述,这里不再进行赘述。
请再参见图7,该数据处理装置1还可以包括:文件接收模块16以及签名验证模块17。
文件接收模块16,用于接收容器安全服务端发送的目标策略文件和目标策略文件关联的签名文件;
签名验证模块17,用于获取目标公钥;目标公钥为容器安全服务端的公钥;
签名验证模块17,还用于通过目标公钥对签名文件进行解密,得到待验证哈希值,获取目标策略文件对应的文件哈希值,根据待验证哈希值和文件哈希值验证签名文件,得到签名验证结果;
签名验证模块17,还用于若签名验证结果为验签成功结果,则将目标策略文件存储为针对容器引擎的合法策略文件;属于验签成功的签名文件,是由容器安全服务端通过所拥有的私钥对目标策略文件进行签名得到。
其中,文件接收模块16以及签名验证模块17的具体功能实现方式可以参见图5对应实施例中的步骤S514和S515的具体描述,这里不再进行赘述。
请再参见图7,该数据处理装置1还可以包括:监听模块18。
监听模块18,用于监听容器安全服务端对目标策略文件的更新状态;
监听模块18,还用于若监听到目标策略文件的更新状态为修改状态,则从容器安全服务端获取修改后的目标策略文件,根据修改后的目标策略文件更新针对容器引擎的合法策略文件。
其中,监听模块18的具体功能实现方式可以参见图6对应实施例中的步骤S602-步骤S605的具体描述,这里不再进行赘述。
其中,目标策略文件是由容器安全服务端根据非法用户信息、非法镜像列表、非法特权字段信息、敏感挂载目录路径和需验证镜像列表生成的;非法镜像列表是容器安全服务端从镜像仓库管理***中获取的。
请再参见图7,非法处理模块14可以包括:第一非法处理单元141以及第二非法处理单元142。
第一非法处理单元141,用于若非法结果为第一非法结果,则通过容器创建进程创建隔离容器,按照第一非法处理机制向容器安全服务端发送告警信息,以使容器安全服务端根据隔离容器的运行情况和告警信息更新目标策略文件;
第二非法处理单元142,用于若非法结果为第二非法结果,则按照第二非法处理机制阻断容器创建进程。
其中,第一非法处理单元141以及第二非法处理单元142的具体功能实现方式可以参见图3对应实施例中的步骤S104的具体描述,这里不再进行赘述。
进一步地,请参见图8,图8是本申请实施例提供的一种计算机设备的结构示意图。如图8所示,上述图7所对应实施例中的区块共识装置1可以应用于上述计算机设备1000,上述计算机设备1000可以包括:处理器1001,网络接口1004和存储器1005,此外,上述计算机设备1000还包括:用户接口1003,和至少一个通信总线1002。其中,通信总线1002用于实现这些组件之间的连接通信。其中,用户接口1003可以包括显示屏(Display)、键盘(Keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。存储器1005可以是高速RAM存储器,也可以是非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。存储器1005可选的还可以是至少一个位于远离前述处理器1001的存储装置。如图8所示,作为一种计算机可读存储介质的存储器1005中可以包括操作***、网络通信模块、用户接口模块以及设备控制应用程序。
在图8所示的计算机设备1000中,网络接口1004可提供网络通讯功能;而用户接口1003主要用于为用户提供输入的接口;而处理器1001可以用于调用存储器1005中存储的设备控制应用程序,以实现:
当容器引擎守护进程获取到针对隔离容器的创建请求时,根据创建请求生成针对隔离容器的容器创建进程;
当监听到容器创建进程启动时,将创建请求从容器引擎守护进程转发至安全策略代理组件,通过安全策略代理组件从创建请求中获取隔离容器对应的创建依赖资源信息;
通过安全策略代理组件获取针对容器引擎的合法策略文件,根据合法策略文件对创建依赖资源信息进行合法验证,得到隔离容器对应的合法验证结果;
若合法验证结果为非法结果,则按照非法处理机制对容器创建进程进行处理;
若合法验证结果为合法结果,则通过容器创建进程创建隔离容器。
应当理解,本申请实施例中所描述的计算机设备1000可执行前文图3所对应实施例中对该基于容器引擎的数据处理方法的描述,也可执行前文图7所对应实施例中对该基于容器引擎的数据处理装置1的描述,在此不再赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。
此外,这里需要指出的是:本申请实施例还提供了一种计算机可读存储介质,且所述计算机可读存储介质中存储有前文提及的数据处理装置7所执行的计算机程序,当所述处理器执行所述计算机程序时,能够执行前文图3所对应实施例中对所述数据处理方法的描述,因此,这里将不再进行赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。对于本申请所涉及的计算机存储介质实施例中未披露的技术细节,请参照本申请方法实施例的描述。
上述计算机可读存储介质可以是前述任一实施例提供的数据处理装置或者上述计算机设备的内部存储单元,例如计算机设备的硬盘或内存。该计算机可读存储介质也可以是该计算机设备的外部存储设备,例如该计算机设备上配备的插接式硬盘,智能存储卡(smart media card,SMC),安全数字(secure digital,SD)卡,闪存卡(flash card)等。进一步地,该计算机可读存储介质还可以既包括该计算机设备的内部存储单元也包括外部存储设备。该计算机可读存储介质用于存储该计算机程序以及该计算机设备所需的其他程序和数据。该计算机可读存储介质还可以用于暂时地存储已经输出或者将要输出的数据。
以上所揭露的仅为本申请较佳实施例而已,当然不能以此来限定本申请之权利范围,因此依本申请权利要求所作的等同变化,仍属本申请所涵盖的范围。
Claims (15)
1.一种基于容器引擎的数据处理方法,其特征在于,包括:
当容器引擎守护进程获取到针对隔离容器的创建请求时,根据所述创建请求生成针对所述隔离容器的容器创建进程;
当监听到所述容器创建进程启动时,将所述创建请求从所述容器引擎守护进程转发至安全策略代理组件,通过所述安全策略代理组件从所述创建请求中获取所述隔离容器对应的创建依赖资源信息;
通过所述安全策略代理组件获取针对所述容器引擎的合法策略文件,根据所述合法策略文件和所述创建依赖资源信息进行合法验证,得到所述隔离容器对应的合法验证结果;
若所述合法验证结果为非法结果,则按照非法处理机制对所述容器创建进程进行处理;
若所述合法验证结果为合法结果,则通过所述容器创建进程创建所述隔离容器。
2.根据权利要求1所述的方法,其特征在于,所述当容器引擎守护进程获取到针对隔离容器的创建请求时,根据所述创建请求生成针对所述隔离容器的容器创建进程,包括:
当所述容器引擎守护进程获取到针对隔离容器的创建请求时,通过所述容器引擎守护进程获取针对所述隔离容器的镜像数据;
在所述容器引擎守护进程中,基于所述镜像数据和所述创建请求生成针对所述隔离容器的容器创建进程。
3.根据权利要求1所述的方法,其特征在于,所述当监听到所述容器创建进程启动时,将所述创建请求从所述容器引擎守护进程转发至安全策略代理组件,包括:
当通过所述容器引擎守护进程关联的钩子脚本,监听到所述容器创建进程启动时,通过所述钩子脚本暂停运行所述容器创建进程,通过所述钩子脚本将所述创建请求从容器引擎守护进程转发至安全策略代理组件。
4.根据权利要求1所述的方法,其特征在于,所述当监听到所述容器创建进程启动时,将所述创建请求从所述容器引擎守护进程转发至安全策略代理组件,包括:
当通过所述安全策略代理组件关联的内核钩子脚本,监听到所述容器创建进程启动时,通过所述内核钩子脚本暂停运行所述容器创建进程,在所述安全策略代理组件中,通过所述内核钩子脚本从所述容器引擎守护进程获取所述创建请求。
5.根据权利要求1所述的方法,其特征在于,所述创建依赖资源信息包括用户信息;
所述根据所述合法策略文件和所述创建依赖资源信息进行合法验证,得到所述隔离容器对应的合法验证结果,包括:
通过所述安全策略代理组件在所述合法策略文件中获取非法用户信息列表;
根据所述用户信息遍历查找所述非法用户信息列表;
若在所述非法用户信息列表中查找到与所述用户信息相同的非法用户信息,则确定所述合法验证结果为非法结果;
若没有在所述非法用户信息列表中查找到与所述用户信息相同的非法用户信息,则确定所述合法验证结果为合法结果。
6.根据权利要求1所述的方法,其特征在于,所述创建依赖资源信息包括第一镜像信息;
所述根据所述合法策略文件和所述创建依赖资源信息进行合法验证,得到所述隔离容器对应的合法验证结果,包括:
通过所述安全策略代理组件从所述合法策略文件中获取非法镜像列表;
根据所述第一镜像信息遍历查找所述非法镜像列表;
若在所述非法镜像列表中查找到与所述第一镜像信息相同的镜像信息,则确定所述合法验证结果为非法结果;
若没有在所述非法镜像列表中查找到与所述第一镜像信息相同的镜像信息,则确定所述合法验证结果为合法结果。
7.根据权利要求1所述的方法,其特征在于,所述根据所述合法策略文件和所述创建依赖资源信息进行合法验证,得到所述隔离容器对应的合法验证结果,包括:
通过所述安全策略代理组件在所述合法策略文件中查找非法特权字段信息;
当所述非法特权字段信息为第一特权状态信息时,在所述创建依赖资源信息中查找目标特权字段信息;
若在所述创建依赖资源信息中未查找到目标特权字段信息,则确定所述合法验证结果为合法结果;
若在所述创建依赖资源信息中查找到目标特权字段信息,则获取所述目标特权字段信息对应的特权状态信息;
若所述目标特权字段信息对应的特权状态信息为生效状态信息,则确定所述合法验证结果为非法结果;
若所述目标特权字段信息对应的特权状态信息为无效状态信息,则确定所述合法验证结果为合法结果。
8.根据权利要求1所述的方法,其特征在于,所述创建依赖资源信息包括加载目录路径;
所述根据所述合法策略文件和所述创建依赖资源信息进行合法验证,得到所述隔离容器对应的合法验证结果,包括:
通过所述安全策略代理组件从所述合法策略文件中获取敏感挂载目录路径;
根据所述加载目录路径遍历查找所述敏感挂载目录路径;
若在所述敏感挂载目录路径中查找到与所述加载目录路径相同的目录路径,则确定所述合法验证结果为非法结果;
若没有在所述敏感挂载目录路径中查找到与所述加载目录路径相同的目录路径,则确定所述合法验证结果为合法结果。
9.根据权利要求1所述的方法,其特征在于,所述创建依赖资源信息包括第二镜像信息;
所述根据所述合法策略文件和所述创建依赖资源信息进行合法验证,得到所述隔离容器对应的合法验证结果,包括:
通过所述安全策略代理组件在所述合法策略文件中获取需验证镜像列表;
若所述第二镜像信息不属于所述需验证镜像列表,则确定所述合法验证结果为合法结果;
若所述第二镜像信息属于所述需验证镜像列表,则通过所述安全策略代理组件生成口令验证请求;
根据所述口令验证请求,获取针对所述隔离容器的镜像口令信息;
若所述镜像口令信息为合法口令信息,则确定所述合法验证结果为合法结果;
若所述镜像口令信息为非法口令信息,则确定所述合法验证结果为非法结果。
10.根据权利要求1所述的方法,其特征在于,还包括:
接收容器安全服务端发送的目标策略文件和所述目标策略文件关联的签名文件;
获取目标公钥;所述目标公钥为所述容器安全服务端的公钥;
通过所述目标公钥对所述签名文件进行解密,得到待验证哈希值,获取所述目标策略文件对应的文件哈希值,根据所述待验证哈希值和所述文件哈希值验证所述签名文件,得到签名验证结果;
若所述签名验证结果为验签成功结果,则将所述目标策略文件存储为所述针对容器引擎的合法策略文件;属于验签成功的签名文件,是由所述容器安全服务端通过所拥有的私钥对所述目标策略文件进行签名得到。
11.根据权利要求10所述的方法,其特征在于,还包括:
监听所述容器安全服务端对所述目标策略文件的更新状态;
若监听到所述目标策略文件的更新状态为修改状态,则从所述容器安全服务端获取修改后的目标策略文件,根据所述修改后的目标策略文件更新所述针对容器引擎的合法策略文件。
12.根据权利要求10所述的方法,其特征在于,所述目标策略文件是由所述容器安全服务端根据非法用户信息、非法镜像列表、非法特权字段信息、敏感挂载目录路径和需验证镜像列表生成的;所述非法镜像列表是所述容器安全服务端从镜像仓库管理***中获取的。
13.根据权利要求10所述的方法,其特征在于,所述若所述合法验证结果为非法结果,则按照非法处理机制对所述容器创建进程进行处理,包括:
若所述非法结果为第一非法结果,则通过所述容器创建进程创建所述隔离容器,按照第一非法处理机制向所述容器安全服务端发送告警信息,以使所述容器安全服务端根据所述隔离容器的运行情况和所述告警信息更新所述目标策略文件;
若所述非法结果为第二非法结果,则按照第二非法处理机制阻断所述容器创建进程。
14.一种计算机设备,其特征在于,包括:处理器、存储器以及网络接口;
所述处理器与所述存储器、所述网络接口相连,其中,所述网络接口用于提供网络通信功能,所述存储器用于存储程序代码,所述处理器用于调用所述程序代码,以执行权利要求1-13任一项所述的方法。
15.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序,该计算机程序适于由处理器加载并执行权利要求1-13任一项所述的方法。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110286214.XA CN115113970A (zh) | 2021-03-17 | 2021-03-17 | 一种基于容器引擎的数据处理方法以及相关设备 |
PCT/CN2021/107698 WO2022193513A1 (zh) | 2021-03-17 | 2021-07-21 | 一种基于容器引擎的数据处理方法以及相关设备 |
US18/302,100 US20230259386A1 (en) | 2021-03-17 | 2023-04-18 | Data processing method based on container engine and related device |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110286214.XA CN115113970A (zh) | 2021-03-17 | 2021-03-17 | 一种基于容器引擎的数据处理方法以及相关设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115113970A true CN115113970A (zh) | 2022-09-27 |
Family
ID=83321882
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110286214.XA Pending CN115113970A (zh) | 2021-03-17 | 2021-03-17 | 一种基于容器引擎的数据处理方法以及相关设备 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20230259386A1 (zh) |
CN (1) | CN115113970A (zh) |
WO (1) | WO2022193513A1 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115665257A (zh) * | 2022-12-27 | 2023-01-31 | 成都同步新创科技股份有限公司 | 基于反向代理和动态脚本的请求处理方法及装置 |
CN115664797A (zh) * | 2022-10-24 | 2023-01-31 | 中国电信股份有限公司 | 信息传输方法、装置、设备及存储介质 |
CN117348951A (zh) * | 2023-12-04 | 2024-01-05 | 北京长扬软件有限公司 | 应用于linux内核的容器感知装置和容器感知方法 |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115858101B (zh) * | 2023-01-31 | 2023-06-23 | 天翼云科技有限公司 | 容器资源视图隔离的方法、装置以及电子设备 |
CN116107846B (zh) * | 2023-04-12 | 2023-07-25 | 北京长亭未来科技有限公司 | 一种基于EBPF的Linux***事件监控方法及装置 |
CN116302210B (zh) * | 2023-05-17 | 2023-08-04 | 阿里云计算有限公司 | 一种镜像文件的导入方法、装置、电子设备及存储介质 |
CN116627850B (zh) * | 2023-07-21 | 2023-10-03 | 北京趋动智能科技有限公司 | 函数调试方法、装置、存储介质以及电子设备 |
CN117369950B (zh) * | 2023-12-04 | 2024-02-20 | 上海凯翔信息科技有限公司 | 一种docker容器的配置*** |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102294568B1 (ko) * | 2015-08-19 | 2021-08-26 | 삼성에스디에스 주식회사 | 컨테이너 이미지 보안 검사 방법 및 그 장치 |
CN107643940A (zh) * | 2017-09-26 | 2018-01-30 | 华为技术有限公司 | 容器创建方法、相关设备及计算机存储介质 |
CN109214148A (zh) * | 2018-09-03 | 2019-01-15 | 平安普惠企业管理有限公司 | 一种dex文件抽取方法、***及终端设备 |
CN111562970B (zh) * | 2020-07-15 | 2020-10-27 | 腾讯科技(深圳)有限公司 | 容器实例的创建方法、装置、电子设备及存储介质 |
CN111857967B (zh) * | 2020-07-29 | 2022-04-12 | 中科方德软件有限公司 | 一种容器完整性校验方法 |
CN112231061B (zh) * | 2020-10-22 | 2023-01-20 | 浪潮云信息技术股份公司 | 一种云原生容器运行时的方法 |
-
2021
- 2021-03-17 CN CN202110286214.XA patent/CN115113970A/zh active Pending
- 2021-07-21 WO PCT/CN2021/107698 patent/WO2022193513A1/zh active Application Filing
-
2023
- 2023-04-18 US US18/302,100 patent/US20230259386A1/en active Pending
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115664797A (zh) * | 2022-10-24 | 2023-01-31 | 中国电信股份有限公司 | 信息传输方法、装置、设备及存储介质 |
CN115665257A (zh) * | 2022-12-27 | 2023-01-31 | 成都同步新创科技股份有限公司 | 基于反向代理和动态脚本的请求处理方法及装置 |
CN115665257B (zh) * | 2022-12-27 | 2023-04-28 | 成都同步新创科技股份有限公司 | 基于反向代理和动态脚本的请求处理方法及装置 |
CN117348951A (zh) * | 2023-12-04 | 2024-01-05 | 北京长扬软件有限公司 | 应用于linux内核的容器感知装置和容器感知方法 |
CN117348951B (zh) * | 2023-12-04 | 2024-02-09 | 北京长扬软件有限公司 | 应用于linux内核的容器感知装置和容器感知方法 |
Also Published As
Publication number | Publication date |
---|---|
WO2022193513A1 (zh) | 2022-09-22 |
US20230259386A1 (en) | 2023-08-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2022193513A1 (zh) | 一种基于容器引擎的数据处理方法以及相关设备 | |
CN111541785B (zh) | 基于云计算的区块链数据处理方法及装置 | |
US11075955B2 (en) | Methods and systems for use in authorizing access to a networked resource | |
CN112073400B (zh) | 一种访问控制方法、***、装置及计算设备 | |
CN112422532B (zh) | 业务通信方法、***、装置及电子设备 | |
JP6222592B2 (ja) | モバイルアプリケーション管理のためのモバイルアプリケーションのアイデンティティの検証 | |
CN111262889B (zh) | 一种云服务的权限认证方法、装置、设备及介质 | |
US9154488B2 (en) | Secured access to resources using a proxy | |
EP2748751B1 (en) | System and method for day-zero authentication of activex controls | |
US10579830B1 (en) | Just-in-time and secure activation of software | |
US10771462B2 (en) | User terminal using cloud service, integrated security management server for user terminal, and integrated security management method for user terminal | |
EP2795522B1 (en) | Techniques to store secret information for global data centers | |
CN111966422A (zh) | 一种本地化插件服务方法、装置、电子设备及存储介质 | |
Zavalyshyn et al. | My house, my rules: A private-by-design smart home platform | |
da Silva et al. | Squad: A secure, simple storage service for sgx-based microservices | |
Tedeschi et al. | Information security and threats in mobile appliances | |
Nazar et al. | Rooting Android–Extending the ADB by an auto-connecting WiFi-accessible service | |
CN115801292A (zh) | 访问请求的鉴权方法和装置、存储介质及电子设备 | |
KR102534012B1 (ko) | 컨텐츠 제공자의 보안등급을 인증하는 시스템 및 그 방법 | |
Bettayeb et al. | Implementation of Hyperledger-Based Secure Firmware Update Delivery for IoT Devices | |
Albayati et al. | Profile Based Access Control Model Using JSON Web Tokens | |
Mendoza Jiménez | Securing a REST API Server | |
Aggarwal et al. | Security approaches for mobile multi-agent system | |
CN116954693A (zh) | 状态协同方法、装置、计算机设备及存储介质 | |
Elamin et al. | Analysis of a rarely implemented security feature: signing container images with a Notary server |
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 |