1.本发明涉及用于在一个或多个组件的一个或多个执行
环境中安全地启动
容器实例的方法和装置,
所述组件可以是技术设施的电子装置、设备、机器等,以及涉及相关的计算机程序产品。
背景技术:
2.由于工业系统(控制设备、工业pc、iot和边缘设备、云服务器)常常在长的时间间隔期间在现场被使用,所以这些工业系统受制于不断变化的前提条件和动态环境。为了处理这些情况,特别是开发新设备,使得例如通过借助容器技术支持可重新加载的应用程序,这些新设备能够在使用时间期间灵活地被适配。
3.容器技术(例如docker、runc、coreos rkt或lxc)经常与可动态地重新加载的应用程序相关联地使用在基于linux的系统中。用于容器应用程序(container-apps)的运行时环境在此通过虚拟化全局资源(例如基本文件系统、设备的网络接口)产生。
4.容器保证在计算机上所使用的资源的分离和管理。容器镜像是容器的映射。镜像本身可以由多个基于彼此的层(layer)组成,这些层受保护(以密码的方式、内存受保护等)并且因此不能被改变。这些层在此能够共同地形成容器实例的文件系统。镜像通常是可移植的,可以存储在储存库(也称为容器注册表)中并且可以与其他用户共享。从一个镜像能够起动多个容器实例,也就是说,容器镜像的活动“实例”因此正好被执行,也就是说,在容器实例之内运行确定的应用程序。
5.运行时环境例如可以被理解为设立为执行程序代码的设备或装置。为此,该设备或该装置例如可以具有执行程序代码的处理器单元(cpu)。运行时环境可以本身以软件或以硬件实现。运行时环境在此使得能够执行程序代码。运行时环境可以通过至少一个环境特定的参数、例如机器类型/cpu类型、主机操作系统内核的版本、linux发行版、所安装的程序包、其他正在运行的进程等来描述。
6.在本上下文中,程序代码可以被理解为应用程序(app)和/或程序和/或程序指令和/或容器镜像。linux容器例如在使用docker或runc的情况下使得能够例如在隔离的执行环境中执行容器内存映射(容器镜像)和其中所包含的软件应用程序,该执行环境能够被设置在上面所描述的类型的运行时环境上。容器实例例如可以被用于在控制设备或现场设备上灵活地执行不同的(应用程序)功能。因此,容器实例或容器镜像也被称为容器应用程序。
7.如果想要起动或启动容器实例,应检验:也实际上实现了执行环境的针对容器实例所期望的执行限制(也称为限制(例如访问权限、存储限制、许可密钥等))。此外,不确保:在iot环境(iot=internet of things(物联网))中容器实例在为此所设置的终端设备(类型)上运行。这导致:在起动容器实例时存在如下风险:容器软件为执行环境分配过多的权利或过少的执行限制(也称为限制(例如访问权限、存储限制、许可密钥等))。
8.在虚拟化方法、如容器中,特别关键的是,不同的隔离地执行的容器实例共享相同的操作系统内核。因此,为了在安全关键的环境中使用,存在对尤其在起动容器实例时改进
的监控的需求。
9.从专利申请ep3357463a1已知用于在现场设备上执行程序代码的方法和执行环境。
10.在此情况下通过使用检验功能在起动/执行容器时根据执行要求检验各个安全关键的操作的允许性。
技术实现要素:
11.因此,本发明所基于的任务是设计一种方法和一种装置,使得保证容器实例在一个或多个执行环境中相对于现有技术更安全的启动。
12.该任务通过根据独立专利权利要求所述的特征来解决。本发明的有利的实施方式在从属权利要求中描述。
13.本发明要求保护一种用于在技术设施的一个或多个组件的一个或多个执行环境中安全地启动容器实例的方法,其中这种执行环境被设立为执行容器实例,其特征在于以下方法步骤:a)提供可配置的检查功能,在启动容器实例之前和/或期间执行所述检查功能,b)记录用于设立为了启动和/或为了执行容器实例所需的至少一个执行限制的每个步骤,c)借助在检查功能中所配置的至少一个允许性标准检验每个所记录的步骤,以及d)如果满足至少一个允许性标准,则完成容器实例的启动并且必要时完成容器实例的执行,或者e)如果不满足可能的允许性标准中的至少一个,则引入报警措施或抵抗启动的措施。
14.多个执行环境可以在不同的电子装置、如计算机、设备、机器上以分布式方式或并行地运行,所述电子装置可以是技术设施、如工厂或其他自动化设施的组件。
15.这些步骤也可以作为在设立所需的执行限制或多个执行限制时的阶段或级。
16.容器实例通常在多个步骤中被起动或被启动。在容器实例被起动之前,容器软件、例如docker为容器实例提供与容器有关的执行环境,该执行环境停止和/或起动容器实例,加载容器镜像并为容器实例提供资源。所述执行环境也经由相应的容器实例进程可见,所述容器实例进程也起动容器初始化进程并且因此起动容器实例本身。因此,执行环境的执行限制(例如分配selinux上下文、丢弃能力(capabilities)、建立命名空间等)应在该容器执行环境进程中设立或应在起动时递交。针对执行环境的符合性检验、即根据允许性标准的检验也必须在该进程起动时进行。用于实例的执行环境的符合性可以通过可配置的检查功能来检验,其方式是,记录每个要检验的执行限制(例如selinux上下文)以及可能还有所有安全关键的操作和所定义的环境参数(例如机器类型或许可密钥),其是容器实例的执行环境的设立或设立步骤的一部分。检查功能可以从外部或通过容器实例本身来执行。
17.允许性标准在此可以是要满足的权利签名(例如指纹,英语fingerprint)。根据执行环境的类型,多个权利签名也是可能的。
18.针对每个执行限制可以分别确定和记录散列值。
19.所有所确定的散列值可以在每个这样的步骤中相互结合为总值,并且可以记录该
总值以及该总值的随每个步骤产生的变化。
20.例如,可以在第一步骤中从日志的文件形成散列值。在每个文件变化的情况下可以在下一步骤中通过以下方式形成散列值,其中以前形成的散列值与被改变的文件的散列值级联并且紧接着被散列。这也可以被称为运行散列值(laufender hashwert)。在十六进制加法的情况下,在每个步骤中将另一值添加到值的总和上。通过所有散列值相互结合的类型(例如运行散列值)可以得出上面提到的用于设立至少一个执行限制的步骤的顺序。
21.总值可以是通过指纹可表示的或可以通过指纹表示。
22.总值可以与相应的所配置的允许性标准进行比较。此后确定是否满足允许性标准。
23.除了至少一个执行限制之外,此外可以记录并且在形成总值时同时考虑执行环境的一个或多个环境参数。因此可以在不同的执行环境(例如测试环境和生产环境)上(如上面已经提及的那样)启动容器实例。
24.在执行容器实例期间,步骤c)到e)可以根据需要(通过用户交互按需)、以事件控制的方式(以基于事件的方式)和/或以时间控制的方式(以时间间隔周期性地)被重复。
25.抵抗启动的措施之一可以是如下措施:
‑ꢀ
阻止容器初始化进程的起动,
‑ꢀ
设置开关信号,或者
‑ꢀ
例如改变设备状态。
26.报警措施可以是,事件也被记录并输出警报消息或信号。反应或措施也可以视容器镜像或镜像来源而定得出不同结果。如果容器实例例如识别出其运行时环境并未如预期的那样被设立,则该容器实例例如可以拒绝执行。
27.因此,本发明使得能够更好地并且更灵活地保护设备以防攻击者的有害使用。这可以有助于改进产品的安全性和耐用性。此外,通过这种方法可以防止容器实例在并不针对所述容器实例所设置的终端设备(例如缺少针对容器实例的许可证)或执行环境上运行。
28.一般而言,通过记录可以使容器实例的执行环境的改变的检验变得容易(例如用于用户空间监控进程,或在上级系统、如aqua-sec等中的监控)。
29.与上述方法类似地,本发明的另一方面是用于在技术设施的一个或多个组件的一个或多个执行环境中安全地启动容器实例的装置,其中这种执行环境设立用于执行容器实例,其特征在于:a)具有可配置的检查功能的检查单元,所述检查单元设计用于在启动容器实例之前和/或期间执行检查功能,b)记录单元,该记录单元设计用于记录用于设立为了启动和/或为了执行容器实例所需的至少一个执行限制的每个步骤,c)其中检查单元将每个所记录的步骤与在检查功能中所配置的允许性标准进行比较,以及d)启动单元,所述启动单元设计用于如果满足至少一个允许性标准,则完成容器实例的启动并且必要时完成容器实例的执行,或e)如果不满足可能的允许性标准中的至少一个,则引入报警措施或抵抗启动的措施。
30.该装置可以具有至少一个在内部集成的或从外部连接的存储器,在所述存储器中布置有检查单元或在所述存储器中存储有作为检查单元的检查功能。
31.此外,一种计算机程序产品,包括非易失性存储介质,在该非易失性存储介质上存储有可加载的并且可执行的程序代码,该计算机程序产品在处理器单元、尤其根据上文所描述的实施方式之一的装置中执行根据上面提到的实施方式之一的方法。
32.附加地,要求保护该计算机程序产品的变型方案,具有用于配置创建设备、例如3d打印机、计算机系统或适合于创建处理器和/或设备的制造机器的程序指令,其中创建设备利用程序指令被配置,使得能够创建执行环境。
33.此外,要求保护一种用于存储和/或提供该计算机程序产品的提供装置。该提供装置例如是数据载体,该数据载体存储和/或提供该计算机程序产品。替代地或/或附加地,该提供装置例如是网络服务、计算机系统、服务器系统、尤其分布式计算机系统、基于云的计算机系统和/或虚拟计算机系统,其优选地以数据流的形式存储和/或提供该计算机程序产品。
34.该提供例如作为完整的计算机程序产品的以程序数据块和/或指令数据块形式的下载、优选地作为文件、尤其作为下载文件或者作为数据流、尤其作为下载数据流进行。但是,该提供例如也可以作为部分下载进行,所述部分下载由多个部分组成并且尤其经由点对点网络来下载或者作为数据流来提供。这种计算机程序产品例如在使用数据载体形式的提供装置的情况下被读入到系统中并且执行程序指令,使得使根据本发明的方法在计算机上执行或创建设备进行配置,使得该创建设备可以创建执行环境。
35.该方法、布置、装置、单元或设备、模块和计算机程序(产品)可以根据前面提到的数字电路装置的改进方案/实施方式或其改进方案/实施方式来构成,反之亦然。
36.本发明的一种实施方式规定,单元或组件、尤其通信单元或网络组件构成为硬件组件。单元或组件可以包括处理器。更大的单元或硬件组件的子单元可以以软件、固件或又以硬件实施。
37.处理器或处理器单元尤其可以是主处理器(英语central processing unit(中央处理单元),cpu)、微处理器或者微控制器、例如专用集成电路或者数字信号处理器,可能与用于存储程序指令的存储单元等相组合。处理器例如也可以是ic(集成电路,英语integrated circuit)或多芯片模块,尤其fpga(英语field programmable gate array(现场可编程门阵列))或asic(专用集成电路,英语application-specific integrated circuit)、soc(片上系统(system on chip))、图形处理器gpu(graphics processing unit(图形处理单元))、用于评估神经网络的处理器、诸如tpu(tensor processing unit(张量处理单元))或dsp(数字信号处理器,英语digital signal processor)。该处理器可以具有一个或多个计算核(多核)。处理器也可以被理解为虚拟化处理器或软cpu。例如也可以涉及可编程处理器,其配备有用于执行所提到的根据本发明的方法的配置步骤,或者配置有配置步骤,使得可编程处理器实施该方法的根据本发明的特征或本发明的其他方面和子方面。该处理器可以具有用于防止物理操纵的防篡改保护、例如用于检测物理攻击的篡改传感器。
附图说明
38.根据本发明的方法和传输装置的实施例在附图中示例性地示出并且根据以下描述更详细地来解释。
39.该图示出技术设施的组件的示例性实施方式。
具体实施方式
40.在该图中示出具有在操作系统k(也称为内核空间)和用户环境u(也称为用户空间)之间的接口的组件的示例性配置(konstellation)。示出操作系统侧上的资源r1和r3、例如处理器单元以及用户环境侧上的资源r2、例如网络接口或外围设备接口或rn、例如存储器。可能的是,容器实例c尤其与资源r2和rn一起形成与容器有关的执行环境ca,该执行环境用小框表明。容器实例在多个步骤中被启动或被起动。容器软件csw、例如docker在示例中起动容器实例c(参见用1标记的步骤)。
41.可以与检查单元一起共同地在应用环境侧上的存储器中包括在该图中用pf标记的检查功能的记录单元能够记录用于起动容器实例c的步骤(参见用2标记的步骤)并且检查所述步骤的符合性或允许性(参见用3标记的步骤)。尤其执行限制(能力、命名空间、mac域)的设立、但是例如还有在容器中执行的命令(例如包括所递交的命令行参数)或关于执行环境的信息(机器类型、任何其他环境特定的参数)的存在可以是所记录的步骤的一部分。因此可以检验容器实例的起动过程。
42.在容器实例c被起动之前,容器软件为容器实例提供与容器有关的执行环境。该执行环境也经由相应的容器实例进程可见,该容器实例进程也起动容器初始化进程(container-init-prozess)并且因此起动容器实例本身。因此,容器执行环境的执行限制(例如分配selinux上下文、删除能力(capabilities)、设立命名空间等)应在该容器执行环境进程中实现或应在起动时递交。对执行环境的符合性检验也必须在该进程起动时进行。
43.可以通过以下方式检验用于实例c的执行环境的符合性:最初针对每个要检验的执行限制(例如selinux上下文)确定唯一的值(例如密码散列)并将所有要检验的特性的所有值相互结合为总值(例如经由十六进制加法、运行散列值等)。因此,关于所有特性所确定的该总值可以形成代表专用容器镜像的执行环境的执行限制的“权利签名”(指纹)fp。
44.该签名fp与镜像一起被存储并且必须对于可以访问该镜像的每个人而言也是可检索的和可检验的。此外,该值可以作为被签名的容器镜像的一部分来存储。为了能够针对相同的容器镜像考虑不同的执行环境,可以设想为单个容器镜像提供多个不同的权利签名。因此,可以给容器实例在生产环境中提供例如非常限制性的第一权利集并且在开发环境中提供更少受限制的权利集。
45.如果容器镜像应该在执行环境上被执行并且执行限制或限制应该被检验,则检查功能pf在运行时检验容器实例c的允许性或符合性。这例如可以是操作系统的专用进程、诸如hids进程或者被用于设置容器的容器服务(例如docker daemon(守护进程))。操作系统内核的专用部分能够经由相应的接口(例如系统调用、sysfs条目)提供所确定的权利签名fp。借助ebpf(extended berkeley packet filter(扩展的伯克利包过滤器))或相应的内核模块(操作系统内核的一部分),检查功能然后能够借助上面所确定的权利签名fp来监控:哪些容器镜像应该在系统上被起动以及如何针对该容器实例设置或限制了执行环境。
针对每个权利分配/限制,为此(如上面所描述的那样)确定、记录和提供唯一的总值。一旦容器初始化进程应该被起动,该检查功能就认识出,容器实例的执行环境的提供完成了。一旦该初始化进程应该被执行,该检查功能就检验:在运行时所确定的权利签名fp是否与作为允许性标准的预期的和可能被配置的权利签名一致并且因此是允许的。如果该初始化进程是允许的,则启动单元、例如容器软件csw起动容器实例并允许容器实例的执行的完成。如果不允许,则作为措施例如阻止容器初始化进程的起动。
46.在一种实施方式中,容器实例本身能够检验其是否正确地被起动了。因此,容器实例例如还可以检验:与所述容器实例例如交换数据的其他容器实例是否按规定被起动了或也在为其所设置的执行环境上运行。此外,被起动的容器实例的执行环境的设置也可以作为利用tpm(trusted plattform module(可信平台模块))的被测引导进程(measured-boot prozess)的一部分被记录在所谓的平台配置寄存器(pcr)中。被记录在所述平台配置寄存器中的值可以作为远程认证过程的一部分提供。因此,例如如下设备可以被允许访问远程服务,在所述设备上仅设置了允许的执行环境。
47.如果识别出所确定的权利签名fp与预期的权利签名的偏差,则可以利用不同的措施作出反应。除了上面所描述的阻止容器初始化进程的起动的实施方式之外,还可以记录事件,设置开关信号,或者例如改变设备状态。该措施也可以视容器镜像或镜像来源而定得出不同的结果,例如是纯粹报警的。如果容器实例例如识别出其执行环境并未如预期的那样被设立,即是不允许的,则该容器实例例如可以拒绝执行或者采取上述措施之一。
48.除了执行限制之外,运行时环境(例如现有的设备、硬件、主机、内核版本、安全关键的环境参数(例如sysctls等)的配置)也可以在形成或确定权利签名fp时被同时考虑。
49.此外,在设立执行环境和/或运行时环境的情况下的顺序可以被考虑。该顺序例如在确定运行散列值时得出。
50.可能的是,还在以后的时刻(周期性地,或在允许访问服务之前(远程地或在操作系统本身中=事件控制地))检查:容器实例是否以允许的方式被起动了。
51.对执行环境的以后的改变可以被用于即使在容器起动之后也继续指纹(因此可以利用该机制识别在以后的时刻的改变)。
52.指纹例如也可以被操作系统用于停止、或仅受限制地允许(例如没有网络访问)容器实例的执行。
53.尽管详细地通过优选的实施例进一步阐明和描述了本发明,但是本发明不受所公开的示例限制并且本领域技术人员可以从中导出其他变型方案,而不离开本发明的保护范围。
54.上文所描述的进程或方法流程的实施可以根据指令进行,所述指令存在于计算机可读存储介质上或在易失性计算机存储器中(在下文中概括地被称为计算机可读存储器)。计算机可读存储器例如是易失性存储器、如缓存、缓冲器或ram以及非易失性存储器、如可移动数据载体、硬盘等。
55.上文所描述的功能或步骤在此可以以至少一个指令集的形式存在于计算机可读存储器中/上。功能或步骤在此并不绑定到确定的指令集或确定形式的指令集或确定的存储介质或确定的处理器或确定的执行方案,并且可以通过软件、固件、微代码、硬件、处理器、集成电路等单独地或以任意组合执行。在此,可以使用各种各样的处理策略,例如通过
单个处理器的串行处理或多处理或多任务或并行处理等。
56.所述指令可以存放在本地存储器中,但是也可能的是,将指令存放在远程系统上并且经由网络访问所述指令。
57.传输装置可以具有一个或多个处理器。术语“处理器”、“中央信号处理装置”、“控制单元”或“数据评估装置”包括最广义的处理装置,即例如服务器、通用处理器、图形处理器、数字信号处理器、专用集成电路(asic)、可编程逻辑电路、如fpga、分立模拟或数字电路及其任意组合,包括本领域技术人员已知的或在未来开发的所有其他处理装置。处理器在此可以由一个或多个装置或设备或单元组成。如果处理器由多个装置组成,则这些装置可以被设计或配置为并行地或顺序地处理或执行指令。
技术特征:
1.一种用于在技术设施的一个或多个组件的一个或多个执行环境中安全地启动容器实例的方法,其中这种执行环境设立用于执行所述容器实例,其特征在于如下方法步骤:a)提供可配置的检查功能,在启动所述容器实例之前和/或期间执行所述检查功能,b)记录用于设立为了启动和/或为了执行所述容器实例所需的至少一个执行限制的每个步骤,c)借助在所述检查功能中所配置的至少一个允许性标准检验每个所记录的步骤,以及d)如果满足所述至少一个允许性标准,则完成所述容器实例的启动并且必要时完成所述容器实例的执行,或者e)如果不满足可能的允许性标准中的至少一个,则引入报警措施或抵抗所述启动的措施。2.根据上一权利要求所述的方法,其特征在于,在执行所述容器实例期间根据需要、以事件控制的方式和/或以时间控制的方式重复步骤c)至e)。3.根据上述权利要求中任一项所述的方法,其特征在于,针对每个执行限制分别确定和记录散列值。4.根据上一权利要求所述的方法,其特征在于,将所有所确定的散列值在每个这样的步骤中相互结合为总值,并且记录所述总值以及所述总值的随每个步骤产生的变化。5.根据上一权利要求所述的方法,其特征在于,所述总值能够通过指纹表示或所述总值通过指纹来表示。6.根据上述权利要求4或5中任一项所述的方法,其特征在于,将所述总值与相应的所配置的允许性标准进行比较。7.根据上述权利要求中任一项所述的方法,其特征在于,除了所述至少一个执行限制之外,此外记录并且在形成所述总值时同时考虑所述执行环境的一个或多个环境参数。8.一种用于在技术设施的一个或多个组件的一个或多个执行环境中安全地启动容器实例的装置,其中这种执行环境设立用于执行所述容器实例,其特征在于:a)具有可配置的检查功能的检查单元,所述检查单元设计用于在启动所述容器实例之前和/或期间执行所述检查功能,b)记录单元,所述记录单元设计用于记录用于设立为了启动和/或为了执行所述容器实例所需的至少一个执行限制的每个步骤,c)其中所述检查单元将每个所记录的步骤与在所述检查功能中所配置的允许性标准进行比较,以及d)启动单元,所述启动单元设计用于如果满足所述至少一个允许性标准,则完成所述容器实例的启动并且必要时完成所述容器实例的执行,或e)如果不满足可能的允许性标准中的至少一个,则引入报警措施和/或抵抗所述启动的措施。9.根据上一权利要求所述的装置,其特征在于至少一个在内部集成的或从外部连接的存储器,所述检查单元布置在所述存储器中。10.一种计算机程序产品,包括非易失性存储介质,在所述非易失性存储介质上存储有
可加载并且可执行的程序代码,所述计算机程序产品在根据上述装置权利要求中任一项所述的装置的处理器单元中执行根据上述方法权利要求中任一项所述的方法。
技术总结
本发明要求保护一种用于在技术设施的一个或多个组件的一个或多个执行环境中安全地启动容器实例(C)的方法,其中这种执行环境设立用于执行容器实例,其特征在于如下方法步骤:a)提供可配置的检查功能(PF),在启动容器实例之前和/或期间执行所述检查功能,b)记录用于设立为了启动和/或为了执行容器实例所需的至少一个执行限制的每个步骤,c)借助在检查功能中所配置的至少一个允许性标准检验每个所记录的步骤,以及d)如果满足所述至少一个允许性标准,则完成所述容器实例的启动并且必要时完成所述容器实例的执行,或者e)如果不满足可能的允许性标准中的至少一个,则引入报警措施或抵抗启动的措施。施或抵抗启动的措施。施或抵抗启动的措施。
技术研发人员:
C
受保护的技术使用者:
西门子股份公司
技术研发日:
2021.04.27
技术公布日:
2022/12/9