0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何保证它们容器运行时的安全?

无线深海 来源:无线深海 2023-11-03 15:24 次阅读

容器彻底改变了我们开发和部署应用程序的方式,提供了封装应用程序及其依赖项的轻量级和可移植环境。但我们如何保证它们的安全呢?

需要解决的关键之一是容器运行时 - 负责启动和管理容器的软件。

虽然Docker和Containerd等容器运行时被广泛使用,但它们与主机操作系统的紧密耦合可能会带来风险。

在本文中,我们将深入探讨容器运行时的工作原理、为什么紧密耦合的运行时会在攻击者逃离容器时导致主机接管,以及使用gVisor和Kata Containers等安全容器运行时的重要性。

了解容器运行时

容器运行时编排容器、管理其生命周期并将其与主机和其他容器隔离。通过利用命名空间和cgroup等Linux内核功能,运行时围绕容器创建安全边界。

然而,传统的运行时与主机的内核紧密相关,这存在潜在的安全漏洞。如果攻击者设法逃离容器,该攻击者就可获取对底层主机操作系统的未经授权的访问,从而危及整个系统的安全。

紧密耦合的容器运行时继承了主机操作系统的安全态势和攻击面。运行时或主机内核中的任何漏洞及其利用都会成为攻击者的潜在切入点。

在多租户环境或运行不受信任的工作负载时,这种风险尤其严重。为了减轻这种威胁,使用安全的容器运行时(例如gVisor和Kata Containers)至关重要。

这类安全容器运行时提供了额外的隔离和安全层,采用创新技术来增强容器化工作负载的安全性。例如,gVisor使用用户空间内核实现,而Kata Containers则通过轻量级虚拟机实现。这些安全运行时将容器与主机操作系统隔离,防止攻击者未经授权访问底层基础设施,并降低主机接管的风险。

当下主流的一些容器运行时介绍

容器运行时提供了创建、部署和执行容器运行所需的工具和库。这些容器运行时处理诸如创建和管理容器映像、容器的启动和停止、资源隔离、网络和安全性等任务。它们构成了容器化技术的基础,对于跨不同计算环境一致运行应用程序至关重要。以下是一些最流行的容器运行时。

Docker

Docker是一种广泛使用的容器运行时,可为构建、打包和运行容器提供完整的生态系统。它包括管理容器生命周期的Docker引擎和提供与容器交互的命令行界面的Docker CLI。

在底层,Docker使用runC作为默认的底层容器运行时。runC基于开放容器计划(OCI)运行时规范生成和管理容器。

Containerd

Containerd是由Docker开发的开源容器运行时,侧重于提供稳定、高性能和可移植的强大运行时。Ccontainerd旨在作为容器编排系统的核心组件,可以与Kubernetes等更上层的编排平台集成。

与Docker类似,Containerd使用runC作为默认的底层容器运行时来创建和管理容器。

runC

runC由OCI开发,是一个符合OCI运行时规范的轻量级底层运行时,通过在隔离的沙箱中启动容器来提供基本的容器执行环境。Docker和Containerd都利用runC的功能来处理容器生命周期管理、进程隔离、文件系统挂载和其他底层容器操作。

CRI-O

CRI-O是专为Kubernetes设计的轻量级容器运行时。它实现了Kubernetes容器运行时接口(CRI),并为Kubernetes与容器交互提供了接口。CRI-O在底层使用runc和Containerd等技术。

安全容器运行时:gVisorKata Containers

gVisor是Google开发的开源容器运行时,使用轻量级用户空间内核“Sandbox”为容器提供安全的执行环境。

gVisor不是直接在主机内核上运行容器,而是在隔离的沙箱中运行容器,增加了额外的安全和隔离层。沙箱拦截来自容器的系统调用,并应用自身的类内核实现,提供针对内核级漏洞的防御机制。

Kata Containers开源项目将轻量级虚拟机(VM)与容器运行时相结合,采用硬件虚拟化技术为每个容器进程启动单独的VM,提供容器之间的强隔离。

每个虚拟机都运行一个极简的轻量级客户操作系统,例如精简版Linux内核。Kata Containers旨在保证容器的性能优势,同时提升虚拟机的安全性和工作负载隔离。

gVisor和Kata Containers都解决了与传统容器运行时相关的某些安全问题,有助于降低容器逃逸攻击的风险,在某些情形下,攻击者可利用容器运行时或内核中的漏洞获得对主机系统的未经授权的访问。通过添加额外的隔离和安全控制层,这些运行时强化了对容器化工作负载提供的保护。

