CN108363920B - 用于容器的系统调用策略 - Google Patents

用于容器的系统调用策略 Download PDF

Info

Publication number
CN108363920B
CN108363920B CN201810058458.0A CN201810058458A CN108363920B CN 108363920 B CN108363920 B CN 108363920B CN 201810058458 A CN201810058458 A CN 201810058458A CN 108363920 B CN108363920 B CN 108363920B
Authority
CN
China
Prior art keywords
container
policy
system call
application
data structure
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.)
Active
Application number
CN201810058458.0A
Other languages
English (en)
Other versions
CN108363920A (zh
Inventor
M·德里科
L·F·埃伦哈特
C·I·道尔顿
M·J·雷
S·皮尔森
D·海因策
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hewlett Packard Enterprise Development LP
Original Assignee
Hewlett Packard Enterprise Development LP
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Hewlett Packard Enterprise Development LP filed Critical Hewlett Packard Enterprise Development LP
Publication of CN108363920A publication Critical patent/CN108363920A/zh
Application granted granted Critical
Publication of CN108363920B publication Critical patent/CN108363920B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring 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/53Monitoring 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/033Test or assess software

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Stored Programmes (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

示例涉及用于容器的系统调用策略。在示例中,方法包括:由容器平台接收用于运行应用程序的容器。容器具有指定应用程序的应用程序类型的元数据记录。容器平台接收指定用于一组应用程序类型的一组系统调用策略的数据结构,并且查询数据结构,以基于元数据记录中的应用程序类型确定该一组系统调用策略中的要应用于容器的策略。内核实施用于容器的策略,以基于系统调用与策略的比较,允许或拒绝运行在容器中的应用程序的系统调用的许可。

Description

用于容器的系统调用策略
背景技术
为了安全和简单起见,一些操作环境被配置为在诸如容器(container)或虚拟机的分离沙箱(sandbox)中运行应用程序,沙箱将应用程序彼此隔离并且将应用程序与物理硬件隔离。应用程序可以通过较低级别的层级处的中介与沙箱外部的诸如物理硬件(例如,处理器、存储器,储存器、I/O等)的资源交互。这种中介的一个示例为操作系统内核。内核可以在内核的应用程序编程接口(API)处接收来自应用程序的指令(即,系统调用)。内核执行系统调用并将任何结果返回应用程序。
附图说明
在下面的具体描述中参考附图描述了特定示例,其中:
图1是根据本公开的一些示例的计算环境的框图。
图2是根据本公开的一些示例的策略数据结构的图。
图3是根据本公开的一些示例的实现系统调用策略的方法的流程图。
图4是根据本公开的一些示例的执行实现系统调用策略的方法的计算环境的框图。
图5是根据本公开的一些示例的应用系统调用策略的方法的流程图。
图6是根据本公开的一些示例的用于控制系统调用被执行的次数的方法的流程图。
图7是根据本公开的一些示例的包括用于实现系统调用策略的非暂时性计算机可读存储器资源的计算系统的框图。
图8是根据本公开的一些示例的用于控制系统调用被执行的次数的计算系统的框图。
整个附图中,相同的附图标记可以标示相似但不一定相同的元件。
具体实施方式
计算系统上的应用程序可以被限制在诸如容器的沙箱中。容器可以封装应用程序资源、库、其他依赖、环境变量、和/或其他资源,以供应用程序使用。容器隔离封装的应用程序,以防止其他应用程序的干扰,并且防止应用程序间的冲突,但是通过各种中介引导应用程序可以限制应用程序与容器外部的资源通信。例如,为了访问容器外部的资源,应用程序可以对操作系统(OS)内核的应用程序编程接口(API)进行系统调用。在一个这样的示例中,应用程序通过对内核进行系统调用来访问(例如,读、写等)存储在一组存储设备上的数据。一旦接收到系统调用,内核访问存储设备上的所请求的数据,并将任何结果返回应用程序。
根据本文描述的示例,出于安全和其他原因,运行和管理容器的容器平台可以向内核提供用于每个容器的允许或禁止的系统调用的列表。与恶意进程相关联的系统调用或危及系统稳定性的系统调用可以被禁止。在一些示例中,容器平台维护被统一地应用于每个容器及其应用程序的允许/禁止的系统调用的全局列表。
另外或可替代地,容器平台可以维护限定用于不同容器的不同的系统调用策略的策略数据结构。具体地,策略数据结构可以基于要在容器内运行的应用程序的类型,来限定用于容器的策略。在一个这样的示例中,策略数据结构限定第一策略和第二策略,第一策略具有用于运行网络服务器应用程序的容器的第一组允许和禁止的系统调用,第二策略具有用于运行数据库应用程序的容器的第二组允许和禁止的系统调用。容器平台基于容器内的元数据确定应用程序类型和要应用的具体策略。当相应的容器首次被执行时,容器平台以技术策略指令的形式向内核提供该策略。
给定策略可以指定允许和/或禁止的系统调用。此外,在一些示例中,策略确定可由容器内的应用程序进行的特定系统调用的次数。例如,系统调用execve()可被用于启动容器并且开始执行容器内的应用程序。然而,多次调用execve()可能指示容器内的恶意应用程序正在试图大量产生其他进程。因此,在一些这样的示例中,策略指定系统调用execve()可被容器内的应用程序执行一次,并且后续的调用将被阻止。基于此,容器与内核进行交互,拒绝对execve()进行第二次调用以及后续的调用。
本文描述的机制对于支持计算系统的高级安全性和操作可以是有用的。例如,在许多示例中,策略数据结构通过将独立的系统调用策略应用于针对每个容器的预期用途而定制的容器,来提供灵活性和安全性。通过根据应用程序类型限定系统调用策略,在一些示例中,策略数据结构利用给定类型的应用程序的趋势来对系统调用进行类似使用,以便管理策略数据结构的大小和复杂度。这可大大简化策略管理,同时仍然允许针对任何用例定制的策略。在一些示例中,容器平台限制了系统调用可被执行的次数。这提供了附加级别的安全性,来防范恶意应用程序。
参考以下附图来描述这些示例和其他示例。除非另外指出,附图及其伴随的描述是非限制性的,并且没有元件是任何特定示例的特征。就此而言,在不脱离本公开的精神和范围的情况下,来自一个示例的特征可以自由地并入到其他示例中。
参考图1来描述用于实践本公开的技术的计算环境。就此而言,图1是根据本公开的一些示例的计算环境100的框图。虽然被图示为单个单一实体,但是计算环境100可以表示一起操作的任何数目的计算设备的进程和资源,以便执行普通功能。例如,计算环境100可以表示单个单一计算系统、分离计算系统集群,或者它们的任意组合。
计算环境100包括一组物理硬件102,物理硬件102包括任何数量的处理资源104(例如,中央处理单元、图形处理单元、微控制器、专用集成电路、可编程门阵列、和/或其它处理资源)、存储资源106(例如,随机存取存储器、非易失性存储器、固态驱动器、硬盘驱动器HDD、光存储设备、磁带驱动器、和/或其他合适的存储资源)、网络资源108(例如,以太网、IEEE 802.11WiFi、和/或其他合适的有线或无线网络资源)、I/O资源110、和/或其它合适的计算硬件。
计算环境100还包括内核112(例如,OS内核)、管理其他软件组件之间的交互并且管理与物理硬件102的交互的软件组件。内核112可以包括API 114,API114用于接收来自其他软件组件的系统调用,该其他软件组件请求内核112代表它们执行操作。在一些示例中,这些软件组件包括在内核112之上运行并且与API 114交互的容器平台116。
容器平台116是为在计算环境100上运行的应用程序120提供被称为容器118的隔离环境的一组程序和资源。每个容器118可以包括任何合适数量的应用程序120以及库122、环境设置、变量、以及创建独立执行环境的其他依赖。因此,容器118内的应用程序120具有分离的运行时环境,并且如同它们是在计算环境100中运行的唯一应用程序120那样操作。容器118隔离应用程序120,以防止资源冲突、防止崩溃在容器118之间传播、防止恶意干扰、以及提供其他益处。因为开发者可以通过提供容器118作为整体式实体来分发应用程序120和用于运行应用程序120的要素,所以容器还提供用于分发应用程序120的便利机制,。
容器平台116可以通过诸如容器平台116或内核112等的中介,将容器化的应用程序120限制在其容器118的资源和用于外部资源的通道请求。在示例中,运行在容器118中的应用程序120通过向内核112发出系统调用124来访问容器外部的资源(例如,硬件102)。系统调用124请求内核112代表应用程序120执行操作,并且尽管一个示例是访问硬件102,但是系统调用124可以用于请求限制到内核级别的任何操作。
虽然许多系统调用124是良性的,但是系统调用可被利用以执行应用程序120不被允许执行的任务。在一些示例中,应用程序120可能尝试容器突破,允许恶意应用程序120绕开容器118和容器平台116,以直接访问不被允许的资源。作为附加的问题,结构不良的系统调用124可能有意或无意地导致可能停掉计算环境100的内核崩溃(即,内核错误)。
为了解决这些问题以及其他问题,当每个容器118首次被运行时,容器平台116可以以技术策略指令126的形式针对相应的容器118生成策略并向内核112提供策略。技术策略指令126指定容器118内的应用程序120允许进行的系统调用124,和/或应用程序120禁止进行的系统调用124。内核112然后拒绝不允许应用程序120进行的系统调用124。
在一些示例中,容器平台116基于容器118的应用程序类型来确定策略和技术策略指令126。更具体而言,由于实现特定角色(例如,网络服务器、数据服务器、数据库、客户端应用程序、负载平衡器、基于文本的搜索引擎、开发环境、编译器等)的应用程序120可具有类似的系统调用行为,容器平台116维护将应用程序类型映射到系统调用策略的策略数据结构128,下面详细描述策略数据结构128的示例。
可以基于容器118内的应用程序120的任意属性(例如,应用程序角色、应用程序名称、品牌、版本、特征、构建参数、和/或其他合适的属性)确定容器118的应用程序类型,并且将容器118的应用程序类型存储在容器118的元数据记录130内。元数据记录130可以将应用程序类型存储为元组或者任何其他合适的数据结构,并且在一个示例中,元数据记录130存储元组:(网络服务器,服务器品牌名称,v2.0,64位)。
由于应用程序类型确定用于容器118的许可,因此在一些示例中,应用程序类型由除了容器118的创建者之外的实体指定。在一些这样的示例中,应用程序类型由诸如管理员或安全提供者的受信任方指定。容器平台116可以在创建时、在运行容器118之前、或者在它们之间的任何时间,将包含所指定的应用程序类型的元数据记录130附加到容器118。
当容器运行时,容器平台116基于元数据记录130中的应用程序类型,来查询策略数据结构128。由此,容器平台116可以依据已经批准容器的应用程序120进行的那些系统调用以及不允许容器的应用程序120进行的那些系统调用,来确定策略。基于策略,容器平台116以适合内核112使用的格式生成技术策略指令126。
例如,一些Linux内核112支持seccomp安全计算模式的设施(facility)。seccomp允许管理员使用诸如JavaScript对象表示法(JSON)的各种格式来指定用于诸如容器118或应用程序120的进程的允许和/或禁止的系统调用。因此,在一些这样的示例中,容器平台116产生技术策略指令126作为JSON对象,然而技术策略指令126可以采取任何其他合适的格式。内核112接收技术策略指令126,并且在从相关联的容器118中的应用程序120接收到系统调用124时应用策略指令126。
在一些示例中,容器平台116和内核112规定了系统调用124可由给定容器118内的应用程序发出的次数。例如,execve()系统调用124可以在容器118首次被运行时使用,但后续execve()调用可以指示容器118中的应用程序120正在试图大量产生控制台或以其他方式摆脱容器118。因此,策略数据结构128可以记录应用程序类型被允许进行给定次数的特定的系统调用124(例如,execve()、clone()、prctl()、futex()等)或系统调用的类别(例如,文件访问、存储器、消息队列、网络访问、进程、系统等)、以及后续的系统调用124被禁止。
在一些这样的示例中,当容器平台116从应用程序类型和策略数据结构128确定特定系统调用124被允许执行给定次数时,容器平台116在首次运行容器118时,初始化用于系统调用124或调用类别的系统调用计数器132。在一个这样的示例中,系统调用计数器132被存储在容器118的proc文件系统中。proc文件系统为与进程相关联的虚拟文件系统的示例,诸如容器118或应用程序120,proc文件系统包含运行时的信息而不是文件本身。每个容器118可以具有其自己的proc文件系统,并且在该示例中,容器平台116通过在容器118的proc文件系统中写入对应的文件来初始化系统调用计数器132。在一些示例中,容器平台116初始化系统调用计数器132,以匹配对应的系统调用124或调用类别被允许运行的次数。在一些示例中,容器平台116将系统调用计数器初始化为表示对应的系统调用124或调用类别被允许恰好运行一次的值。
当内核112接收到相应的系统调用124时,内核112读取系统调用计数器132的状态,以确定系统调用124是否被允许。在一些示例中,proc文件系统中的系统调用计数器132链接到容器的task_struct结构中的对应条目。与proc文件系统类似,每个进程可具有相应的task_struct存储器结构,该相应的task_struct存储器结构在代表进程执行系统调用时存储供内核112使用的进程的上下文数据。在一些这样的示例中,内核通过task_struct结构读取系统调用计数器132的状态,以确定系统调用124是否被允许。如果是,则内核112在执行系统调用124之后,通过task_struct结构更新系统调用计数器132,以跟踪调用次数。这可包括递减系统调用计数器132和/或将计数器132设置为指示系统调用124不再被允许的值。
参考图2描述供容器平台116使用的策略数据结构128的示例。就此而言,图2是根据本公开的一些示例的策略数据结构128的图。在图2的示例中,策略数据结构128被构造为本体(ontology),然而策略数据结构128可以采用任何其他合适的形式,诸如数组、哈希表、树、链表、或其他合适的数据结构。
策略数据结构128记录一个或多个应用程序类型与一个或多个系统调用之间的对应。因此,在一些示例中,策略数据结构128包括应用程序类型分类202,应用程序类型分类202包含应用程序类型的各种要素204,诸如应用程序角色、应用程序名称、版本、特征、构建参数、和/或其它合适属性。策略数据结构128还可以包括包含系统调用124的系统调用分类206。在应用程序类型的要素204与系统调用124之间的策略数据结构128中的关系208指示对于给定的应用程序类型系统调用124是被允许还是被禁止。在一些示例中,关系208指示系统调用被允许的有限并且非零数量的次数。
在一些示例中,系统调用分类206包括系统调用类别210(例如,文件访问、存储器、消息队列、网络访问、进程、系统等),系统调用类别210包含单个的系统调用124。系统调用类别210可用于允许或禁止所包含的系统调用124作为一个组,并且策略数据结构128的关系208可以将应用程序类型的要素204链接到系统调用类别210、系统调用124本身、以及它们的组合。例如,第一关系208可以指定网络服务器的类型通常被禁止执行系统调用124的类别210。然而,第二关系208可以指定用于网络服务器的特定构建的容器118可以执行类别210内的特定系统调用124,从而部分地高于第一关系。当然,许多其他类型的关系是可能的,并且被提供。
参考图3和图4来描述实现系统调用策略的技术的示例。图3是根据本公开的一些示例的实现系统调用策略的方法300的流程图。方法300的描述是非限制性的,并且在不脱离本公开的情况下可以向方法300添加步骤和从方法300省略步骤。此外,除非另有指出,方法300的过程可以以任何顺序执行,包括由一个或多个实体同时执行。图4是根据本公开的一些示例的执行实现系统调用策略的方法300的计算环境400的框图。
参考图3的块302和图4,计算系统的容器平台116接收用于运行应用程序120的容器118。容器平台116接收的容器118可以基本上类似于图1的容器118,并且可具有元数据记录130,元数据记录130指定应用程序120的应用程序类型,基本如上所述。
参考图3的块304和图4,容器平台116接收策略数据结构128,策略数据结构128指定一组系统调用策略,并将系统调用策略映射到一组应用程序类型。策略数据结构128可以基本上类似于图1和图2的策略数据结构,并且可以采用任何合适的形式,诸如本体、数组、哈希表、树、链表、或其他合适的数据结构。
参考图3的块306和图4,容器平台116查询策略数据结构128,以基于容器的元数据记录130中的应用程序类型,来确定该组系统调用策略中的要应用于容器118的策略402。参考图3的块308和图4,计算系统400的内核112实现用于容器118的策略402。在如此做时,内核112可以基于系统调用与策略402的比较,来允许或拒绝应用程序120对系统调用124的许可。
参考图5描述进一步的示例。图5是根据本公开的一些示例的应用系统调用策略的方法500的流程图。方法500的描述是非限制性的,并且在不脱离本公开的情况下,可以向方法500添加步骤和从方法500省略步骤。此外,除非另有指出,方法500的过程可以以任何顺序执行,包括由一个或多个实体同时执行。
参考块502,容器平台116接收用于运行应用程序120的容器118。可以从运行在计算系统上的进程(诸如编译器)、通过网络耦接的另一计算系统、或任何其他合适的源接收容器118。参考块504,如果容器118不包括记录应用程序120的应用程序类型的元数据记录130,则诸如管理员或安全提供者的受信任方使容器平台116创建元数据记录130。这可以在容器被创建时、在容器被接收时、和/或在容器首次被执行时执行。
参考块506,容器平台116接收策略数据结构128,策略数据结构128指定用于一组应用程序类型的一组系统调用策略。这可以基本上如图3的块304中所描述的那样执行,并且策略数据结构128可以基本上类似于图1至图4的策略数据结构。
参考图5的块508,容器平台116基于元数据记录130中指定的应用程序类型,查询策略数据结构128,以基于元数据记录130中的应用程序类型,来确定该一组系统调用策略中的要应用于容器118的策略。这可以基本上如图3的块306中所描述的那样执行。
参考图5的块510,容器平台116创建技术策略指令126,技术策略指令126指定由块508中确定的策略所允许和/或禁止的系统调用。技术策略指令126包含块508的策略的一部分,并且被格式化以用于由内核112读取。技术策略指令126可以采用任何合适的格式,并且在一些示例中,利用诸如seccomp的Linux安全计算模式设施被格式化为JSON对象以供使用。
参考块512,内核112实施如由技术策略指令126所指定的用于容器118和应用程序120的策略。这可以包括内核112接收来自应用程序120的系统调用124,如块514所示。在块516中,内核检查技术策略指令126,以确定系统调用124是被允许还是被禁止。基于结果,内核允许并执行系统调用124(如块518所示),或者拒绝系统调用(如块520所示)。
在一些示例中,作为完全禁止系统调用的替代,限制系统调用被允许的次数可能是有用的。图6是根据本公开的一些示例的用于控制系统调用被执行的次数的方法600的流程图。方法600的描述是非限制性的,并且在不脱离本公开的情况下可以向方法600添加步骤和从方法600省略步骤。此外,除非另有指出,方法600的过程可以以任何顺序执行,包括由一个或多个实体同时执行。方法600可以独立地执行或者作为方法300和/或方法500的一部分执行。
参考图6的块602,容器平台116接收用于运行应用程序120的容器118。这可以基本上如图3的块302和/或图5的块502中所描述的那样执行。参考图6的块604,如果容器118不包括记录应用程序120的应用程序类型的元数据记录130,则诸如管理员或安全提供者的受信任方使容器平台116创建元数据记录130。这可以基本上如图5的块504中所描述的那样执行。
参考图6的块606,容器平台116接收策略数据结构128,策略数据结构128指定用于一组应用程序类型的一组系统调用策略。这可以基本上如图3的块304和/或图5的块506中所描述的那样执行。
参考图6的块608,容器平台116基于元数据记录130中指定的应用程序类型,查询策略数据结构128,以基于元数据记录130中的应用程序类型,来确定该一组系统调用策略中的要应用于容器118的策略。在一些示例中,策略指定系统调用124或系统调用的类别210被允许执行给定次数,并且后续尝试进行这样的系统调用将被拒绝。
参考块610,容器平台116对容器118的运行时环境中的系统调用计数器132进线初始化,用于跟踪系统调用被允许的次数。系统调用计数器132可对应于单个系统调用或系统调用的类别,并跟踪单个系统调用或系统调用的类别。在一些示例中,容器平台116初始化系统调用计数器132,以匹配相应的系统调用被允许的给定次数。系统调用计数器132可以采用任何合适的形式,并且在一些示例中,容器118具有proc文件系统。在一些这样的示例中,容器平台116通过写入proc文件系统内的文件来初始化系统调用计数器132。
参考块612,计算系统的内核112从应用程序120接收由系统调用计数器132跟踪的系统调用124的实例。参考块614,在执行系统调用124之前,内核112检查系统调用计数器132,以确定应用程序120是否已经超出该调用被允许的给定次数。在一些示例中,proc文件系统中的系统调用计数器132链接到被提供至内核112的task_struct结构。在一些这样的示例中,内核112通过读取task_struct结构中的计数器132的状态,来检查系统调用计数器132。
参考块616,当系统调用计数器132指示系统调用被禁止时,内核112拒绝系统调用。相反,当系统调用计数器132指示系统调用被允许时,内核112允许并执行系统调用,如块618所指示。在系统调用被执行之后,内核112更新系统调用计数器132,如块620所示。在一些例子中,内核112通过写入task_struct结构来递减系统调用计数器132。
方法300、500和/或600的过程可以通过硬编码和可编程逻辑的任意组合来执行。在一些示例中,处理资源利用存储在非暂时性计算机可读存储器资源上的指令来执行这些过程中的至少一些。因此,本公开的示例可以采取存储执行方法300、500和/或600的至少部分的指令的非暂时性计算机可读存储器资源的形式。图7是根据本公开的一些示例的包括用于实现系统调用策略的非暂时性计算机可读存储器资源的计算系统700的框图。
计算系统700包括通信地耦接到非暂时性计算机可读存储器资源704的处理资源702。处理资源702可以包括任意数量的CPU、GPU、微控制器、ASIC、FPGA、和/或其他处理资源以及它们的任意组合,并且非暂时性计算机可读存储器资源704可以包括任意数量的非暂时性存储器设备,包括HDD、SSD、其他闪存设备、光学介质、电池支持的RAM、和/或适合存储用于处理资源702的指令的其他存储器设备。因此,在各种示例中,非暂时性计算机可读存储器资源704存储用于执行方法300、方法500和/或方法600的过程的指令。
例如,参考块706,非暂时性计算机可读存储器资源704可以存储指令,该指令使处理资源702识别用于应用程序120的容器118的元数据记录130。元数据记录130包括应用程序的应用程序类型。
参考块708,非暂时性计算机可读存储器资源704可以存储指令,该指令使处理资源702基于容器118的元数据记录130中的应用程序类型,从策略数据结构128确定容器118的策略。这可以基本上如图3的块306、图5的块508、和/或图6的块608中所描述的那样执行。在一些示例中,策略数据结构128将一组系统调用的许可映射到一组应用程序类型。策略数据结构128可以将该一组系统调用分类为一组系统调用类别210,使得策略指定该一组的至少一些类别210的许可。
参考块710,非暂时性计算机可读存储器资源704可以存储指令,该指令使得处理资源702基于系统调用与策略的比较,通过允许或拒绝应用程序120的许可来使处理资源702应用策略,以执行该组类别中的类别210内的系统调用124。这可以基本上如图3的块308、图5的块512至块520、和/或图6的块612至块620中所描述的那样执行。
图8是根据本公开的一些示例的用于控制系统调用被执行的次数的计算系统800的框图。计算系统800包括耦接到非暂时性计算机可读存储器资源804的处理资源802。处理资源802可以包括任意数量的CPU、GPU、微控制器、ASIC、FPGA、和/或其他处理资源以及它们的任意组合,并且非暂时性计算机可读存储器资源804可以包括任意数量的非暂时性存储器设备,包括HDD、SSD、其他闪存设备、光学介质、电池支持的RAM、和/或适合存储指令的其他存储器设备。在各种示例中,非暂时性计算机可读存储器资源804存储使处理资源802执行方法300、方法500和/或方法600的过程的指令。
参考块806,非暂时性计算机可读存储器资源804存储指令,该指令使处理资源802接收用于应用程序120的容器118。这可以基本上如图3的块302、图5的块502、和/或图6的块602中所描述的那样执行,并且容器118可以具有指定应用程序120的应用程序类型的元数据记录130。
参考块808,非暂时性计算机可读存储器资源804存储指令,该指令使处理资源802基于元数据记录130中的应用程序类型,确定要应用于容器118的策略。这可以基本上如图6的块608中所描述的那样执行。在一些示例中,策略指定系统调用124被允许由容器118的一个或多个应用程序120执行的次数的非零限制。
参考块810,非暂时性计算机可读存储器资源804存储指令,该指令使得处理资源802实施用于容器118的策略,以允许容器118和应用程序120执行系统调用124达到非零限制。这可以基本上如图6的块610至块620中所描述的那样执行。
在以上描述中,阐述大量细节,以提供对本文公开的主题的理解。然而,实现方式可以在没有这些细节中的一些细节或全部细节的条件下实践。其他实现方式可包括上面讨论的细节的改变和变型。意在所附权利要求覆盖上述改变和变型。

Claims (15)

1.一种用于实现系统调用策略的方法,包括:
由容器平台提供用于运行相应类型的应用程序的多个容器,其中所述多个容器中的每个相应容器具有指定在所述相应容器运行的应用程序的应用程序类型的元数据记录;
由所述容器平台接收数据结构,所述数据结构指定用于相应应用程序类型的系统调用策略;
初始化与所述多个容器的相应容器相关联的不同计数器;
响应于来自所述多个容器中的第一容器中的应用程序的系统调用,由所述容器平台查询所述数据结构,以基于所述第一容器的元数据记录中的第一应用程序类型,来确定所述系统调用策略中的要应用于所述第一容器的策略;以及
由内核实施用于所述第一容器的所述策略,以基于运行在所述第一容器中的所述应用程序的系统调用与所述策略的比较并且基于与所述第一容器相关联的第一计数器,允许或拒绝所述系统调用的许可,所述第一计数器是所述不同计数器的一部分。
2.根据权利要求1所述的方法,其中所述数据结构被结构化为本体。
3.根据权利要求1所述的方法,其中所述数据结构将系统调用分类为一组系统调用类别,并且其中所述策略指定用于所述一组系统调用类别中的第一系统调用类别的许可,所述第一系统调用类别包括多个不同系统调用。
4.根据权利要求1所述的方法,其中实施所述策略包括:
创建技术策略指令,所述技术策略指令包括基于所述策略指定用于所述系统调用的许可的JavaScript对象表示法(JSON)对象;以及
在执行所述第一容器时,将所述技术策略指令应用于所述第一容器。
5.根据权利要求1所述的方法,包括:在创建所述相应容器时,为所述相应容器指定所述元数据记录。
6.根据权利要求1所述的方法,包括:在执行所述相应容器时,为所述相应容器指定所述元数据记录。
7.根据权利要求1所述的方法,其中所述策略被实施为Linux安全计算模式策略。
8.一种存储指令的非暂时性计算机可读存储器资源,当所述指令被执行时,使处理资源:
识别用于运行应用程序的容器的元数据,其中所述元数据包括所述应用程序的应用程序类型;
基于所述容器的所述元数据中的所述应用程序类型,从数据结构确定用于所述容器的策略,其中所述数据结构将系统调用的许可映射到应用程序类型并且将所述系统调用分类为一组系统调用类别,并且其中所述策略包括第一关系,所述第一关系指定所述应用程序类型被禁止执行所述一组系统调用类别的第一系统调用类别,以及第二关系,所述第二关系指定所述应用程序类型被允许执行所述第一系统调用类别内部的给定系统调用,其中,所述策略中的所述第二关系高于所述第一关系;
应用所述策略,以基于所述第一系统调用类别内部的系统调用与所述策略的比较,来允许或拒绝用于执行所述系统调用的所述应用程序许可,其中,所述策略指定所述系统调用被允许执行的非零次数,其中,所述容器是运行不同应用程序类型的相应应用程序的多个容器的一部分;
在所述多个容器的相应容器的运行时环境中初始化 不同计数器,所述不同计数器用于跟踪允许由运行在所述多个容器的相应容器中的不同应用程序类型的应用程序执行系统调用的非零次数;以及
响应于所述系统调用,检查在所述容器的所述运行时环境中的计数器,以确定所述系统调用是否被允许执行。
9.根据权利要求8所述的非暂时性计算机可读存储器资源,其中使所述处理资源应用所述策略的所述指令包括指令,使所述处理资源:
创建技术策略指令,所述技术策略指令包括基于所述策略指定用于所述系统调用的许可的JavaScript对象表示法(JSON)对象;以及
在执行所述容器时,将所述技术策略指令应用于所述容器。
10.根据权利要求8所述的非暂时性计算机可读存储器资源,其中所述数据结构被结构化为本体。
11.根据权利要求8所述的非暂时性计算机可读存储器资源,其中所述策略被实施为Linux安全计算模式策略。
12.一种用于实现系统调用策略的计算系统,包括:
存储指令的非暂时性计算机可读存储器资源;以及
处理资源,用于执行所述指令,以:
提供用于运行相应类型的应用程序的多个容器,其中所述多个容器中的每个相应容器具有指定在所述相应容器运行的应用程序的应用程序类型的元数据记录;
初始化与所述多个容器的相应容器相关联的不同计数器,所述不同计数器用于跟踪允许由运行在所述多个容器的相应容器中的不同应用程序类型的应用程序执行系统调用的非零次数;
响应于来自所述多个容器中的第一容器中的应用程序的系统调用,基于所述第一容器的元数据记录中的第一应用程序类型,确定应用于所述第一容器的策略;并且
实施用于所述第一容器的所述策略并检查与所述第一容器相关联的第一计数器,以允许所述第一容器和在所述第一容器运行的所述应用程序执行所述系统调用。
13.根据权利要求12所述的计算系统,其中所述处理资源用于执行所述指令,以:
接收数据结构,所述数据结构针对所述不同应用程序类型指定系统调用策略的许可;并且
基于所述第一容器中的所述元数据记录中的所述应用程序类型查询所述数据结构,以确定所述策略。
14.根据权利要求13所述的计算系统,其中所述数据结构被结构化为本体。
15.根据权利要求13所述的计算系统,其中所述数据结构将系统调用分类为一组系统调用类别,并且其中所述策略指定用于所述一组系统调用类别中的第一系统调用类别的许可,所述第一系统调用类别包括多个不同的系统调用。
CN201810058458.0A 2017-01-27 2018-01-22 用于容器的系统调用策略 Active CN108363920B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/417,955 2017-01-27
US15/417,955 US10650138B2 (en) 2017-01-27 2017-01-27 System call policies for containers

Publications (2)

Publication Number Publication Date
CN108363920A CN108363920A (zh) 2018-08-03
CN108363920B true CN108363920B (zh) 2022-06-10

Family

ID=60997326

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810058458.0A Active CN108363920B (zh) 2017-01-27 2018-01-22 用于容器的系统调用策略

Country Status (3)

Country Link
US (1) US10650138B2 (zh)
EP (1) EP3355226B1 (zh)
CN (1) CN108363920B (zh)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3376392A1 (de) * 2017-03-15 2018-09-19 Siemens Aktiengesellschaft Verfahren zum betrieb eines automatisierungssystems und nach dem verfahren arbeitendes automatisierungssystem
US10496555B2 (en) * 2017-05-11 2019-12-03 Red Hat, Inc. Implementing per-thread memory access permissions
US10607021B2 (en) 2018-01-26 2020-03-31 Bank Of America Corporation Monitoring usage of an application to identify characteristics and trigger security control
US20190294780A1 (en) * 2018-03-26 2019-09-26 International Business Machines Corporation System and method for executing operating system level virtualization software objects
US11663337B2 (en) * 2018-07-20 2023-05-30 George Mason University Methods and systems for system call reduction
TWI668634B (zh) * 2018-08-03 2019-08-11 廣達電腦股份有限公司 基於軟體容器提供雲端服務之系統及方法
US11347843B2 (en) * 2018-09-13 2022-05-31 King Fahd University Of Petroleum And Minerals Asset-based security systems and methods
CN110928597B (zh) * 2018-09-20 2021-05-04 Oppo广东移动通信有限公司 游戏运行方法及相关产品
US11256817B2 (en) 2019-02-11 2022-02-22 Red Hat, Inc. Tool for generating security policies for containers
CN110362382A (zh) * 2019-06-24 2019-10-22 湖南麒麟信安科技有限公司 一种容器安全隔离方法、系统及介质
US11586589B2 (en) 2020-07-13 2023-02-21 Red Hat, Inc. Speedup build container data access via system call filtering
US11803429B2 (en) * 2020-10-30 2023-10-31 Red Hat, Inc. Managing alert messages for applications and access permissions
TWI810502B (zh) 2020-12-11 2023-08-01 財團法人工業技術研究院 運動控制系統及運動控制方法
CN114035886B (zh) * 2021-09-28 2023-10-03 中国科学院信息工程研究所 一种针对内核数据的容器安全加固系统及方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8271996B1 (en) * 2008-09-29 2012-09-18 Emc Corporation Event queues
CN104601580A (zh) * 2015-01-20 2015-05-06 浪潮电子信息产业股份有限公司 一种基于强制访问控制的策略容器设计方法
CN105550577A (zh) * 2015-12-31 2016-05-04 宇龙计算机通信科技(深圳)有限公司 一种终端容器安全的控制方法与系统
CN105867955A (zh) * 2015-09-18 2016-08-17 乐视云计算有限公司 一种应用程序部署系统及部署方法

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8079086B1 (en) * 1997-11-06 2011-12-13 Finjan, Inc. Malicious mobile code runtime monitoring system and methods
US8607299B2 (en) * 2004-04-27 2013-12-10 Microsoft Corporation Method and system for enforcing a security policy via a security virtual machine
US9055093B2 (en) 2005-10-21 2015-06-09 Kevin R. Borders Method, system and computer program product for detecting at least one of security threats and undesirable computer files
US7913092B1 (en) 2005-12-29 2011-03-22 At&T Intellectual Property Ii, L.P. System and method for enforcing application security policies using authenticated system calls
US20080016339A1 (en) * 2006-06-29 2008-01-17 Jayant Shukla Application Sandbox to Detect, Remove, and Prevent Malware
US8272048B2 (en) * 2006-08-04 2012-09-18 Apple Inc. Restriction of program process capabilities
US8856782B2 (en) * 2007-03-01 2014-10-07 George Mason Research Foundation, Inc. On-demand disposable virtual work system
US8844036B2 (en) * 2012-03-02 2014-09-23 Sri International Method and system for application-based policy monitoring and enforcement on a mobile device
US8966591B2 (en) * 2013-01-18 2015-02-24 Ca, Inc. Adaptive strike count policy
US20140344173A1 (en) * 2013-04-02 2014-11-20 Kpmg Llp System and method for creating executable policy rules for execution on rules-based engines
US9424420B2 (en) 2013-08-02 2016-08-23 Red Hat, Inc. Restricting application binary interfaces
US9313230B1 (en) * 2014-09-22 2016-04-12 Amazon Technologies, Inc. Policy approval layer
EP3304299A4 (en) 2015-06-01 2018-07-25 Draios Inc. Implicit push data transfer
US20180060584A1 (en) * 2016-09-01 2018-03-01 Sunny Ahuwanya Securing Code Execution in a Network Environment

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8271996B1 (en) * 2008-09-29 2012-09-18 Emc Corporation Event queues
CN104601580A (zh) * 2015-01-20 2015-05-06 浪潮电子信息产业股份有限公司 一种基于强制访问控制的策略容器设计方法
CN105867955A (zh) * 2015-09-18 2016-08-17 乐视云计算有限公司 一种应用程序部署系统及部署方法
CN105550577A (zh) * 2015-12-31 2016-05-04 宇龙计算机通信科技(深圳)有限公司 一种终端容器安全的控制方法与系统

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Container-Based Virtualization for Byte-Addressable NVM Data Storage;Giles 等;《2016 IEEE INTERNATIONAL CONFERENCE ON BIG DATA (BIG DATA)》;20161208;第2754-2763页 *

Also Published As

Publication number Publication date
US20180218148A1 (en) 2018-08-02
EP3355226B1 (en) 2021-04-28
EP3355226A1 (en) 2018-08-01
US10650138B2 (en) 2020-05-12
CN108363920A (zh) 2018-08-03

Similar Documents

Publication Publication Date Title
CN108363920B (zh) 用于容器的系统调用策略
KR102255767B1 (ko) 가상 머신 감사를 위한 시스템 및 방법들
US10650157B2 (en) Securing virtual execution environments
JP5922149B2 (ja) セキュリティ境界の提供
Ulusoy et al. GuardMR: Fine-grained security policy enforcement for MapReduce systems
US10101936B2 (en) Memory access control
US20180067848A1 (en) Memory access control method and system
US9928010B2 (en) Methods and apparatus to re-direct detected access requests in a modularized virtualization topology using virtual hard disks
EP3367291B1 (en) Label transition for mandatory access controls
US9804789B2 (en) Methods and apparatus to apply a modularized virtualization topology using virtual hard disks
US11720607B2 (en) System for lightweight objects
US11861364B2 (en) Circular shadow stack in audit mode
US10191680B2 (en) Memory access control
US9009731B2 (en) Conversion of lightweight object to a heavyweight object
US10126983B2 (en) Methods and apparatus to enforce life cycle rules in a modularized virtualization topology using virtual hard disks
CN116521306A (zh) 一种容器使能selinux的方法和计算机设备
US11907176B2 (en) Container-based virtualization for testing database system
US10523590B2 (en) Channel-based mandatory access controls
US10311242B2 (en) Distributed system resource liens
US20230418964A1 (en) Generating customized policy decision point services for controlling access to computing resources
US7987470B1 (en) Converting heavyweight objects to lightwight objects

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
GR01 Patent grant
GR01 Patent grant