一种容器安全隔离方法、系统及介质与流程

文档序号:18939501发布日期:2019-10-23 01:02阅读:487来源:国知局
一种容器安全隔离方法、系统及介质与流程

本发明涉及计算机安全领域,尤其涉及一种容器安全隔离方法、系统及介质。



背景技术:

随着容器技术在近几年得到飞速的发展,国内外不少企业已经将其应用到生产系统中,有理由相信随着容器相关技术的完善和技术生态的建立,将成为下一代云计算的基石。

容器诞生的目的是便于持续的集成和快速部署,尽量减少中间环节。但是容器在提供便利性的同时,其安全问题也面临着挑战。由于容器使用共享操作系统模型,对主机操作系统中的漏洞的攻击可能导致所有容器被攻击,同时容器本身并不完全安全。容器安全质疑最大的一点就是其隔离的彻底性。相对于虚拟机而言,容器使用宿主机的内核,只是对进程和文件进行虚拟化,而虚拟机做到了操作系统级别的虚拟化。在安全隔离性上,容器比虚拟机差。虽然容器上可以通过命名空间和控制群组等技术做资源的限制,但是主要的内核子系统和设备都没有命名空间,因此容器里的应用程序依然可以访问很多宿主机的系统资源。事实上这跟没有跑在容器里的应用程序一样,容器里的应用程序可以直接通过操作系统内核的系统调用陷入到内核。任何一个被允许的系统调用的缺陷都可以被恶意的应用程序利用,从而危害宿主机的安全。



技术实现要素:

本发明要解决的技术问题:针对现有技术的上述问题,提供一种容器安全隔离方法、系统及介质,使用本发明能够在保证容器效率的同时提高容器的隔离性和安全性,通过用户态内核,容器应用不能直接访问宿主机内核,它不是真正的像一个主机的进程在运行,而是将应用程序加载到运行时的应用程序内存空间中并从那里运行,这样即使容器内的应用有安全风险,也只能对容器造成影响,而不会通过容器而影响到宿主机的运行,从而了提高隔离性。

为了解决上述技术问题,本发明采用的技术方案为:

一种容器安全隔离方法,实施步骤包括在容器调用安全容器运行时,创建用户态内核进程和文件系统代理进程,用户态内核拦截容器的应用程序的系统调用,完成系统调用的处理后将结果返回给容器的应用程序,使得容器的应用程序不能直接完成宿主机的系统调用;通过文件系统代理拦截容器的应用程序的io操作,并在执行完成io操作后将结果返回给容器的应用程序。

优选地,所述通过用户态内核拦截容器的应用程序的系统调用之后,还包括通过用户态内核拦截容器的应用程序的系统调用并对其进行过滤的步骤,如果发出系统调用的容器的应用程序被允许,则执行系统调用并将结果返回给容器的应用程序;如果发出系统调用的容器的应用程序不被允许,则拒绝完成系统调用且将结果返回给容器的应用程序。

优选地,所述通过文件系统拦截容器的应用程序的io操作具体是指通过用户态内核将容器的应用程序的io操作交给文件系统代理,且所述将结果返回给容器的应用程序具体是指通过用户态内核将结果返回给容器的应用程序。

本发明还提供一种容器安全隔离系统,包括计算机设备,该计算机设备被编程或配置以执行本发明前述容器安全隔离方法的步骤。

本发明还提供一种容器安全隔离系统,包括计算机设备,该计算机设备的存储介质上存储有被编程或配置以执行本发明前述容器安全隔离方法的计算机程序。

本发明还提供一种计算机可读存储介质,该计算机可读存储介质上存储有被编程或配置以执行本发明前述容器安全隔离方法的计算机程序。

本发明还提供一种容器安全隔离系统,包括:

用户态内核程序模块,用于通过用户态内核拦截容器的应用程序的系统调用,完成系统调用的处理后将结果返回给容器的应用程序,使得容器的应用程序不能直接完成宿主机的系统调用;

文件系统代理程序模块,用于通过文件系统代理拦截容器的应用程序的io操作,并在执行完成io操作后将结果返回给容器的应用程序。

和现有技术相比,本发明具有下述优点:本发明通过安全容器运行时创建用户态内核进程和文件系统代理进程,用户态内核拦截容器的应用程序的系统调用,完成系统调用的处理后将结果返回给容器的应用程序,使得容器的应用程序不能直接完成宿主机的系统调用;通过文件系统代理拦截容器的应用程序的io操作,在执行完成io操作后将结果返回给容器的应用程序。使用本发明能够在保证容器效率的同时提高容器的隔离性和安全性,通过用户态内核容器应用不能直接访问宿主机内核,它不是真正的像一个主机的进程在运行,而是将应用程序加载到运行时的应用程序内存空间中并从那里运行,这样即使容器内的应用有安全风险也只能对容器造成影响,而不会通过容器而影响到宿主机的运行,从而了提高隔离性。