gVisor和Kata Containers并不相互排斥;事实上,它们可以一起使用,Kata Containers可使用gVisor作为其运行时,这种组合通过将虚拟机层面的隔离优势与gVisor所提供的额外安全措施相结合,进一步增强了安全性和隔离性。

这些安全容器运行时在运行不受信任或潜在易受攻击的工作负载的情况下特别有用,例如在多租户环境中或处理不受信任的第三方代码时。

在安全运行时中运行容器

使用gVisor和Kata Containers等安全运行时可以显著增强对主机系统的保护。主要安全优势如下:

增强隔离:gVisor和Kata Containers在容器和主机系统之间提供了额外的隔离层。这种隔离有助于防止容器逃逸攻击并限制容器内安全漏洞的影响。

内核级保护:gVisor和Kata Containers都可以防御内核级漏洞。gVisor自身已实现类内核接口,可拦截来自容器的系统调用并执行安全策略。Kata Containers采用硬件虚拟化技术可在具有内核实例的独立虚拟机中运行容器,将这些独立虚拟机与主机内核隔离。

纵深防御:通过将这些运行时的安全机制与其他最佳安全实践(例如强大的访问控制、网络分段和图像扫描等)相结合,可提升容器部署的安全性。

兼容性和互操作性:gVisor和Kata Containers都可与Kubernetes等容器编排平台配合使用,用户借助这些技术的安全优势,无需对现有容器化应用程序或部署流程进行重大更改。

请注意,虽然gVisor和Kata Constianers提升了安全性,但由于额外的隔离层,它们可能会带来一些性能开销。因此,实际部署时仍需要对特定用例和性能要求进行评估,以确定所提供的安全优势是否超过任何潜在的性能影响。

在安全容器运行时中运行微服务

微服务架构通常涉及在同一基础设施上运行的多个独立服务。通过在安全容器运行时中运行每个微服务,可以确保它们彼此隔离。

这有助于防止容器逃逸、权限升级和内核级漏洞。一旦发生安全漏洞或故障,安全容器运行时还可帮助限制安全危机的扩散,防止事态进一步升级。

用户还可通过容器运行时为每个微服务分配特定的资源(例如CPU、内存和存储),确保资源的公平分配。这可以防止资源争用问题,否则恶意行为者可能会利用资源争用问题来降低其他微服务的性能或稳定性。

要在安全容器运行时中运行微服务,需要执行以下步骤:

择安全容器运行时 评估不同的安全容器运行时(例如gVisor和Kata Containers),并选择最能满足需求的一种。考虑安全功能、性能影响、与现有基础设施的兼容性以及社区支持等因素。

安全构建容器镜像 使用受信任的基础镜像,定期更新依赖项并扫描镜像是否存在漏洞。实施安全的镜像注册并强制执行镜像签名以验证镜像的真实性。

安全配置 以适当的安全设置配置容器运行时,可能包括启用隔离功能、应用资源限制、设置容器网络策略和控制对主机系统资源的访问等。遵循容器运行时文档提供的安全准则。

实施严格的访问控制 为容器化微服务实施强大的访问控制。这包括限制容器权限、对容器编排平台采用基于角色的访问控制(RBAC)以及保护容器运行时API

持续监控和记录 实施监控和日志记录解决方案来跟踪容器化微服务的行为。监控可疑活动、异常行为和潜在的安全事件。集中式日志记录和分析有助于高效地检测和响应安全事件。

定期更新和打补丁 通过应用安全补丁和更新来使容器运行时保持最新,确保拥有最新的安全改进和错误修复。

运行安全测试 对容器化微服务定期进行安全评估和渗透测试,这有助于识别容器运行时配置和应用程序代码中的漏洞和潜在弱点。

编辑:黄飞

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 操作系统
    +关注

    关注

    37

    文章

    6284

    浏览量

    121876
  • 容器
    +关注

    关注

    0

    文章

    481

    浏览量

    21876
  • 虚拟机
    +关注

    关注

    1

    文章

    855

    浏览量

    27375
  • 主机系统
    +关注

    关注

    0

    文章

    9

    浏览量

    6843

原文标题:容器安全和安全运行时的重要性(一)

