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