附图说明

图1为本发明实施例方法的基本原理示意图。

图2为本发明实施例方法中用户态内核的层次结构示意图。

具体实施方式

如图1所示,本实施例容器安全隔离方法的实施步骤包括,在容器通过调用安全运行时创建用户态内核进程和文件系统代理进程,用户态内核拦截容器的应用程序(图1中简略表示为“应用”)的系统调用,完成系统调用的处理后将结果返回给容器的应用程序,使得容器的应用程序不能直接完成宿主机的系统调用;通过文件系统代理拦截容器的应用程序的io操作,并在执行完成io操作后将结果返回给容器的应用程序。

如图2所示,本实施例中应用程序、用户态内核和文件系统代理运行在非特权模式下。此外参见图2,本实施例中通过用户态内核拦截容器的应用程序的系统调用之后,还包括通过用户态内核拦截容器的应用程序的系统调用并对其进行过滤的步骤,如果发出系统调用的容器的应用程序被允许,则执行系统调用并将结果返回给容器的应用程序;如果发出系统调用的容器的应用程序不被允许,则拒绝完成系统调用且将结果返回给容器的应用程序。

图2所示为本实施例中用户态内核在整个软硬件所处的层次,参见图2,用户态内核实际上是在应用程序、宿主机内核之间的中间,起到两者之间的隔离的作用,通过用户态内核拦截容器的应用程序的系统调用并对其进行过滤,可防止不受信的应用对主机造成影响。。

本实施例中,通过文件系统拦截容器的应用程序的io操作具体是指通过用户态内核将容器的应用程序的io操作交给文件系统代理,且所述将结果返回给容器的应用程序具体是指通过用户态内核将结果返回给容器的应用程序。

安全容器运行时用来管理容器的创建和销毁,本实施例中安全容器运行时分为用户态内核、文件系统代理两部分。用户态内核是在宿主机内核之上实现的非特权用户态“内核进程”,它提供了大部分linux内核的系统调用,通过将容器内进程的系统调用转化为对该“内核进程”的调用。文件系统代理则处理容器内的io请求,通过它将容器内的io操作转接到宿主机上。本实施例中,容器内的用户态内核拦截由应用程序发起的所有系统调用,并充当访客内核,不通过虚拟化硬件进行翻译,为应用程序请求返回相应的结果;本实施例中,容器内的用户态内核,实现了大多数内核机制(信号,管道,线程模型,内存管理等),并在这些机制之上构建了完整的系统调用处理程序,不是简单地将应用程序的系统调用重定向到主机内核。由于容器内的用户态内核本身就是一个用户空间应用程序,因此它会进行一些宿主机的系统调用来支持其操作,同时会对这些系统调用进行过滤,不允许应用程序直接控制它所做的系统调用;本实施例中,应用的io操作通过用户态内核转接给文件系统代理处理,文件系统代理通过访问主机受限的文件,将结果返回给用户态内核,再由用户态内核把结果返回给应用程序。综上所述,本实施例容器安全隔离方法在容器内实现用户态内核,使容器应用不直接依赖宿主机内核的功能。该用户态内核能处理基本上所有的应用的系统调用请求。对宿主机的系统调用进行过滤、限制,防止对宿主机进行干扰。

此外,本实施例还提供一种容器安全隔离系统,包括计算机设备,该计算机设备被编程或配置以执行本实施例前述容器安全隔离方法的步骤。

此外,本实施例还提供一种容器安全隔离系统,包括计算机设备,该计算机设备的存储介质上存储有被编程或配置以执行本实施例前述容器安全隔离方法的计算机程序。

此外,本实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有被编程或配置以执行本实施例前述容器安全隔离方法的计算机程序。

此外,本实施例还提供一种容器安全隔离系统,包括,

用户态内核程序模块,用于通过用户态内核拦截容器的应用程序的系统调用,完成系统调用的处理后将结果返回给容器的应用程序,使得容器的应用程序不能直接完成宿主机的系统调用;

文件系统代理程序模块,用于通过文件系统代理拦截容器的应用程序的io操作,并在执行完成io操作后将结果返回给容器的应用程序。

以上所述仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

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