本文我们将了解容器安全挑战并了解关键的容器安全优秀实践,例如保护镜像、harbor等。
什么是容器?
- 容器是一种操作系统级虚拟化方法,用于在单个受控制的主机上运行多个隔离的 Linux 系统(容器),它允许多个隔离的用户空间实例和资源管理功能;
- 容器从底层操作系统中抽象出应用程序,以实现更快的开发和更轻松的部署。
有哪些不同类型的容器解决方案?
- LXC (Linux Containers)
- Docker
- Podman
- CoreOS AppC
- Solaris Zones
- FreeBSD Jails
- AIX Workload Partitions
- Kubernetes (从技术上讲是一个编排调度平台,这里只是一个参考)
容器存在多久了?
容器技术已经存在了 10 多年,最近由于云计算的普及而爆发。
虚拟机和容器有何不同?
虚拟机:
- 运行内核的单独副本
- 通过虚拟机仿真与主机通信
容器:
- 共享同一个内核
- 通过标准系统调用与主机通信
容器安全优势
容器有哪些安全优势?
(1) 应用程序隔离:
- 容器允许容器内的进程以非 root 用户身份运行,从而降低恶意代码或用户利用应用程序的风险;
- 容器作为独立的运行时环境运行,具有独立的文件系统和与其他容器和主机系统隔离的网络栈;
- 容器允许在同一主机上运行的应用程序相互隔离,并且只允许在容器之间交换预配置的端口和文件。
(2) 减少攻击面
- 正确配置的容器将仅包含运行应用程序所需的依赖项(库和附加软件),这可以减少漏洞攻击面;
- 容器与应用程序依赖项集成在一起,通过最大限度地减少验证程序和补丁之间的兼容性的工作,可以实现更好、更快的漏洞修补过程;
- 容器技术可以与底层主机加固工具相结合,增加深度防御。
容器安全风险
您应该注意哪些容器的安全风险?
(1) 增加了复杂性:
- 容器的复杂性和可扩展性可能导致容器暴露比预期更多的信息。
(2) 未彻底隔离
- 该技术还没有像虚拟机技术那样孤立,它与主机系统共享底层内核和操作系统。如果系统内核级别存在漏洞,它可以提供进入主机上运行的容器的途径;
- 容器中没有用户空间隔离,因此在容器中以 root 身份运行的进程也将在主机系统上以 root 身份运行;
- 额外的软件和库仍然可以添加到物理或虚拟机主机等容器中,这可能导致漏洞风险增加;
- 恶意代码可能会突破容器并影响主机系统。
容器安全纵深防御
您应该如何考虑将纵深防御实践应用于容器?
映射到 STRIDE 的容器威胁
如果您不熟悉威胁建模,最好将其描述为:
影响应用程序安全性的所有信息的结构化表示。本质上,它是从安全的角度看待应用程序及其环境的视图
STRIDE是一个流行的威胁建模框架,在这里我将分享映射到该框架的容器威胁的非详尽列表。
STRIDE 评估系统详细设计。它对就地系统进行建模,主要用于识别系统实体、事件和系统边界。
这里有一些例子:
总结
我希望你喜欢这种关于容器安全挑战的观点,并学到了一些新东西。这篇文章并非旨在详尽列出威胁和最佳实践,而是提供一般的观点和方向。