文章出处:【微信号:wuxian_shenhai,微信公众号:无线深海】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    如何缩短Vivado的运行时

    在Vivado Implementation阶段,有时是有必要分析一下什么原因导致运行时间(runtime)过长,从而找到一些方法来缩短运行时间。
    的头像 发表于 05-29 14:37 1.4w次阅读
    如何缩短Vivado的<b class='flag-5'>运行时</b>间

    各种容器运行的作用是什么

    容器技术中,容器运行时可以分为三种类型:低级运行时、高级运行时以及沙盒或虚拟化运行时
    发表于 09-20 11:42 379次阅读
    各种<b class='flag-5'>容器</b><b class='flag-5'>运行</b>的作用是什么

    ATC'22顶会论文RunD:高密高并发的轻量级 Serverless 安全容器运行时 | 龙蜥技术

    轻量级安全容器运行时,提出了 host-to-guest 的全栈优化方案来解决上述问题。本文整理自[龙蜥大讲堂第 38 期],精彩分享视频回放已上传至龙蜥官网(首页-动态-视频),欢迎查看!摘要
    发表于 09-05 15:18

    锅炉低负荷运行时注意事项

    锅炉低负荷运行时注意事项 为了满足机组调峰,运行工况变动的需要,保证锅炉安全、经济运行,特制订本措施。1、当锅炉在低负
    发表于 11-13 18:22 2402次阅读

    紫金桥组态软件新的功能_运行时组态

    运行时组态是组态软件新近提出的新的概念。运行时组态是在运行环境下对已有工程进行修改,添加新的功能。它不同于在线组态,在线组态是在工程运行的同时,进入组态环境,在组态环境中对工程进行修改
    发表于 10-13 16:17 2次下载
    紫金桥组态软件新的功能_<b class='flag-5'>运行时</b>组态

    k8s容器运行时演进历史

    运行时接口(Container Runtime Interface),这一步中,Kubelet 可以视作一个简单的 CRI Client,而 dockershim 就是接收请求的 Server。目前 dockershim 的代码其实是内嵌在 Kubele
    的头像 发表于 02-02 13:50 1712次阅读
    k8s<b class='flag-5'>容器</b><b class='flag-5'>运行时</b>演进历史

    Go运行时:4年之后

    自 2018 年以来,Go GC,以及更广泛的 Go 运行时,一直在稳步改进。近日,Go 社区总结了 4 年来 Go 运行时的一些重要变化。
    的头像 发表于 11-30 16:21 530次阅读

    什么是Kubernetes容器运行时CRI

    起初,Docker是事实上的容器技术标准,Kubernetes v1.5之前的代码中直接调用Docker API,实现容器运行时的相关操作。
    的头像 发表于 02-20 16:22 1040次阅读
    什么是Kubernetes<b class='flag-5'>容器</b><b class='flag-5'>运行时</b>CRI

    正常运行时间保护底线

    本教程探讨了增加正常运行时间的各种注意事项以及它们如何影响底线。这些包括工业设施的维护方法,例如工厂、商业设施、发电厂或其他安装,在这些设施中,适当的维护方法可以防止灾难性故障。但是,保持底线需要更多。还必须考虑可靠性、安全性、
    的头像 发表于 04-06 11:10 718次阅读
    正常<b class='flag-5'>运行时</b>间保护底线

    怎样避免电力电容器运行时漏油

    电力电容器运行中,会因为各种因素出现故障。在电力电容器运行时遇到的故障中,出现渗油和漏油的概率非常大。那么如何避免电力电容器
    的头像 发表于 04-07 16:01 557次阅读

    iSulad+Kuasar:管理面资源消耗锐减99%的新一代统一容器运行时解决方案

    容器引擎(Container Engine)主要负责容器运行环境的创建、容器资源的配置和容器生命周期的管理,北向接收来自于 Kubernet
    的头像 发表于 04-27 15:00 710次阅读
    iSulad+Kuasar:管理面资源消耗锐减99%的新一代统一<b class='flag-5'>容器</b><b class='flag-5'>运行时</b>解决方案

    如何在AUTOSAR OS系统运行时使用事件Event呢?

    在AUTOSAR OS系统中,事件用于向任务发送信号信息。本节解释事件是什么,如何配置它们以及如何在运行时使用它们
    发表于 05-22 10:04 1446次阅读
    如何在AUTOSAR OS系统<b class='flag-5'>运行时</b>使用事件Event呢?

    JVM运行时数据区之堆内存

    说一下 JVM 运行时数据区吧,都有哪些区?分别是干什么的?
    的头像 发表于 08-19 14:35 426次阅读
    JVM<b class='flag-5'>运行时</b>数据区之堆内存

    ch32v307记录程序运行时

    ch32v307记录程序运行时间 在程序开发中,很重要的一项任务就是对程序的运行时间进行评估。对于大型的程序系统来说,它们通常需要处理大量的数据或进行复杂的计算操作。因此,如果程序的运行时
    的头像 发表于 08-22 15:53 469次阅读

    Xilinx运行时(XRT)发行说明

    电子发烧友网站提供《Xilinx运行时(XRT)发行说明.pdf》资料免费下载
    发表于 09-14 10:01 0次下载
    Xilinx<b class='flag-5'>运行时</b>(XRT)发行说明