操作系统(OS)虚拟化为每个应用程序提供了一个单独的操作系统虚拟化空间,从而使每个应用程序与服务器上的所有其它应用程序隔离开来。每个应用程序只能看到和影响自己。最近,因其易用性的进步,以及为开发人员提供灵活性这一重要优势,操作系统虚拟化变得越来越普及。今天的操作系统虚拟化技术主要集中在提供一种便携、可重用和自动化的方式来打包和运行应用程序(apps)。术语应用程序容器 ,或者只是容器常用来指这些技术。本文的目的是解释与容器技术有关的安全问题,并为规划、实施和维护容器时解决这些问题提出切实可行的建议。
1 引言…………………………………………………………………………………………………………………… 1
1.1 目的和范围 ………………………………………………………………………………………………….1
1.2 文档结构……………………………………………………………………………………………………..1
2 应用容器简介………………………………………………………………………………………………………. 3
2.1 应用程序虚拟化和容器的基本概念…………………………………………………………………..3
2.2 容器和主操作系统…………………………………………………………………………………………5
2.3 容器技术架构……………………………………………………………………………………………….7
2.3.1 映像的创建、测试和认可……………………………………………………………………. 9
2.3.2 映像的存储和取回 …………………………………………………………………………….. 9
2.3.3 容器的部署和管理 …………………………………………………………………………….10
2.4 容器的使用 ………………………………………………………………………………………………..11
3 容器技术核心部件的主要风险………………………………………………………………………………..13
3.1 映像的风险 ………………………………………………………………………………………………..13
3.1.1 映像的脆弱性 …………………………………………………………………………………..13
3.1.2 映像的配置缺陷………………………………………………………………………………..13
3.1.3 嵌入的恶意软件………………………………………………………………………………..14
3.1.4 嵌入的明文机密………………………………………………………………………………..14
3.1.5 不可信映像的使用 …………………………………………………………………………….14
3.2 注册的风险 ………………………………………………………………………………………………..14
3.2.1 注册的连接不安全 …………………………………………………………………………….14
3.2.2 注册中陈旧的映像 …………………………………………………………………………….14
3.2.3 身份验证和授权限制不足……………………………………………………………………14
3.3 编排器的风险……………………………………………………………………………………………..15
3.3.1 无限制的管理访问 …………………………………………………………………………….15
3.3.2 未经授权的访问………………………………………………………………………………..15
3.3.3 容器间网络数据流缺乏隔离 ………………………………………………………………..15
3.3.4 不同敏感级别的工作混合处理……………………………………………………………..16
3.3.5 编排器节点的信任 …………………………………………………………………………….16
3.4 容器的风险 ………………………………………………………………………………………………..16
3.4.1 运行时软件中的脆弱性 ………………………………………………………………………16
这份出版物可通过以下地址免费获得: https://doi.org/10.6028/NIST.SP.800-190
NIST SP 800-190 应用容器安全指南
viii
3.4.2 来自容器的无限制网络访问 ………………………………………………………………..16
3.4.3 不安全的容器运行时配置……………………………………………………………………17
3.4.4 应用程序的脆弱性 …………………………………………………………………………….17
3.4.5 流氓容器 …………………………………………………………………………………………17
3.5 主操作系统的风险……………………………………………………………………………………….17
3.5.1 巨大的攻击面 …………………………………………………………………………………..17
3.5.2 共享内核 …………………………………………………………………………………………18
3.5.3 主操作系统组件的脆弱性……………………………………………………………………18
3.5.4 不适当的用户访问权限 ………………………………………………………………………18
3.5.5 主操作系统文件系统篡改……………………………………………………………………18
4 主要风险的防范措施…………………………………………………………………………………………….19
4.1 映像的防范措施………………………………………………………………………………………….19
4.1.1 映像的脆弱性 …………………………………………………………………………………..19
4.1.2 映像的配置缺陷………………………………………………………………………………..19
4.1.3 嵌入的恶意软件………………………………………………………………………………..20
4.1.4 嵌入的明文机密………………………………………………………………………………..20
4.1.5 不可信映像的使用 …………………………………………………………………………….20
4.2 注册的防范措施………………………………………………………………………………………….21
4.2.1 注册的连接不安全 …………………………………………………………………………….21
4.2.2 注册中陈旧的映像 …………………………………………………………………………….21
4.2.3 身份验证和授权限制不足……………………………………………………………………21
4.3 编排器的防范措施……………………………………………………………………………………….22
4.3.1 无限制的管理访问 …………………………………………………………………………….22
4.3.2 未经授权的访问………………………………………………………………………………..22
4.3.3 容器间网络数据流缺乏隔离 ………………………………………………………………..22
4.3.4 不同敏感级别的工作混合处理……………………………………………………………..23
4.3.5 编排器节点的信任 …………………………………………………………………………….24
4.4 容器的防范措施………………………………………………………………………………………….24
4.4.1 运行时软件中的脆弱性 ………………………………………………………………………24
4.4.2 来自容器的无限制网络访问 ………………………………………………………………..24
4.4.3 不安全的容器运行时配置……………………………………………………………………25
4.4.4 应用程序的脆弱性 …………………………………………………………………………….25
这份出版物可通过以下地址免费获得: https://doi.org/10.6028/NIST.SP.800-190
NIST SP 800-190 应用容器安全指南
ix
4.4.5 流氓容器 ……………………………………………………………………………………….. 26
4.5 主操作系统的防范措施……………………………………………………………………………….. 26
4.5.1 巨大的攻击面 …………………………………………………………………………………. 26
4.5.2 共享内核 ……………………………………………………………………………………….. 27
4.5.3 主操作系统组件的脆弱性………………………………………………………………….. 27
4.5.4 不适当的用户访问权限 …………………………………………………………………….. 27
4.5.5 主文件系统篡改………………………………………………………………………………. 27
4.6 硬件的防范措施………………………………………………………………………………………… 28
5 容器威胁场景举例 ……………………………………………………………………………………………… 30
5.1 利用映像中的脆弱性………………………………………………………………………………….. 30
5.2 利用容器运行时………………………………………………………………………………………… 30
5.3 运行中毒的映像………………………………………………………………………………………… 30
6 容器技术生命周期的安全考虑………………………………………………………………………………. 32
6.1 启动阶段………………………………………………………………………………………………….. 32
6.2 规划和设计阶段………………………………………………………………………………………… 32
6.3 实施阶段………………………………………………………………………………………………….. 33
6.4 运行和维护阶段………………………………………………………………………………………… 34
6.5 处置阶段………………………………………………………………………………………………….. 35
7 结论…………………………………………………………………………………………………………………. 36