本文我们将了解容器安全挑战并了解关键的容器安全优秀实践,例如保护镜像、harbor等。

什么是容器?容器是一种操作系统级虚拟化方法,用于在单个受控制的主机上运行多个隔离的 Linux 系统(容器),它允许多个隔离的用户空间实例和资源管理功能;容器从底层操作系统中抽象出应用程序,以实现更快的开发和更轻松的部署。有哪些不同类型的容器解决方案?LXC (Linux Containers)DockerPodmanCoreOS AppCSolaris ZonesFreeBSD JailsAIX Workload PartitionsKubernetes (从技术上讲是一个编排调度平台,这里只是一个参考)容器存在多久了?

容器技术已经存在了 10 多年,最近由于云计算的普及而爆发。


【资料图】

虚拟机和容器有何不同?

虚拟机:

运行内核的单独副本通过虚拟机仿真与主机通信

容器:

共享同一个内核通过标准系统调用与主机通信容器安全优势

容器有哪些安全优势?

(1) 应用程序隔离:

容器允许容器内的进程以非 root 用户身份运行,从而降低恶意代码或用户利用应用程序的风险;容器作为独立的运行时环境运行,具有独立的文件系统和与其他容器和主机系统隔离的网络栈;容器允许在同一主机上运行的应用程序相互隔离,并且只允许在容器之间交换预配置的端口和文件。

(2) 减少攻击面

正确配置的容器将仅包含运行应用程序所需的依赖项(库和附加软件),这可以减少漏洞攻击面;容器与应用程序依赖项集成在一起,通过最大限度地减少验证程序和补丁之间的兼容性的工作,可以实现更好、更快的漏洞修补过程;容器技术可以与底层主机加固工具相结合,增加深度防御。容器安全风险

您应该注意哪些容器的安全风险?

(1) 增加了复杂性:

容器的复杂性和可扩展性可能导致容器暴露比预期更多的信息。

(2) 未彻底隔离

该技术还没有像虚拟机技术那样孤立,它与主机系统共享底层内核和操作系统。如果系统内核级别存在漏洞,它可以提供进入主机上运行的容器的途径;容器中没有用户空间隔离,因此在容器中以 root 身份运行的进程也将在主机系统上以 root 身份运行;额外的软件和库仍然可以添加到物理或虚拟机主机等容器中,这可能导致漏洞风险增加;恶意代码可能会突破容器并影响主机系统。容器安全纵深防御

您应该如何考虑将纵深防御实践应用于容器?

映射到 STRIDE 的容器威胁

如果您不熟悉威胁建模,最好将其描述为:

影响应用程序安全性的所有信息的结构化表示。本质上,它是从安全的角度看待应用程序及其环境的视图

STRIDE是一个流行的威胁建模框架,在这里我将分享映射到该框架的容器威胁的非详尽列表。

STRIDE 评估系统详细设计。它对就地系统进行建模,主要用于识别系统实体、事件和系统边界。

这里有一些例子:

总结

我希望你喜欢这种关于容器安全挑战的观点,并学到了一些新东西。这篇文章并非旨在详尽列出威胁和最佳实践,而是提供一般的观点和方向。

推荐内容