是的,集装箱很棒,但要注意安全风险

容器彻底改变了开发过程,成为DevOps计划的基石,但容器带来的复杂安全风险并不总是显而易见的。不减轻这些风险的组织容易受到攻击。
在本文中,我们概述了容器如何促进敏捷开发,容器带来了哪些独特的安全风险–;以及组织可以做些什么来保护集装箱化工作负载,超越DevOps来实现.
为什么集装箱流行得这么快?
容器在许多方面都是虚拟化的演进。目标是加快开发过程,创建一条从开发到测试和实施的更加灵活的路线–;无论如何,这是一种比使用成熟的虚拟机更轻量级的方法。
这个问题的核心是应用程序兼容性,因为应用程序需要特定版本的库–;这可能会与其他应用程序的要求发生冲突。容器解决了这个问题,并且碰巧与开发流程和驱动这些流程的管理基础架构连接良好。
容器通过将虚拟化提升到下一个级别来完成其工作。虚拟化抽象了硬件层,而容器抽象了操作系统层,本质上虚拟化了操作系统的角色。容器化的工作原理是将应用程序打包到“容器”中,其中包含使应用程序工作所需的所有库,同时使应用程序彼此不知道,因为每个应用程序都认为自己拥有操作系统。
从功能上讲,容器非常简单–;容器只是一个文本文件,其描述概述了实例中应包含哪些组件。容器的这种简单性和更轻量级的特性使得在整个开发生命周期中易于使用自动化(编排)工具进行部署。
DevOps for the win,但安全也很重要
容器有能力显著提高开发效率–;充当解锁DevOps的钥匙。这可能是容器如此流行的主要原因之一,Gartner估计,到2023年,70%的组织将运行容器化工作负载。
开发、测试和部署应用程序的过程过去充满了障碍,开发人员和负责基础设施的团队之间经常来回奔波。今天,由于有了容器,开发人员可以在一个正常工作的环境中进行构建和测试,只需将完成的代码与定义该环境的规范一起发布即可。
在操作方面,团队仅执行此规范来创建一个可供使用的匹配环境。是的,但它在我的机器上工作…从未帮助解决问题–;但今天,开发人员不再需要使用这个表达式,因为没有环境问题需要调试。
因此,是的,DevOps意味着快速发展。但缺少一个组成部分:安全。这就是为什么随着DevOps的发展,我们越来越多地听到DevSecOps,因为开发人员已经注意到,仅仅DevOps模型并不能充分解决安全问题。
容器会带来一些安全风险
容器简化了开发过程,但给安全性带来了复杂性。当您将整个操作环境紧密打包到一个容器中,只是为了将其广泛分布时,您也会增加攻击面,并为不同的攻击向量打开大门。任何与容器打包的易受攻击的库都会将这些漏洞传播到无数的工作负载中。
有几个风险。一种是“供应链攻击”,恶意行为者发动攻击的方式不是破坏应用程序,而是修改应用程序附带的某个包或组件。因此,负责开发工作的团队需要评估他们正在开发的应用程序,以及容器配置作为依赖项引入的每个库。
集装箱安全的风险还包括启用集装箱的工具–;从Dockers到编排工具,如Kubernetes,因为这些工具需要监控和保护。例如,您不应该允许系统管理员以root身份运行Docker容器。同样,您需要密切监视您的容器注册,以确保这些注册不会被泄露。
容器安全的核心是内核安全
一些与集装箱相关的安全风险比其他风险更不明显。每个容器都需要访问内核–;毕竟,容器只是一种高级流程隔离。但很容易忽略一个事实,即所有容器都依赖于相同的内核–;容器内的应用程序相互隔离并不重要。
容器中的应用程序看到的内核与主机运行所依赖的内核相同。这带来了几个问题。如果主机上支持容器的内核易受攻击,则可通过从容器内的应用程序发起攻击来利用此漏洞。
因此,内核由主机上的所有容器共享这一事实意味着必须快速修补有缺陷的内核,否则所有容器都会很快受到漏洞的影响。
再一次,归根结底是修补
因此,保持主机内核的最新状态是确保容器操作安全的重要步骤。不仅内核需要修补,修补程序还必须应用到容器拉入的库中。但是,正如我们所知,持续修补说起来容易做起来难。这可能就是为什么一项研究发现,所分析的75%的容器中都包含被归类为严重或高风险的漏洞。
例如,这些漏洞可能导致突围攻击,攻击者依靠容器内有缺陷的库在容器外执行代码。通过破坏一个容器,攻击者最终可以到达其预期目标,无论是主机系统还是另一个容器中的应用程序。
在容器环境中,维护安全的库可能是一个真正令人头痛的问题–;需要有人跟踪新的漏洞,以及哪些漏洞已修补,哪些漏洞尚未修补。这一过程很费劲,但也需要专业技能,如果您的组织还没有这些技能,则需要掌握这些技能。
考虑到常规、一致的修补程序的价值,这些原因不足以导致我们看到的那种命中和未命中修补程序,但是–;尤其是在考虑操作系统内核时–;所需重新启动的中断以及维护停机窗口的相关需求可能会显著延迟修补。实时内核补丁有助于缓解此问题,但尚未被所有组织部署。
始终在容器操作中包括安全目标
当涉及到信息安全时,尖端技术通常会带来新的复杂性。新工具通常会带来新的和新颖的漏洞利用。对于容器也是如此,虽然这不会损害在您的工作负载中使用容器的整体价值,但这确实意味着您需要关注容器带来的风险。
首先,向您的开发人员和系统管理员介绍容器安全性中的常见缺陷以及缓解这些缺陷的最佳实践。修补是另一个重要方面。一如既往,采取正确的措施缓解网络安全漏洞将有助于保护您的组织–;并让您的团队受益于这项尖端技术,而不会夜不能寐。