文章目录
paper: Container Security: Issues, Challenges, and the Road Ahead
容器相比虚拟机有许多优势,容器可以50毫秒启动,虚拟机则需要几十秒,而且在容器在资源占用方面也比虚拟机小很多。现在流行的微服务架构与容器技术完美的结合。
不过市场调查显示对其安全性的担忧是一些公司没有采用容器的主要原因。容器安全可以分为四个大类:
- 保护容器免受其内部运行的程序的攻击
- 容器间的保护
- 保护主机免受恶意容器的攻击
- 保护容器免受恶意主机的攻击
前三点的解决方案主要基于Linux内核的特性(如namespaces
, CGroups
, capabilities
, and seccomp
(secure computation mode))和Linux安全模块。第四点主要基于可信平台,如TPMs和Intel SGX。
背景
容器与虚拟机的两点主要区别:
- 容器共享主机的操作系统内核,而虚拟机拥有自己的操作系统内核
- 容器启动迅速,而虚拟机启动缓慢
然而,在计算机的世界中,共享就意味着存在被攻击的危险。
基于软件的保护机制
Linux内核特性
namaspace
命名空间为进程提供系统资源的隔离和虚拟化。
资源隔离:限制容器可以看到的东西。
Control Groups
资源限制:控制容器可以使用多少资源。
Capability
将用户权限细分,给进程刚好够用的权限而不是root权限。
Secure Computation Mode(SECCOMP)
过滤系统调用的机制。
Linux 安全模块
基于硬件的保护机制
vTPM
The ten-page introduction to trusted computing 提供了关于可信计算和TPM的细节。
一般认为,使用可信组件构建安全系统。
SGX
其它
[115] 指出unikernels和虚拟机比容器提供了更好的隔离,但是unikernels缺少特权,虚拟机效率低。
[28] 提出容器与虚拟机安全级别相当。
[116] 分析了容器与unikernels在扩展性、隐私、安全性、性能方面的比较。
[104] 提出使用区块链技术验证容器的镜像(容器的很多问题来自于镜像未被验证)。