前言

容器技术通过共享主机操作系统内核,实现轻量的资源虚拟化
和隔离,近年 来在DevOps、微服务等领域有着广泛的应用。然而在容器技术被广泛接受和使用的同时,容器以及容器运行环境的安全成 为了亟待研究和解决的问题。为了进一步
了解容器以及容器环境的安全威胁,为 使用容器的用户提供安全防护建议。北京神州绿盟信息安全科技股份有限公司(以 下简称“绿盟科技”)携手硅谷知名容器安全公司 NeuVector,联合发布《2018 绿盟科技容器安全技术报告》。本报告主要包括五个章节。
第一章,分别从容器和虚拟化技术的对比、容器技术的发展历史、容器安全 问题等几个方面,对全文进行简要概述。
第二章,主要介绍了容器的基本技术原理。包括容器镜像、容器的存储、容 器以及容器集群的网络、容器的管理编排平台、容器的应用等几个方面。
第三章,分别从容器的软件实现、API设计、容器镜像、容器应用等几个方面, 具体阐述了容器以及容器运行环境存在的安全威胁。
第四章,针对前述的安全威胁,本章从 Linux内核安全机制、容器主机安全、 容器镜像安全、容器网络安全
以及容器运行时安全等几个方面,详细分析介绍了 相应的威胁检测以及安全防护方法。第五章,主要介绍了一些容器安全的工具和产品,包括 Clair、Grafeas 等开 源插件工具,以及 NeuVector 和 StackRox 等商业公司标准产品。
本报告在编写过程中参考了大量资料,吸取了多方的宝贵意见和建议,在此 深表感谢。报告的编写和发布得到了相关单位的大力支持,我们在此表示衷心的 感谢!欢迎广大读者批评、指正。

近年来,云计算的模式逐渐被业界认可和接受。在国内,包括政府、金融、运营商、能源等众多行业,以及 中小企业
,均将其业务进行不同程度的云化。但简单地将主机、平台或应用转为虚拟化形态,并不能解决传统应 用的升级缓慢、架构臃肿、无法快速迭代等问题,于是云原生(Cloud Native)的概念应运而生。云原生提倡应用的敏捷、可靠、高弹性、易扩展以及持续的更新。在云原生应用和服务平台
构建过程中,近 年兴起的容器技术凭借其弹性敏捷的特性和活跃强大的社区支持,成为了云原生等应用场景下的重要支撑技术。 本章主要介绍容器技术和容器安全的基础概念。### 容器与虚拟化
虚拟化(Virtualization)和容器(Container)都是系统虚拟化的实现技术,可实现系统资源的“一虚多”共享。 容器技术是一种“轻量”的虚拟化方式,此处的“轻量”主要是相比于虚拟化技术而言的。例如,虚拟化通常在 Hypervisor 层实现对硬件资源的虚拟化,Hypervisor 为虚拟机提供了虚拟的运行平台,管理虚拟机的操作系统运行, 每个虚拟机都有自己的操作系统、系统库以及应用。而容器并没有 Hypervisor 层,每个容器是和主机 共享硬件 资源及操作系统 [^1]。
容器技术在操作系统层面实现了对计算机系统资源的虚拟化,在操作系统中,通过对 CPU、内存和文件系统 等资源的隔离、划分和控制,实现进程之间透明的资源使用。图 1.1 展示了虚拟机和容器在实现架构上的区别。

容器发展历程

容器的概念最早可以追溯到 1979 年的 Unix工具 Chroot,2000 年左右,FreeBSD 引入的 Jails 算是早期的 容器技术之一,2004 年 Solaris 提出 Container,引入了容器资源管理的概念。
2008 年出现的 LXC(Linux Containers)可以说是第一个完整的 Linux 容器管理实现方案,它通过 Linux CGroups(Control Groups)以及 Linux Namespace 技术实现,LXC存在于 liblxc库中,提供各种编程语言的 API实现, 无需任何额外的补丁就能够运行在原版 Linux内核上。
2013 年,DotCloud 开源了其内部的容器项目 Docker[2]。Docker 在开始阶段是基于 LXC技术,之后则采用 自己开发的 libcontainer 进行了替换。Docker 除了基础的容器服务之外,还引入了一整套管理容器的生态系统, 包括容器镜像模型、镜像仓库、REST API、命令行等。
2014 年,CoreOS 发布了容器引擎 Rocket[3](简称 rkt),它是在一个更加开放的标准 App Container 上实现的。 除 Rocket 之外,CoreOS 也开发了其它几个容器相关的产品,如 CoreOS 操作系统、分布式键值存储组件 Etcd 和网络组件 Flannel。
2015 年,微软也在其 Windows Server 上为基于 Windows 的应用添加了容器支持,称之为 Windows Containers[4]。该实现可以在 Windows 上原生地运行 Docker 容器。

2017 年 11 月,阿里巴巴开源了其基于 Apache 2.0 许可协议的轻量级容器技术 Pouch[5],Pouch 在其容器技 术 t4 的基础上,逐渐吸收了社区中的 Docker 镜像技术,具有快速高效、可移植性高、资源占用少等特性,目前 在阿里的使用场景中已经扮演了重要角色。


1979 2004 2008 2013 2014 2015 2017 Solaris Windows
chroot LXC Docker Rocket Pouch Container Container
UNIX操作系统上 第 一 个 完 整 的 Docker 除了基础 App Container 阿里巴巴在其 容 的系统调用, 将 真 正 的 引 入 了 容 Linux容器管理实 的 容器服务之外 , 规范上实 现 , 提 基 于 Windows 的 器技术t4的 基 础 一个进程及其 子 器 资 源管理的 概 现 方 案 , 通 过 还引入了 一 整 套 供 一个比Docker 应用添加了容 器 上 , 吸收社区 中 进程的根目录 改 念 , 在 运 行 中 可 CGroups 以 及 管理容器 的 生 态 具有更严格的 安 支 持 。 可 以 原 生 的 Docker 镜 像 技 变到文件系统 中 以根据Zone 的负 Namespace 技 术 系 统 , 包 括 容 器 全性和产品需 求 地 在 Windows 上 术 , 自研的一 款 一个新的路径 位 载 动 态修改其 资 实 现 , 提 供 了 各 镜像模型、 全 局 的容器产 品 。 同 运行Docker容器。 轻量级的容器 实 置 , 这 样 该 进 程 源限制, 尽 可 能 种编程语言的API 和本地的 容 器 注 时包括CoreOS、 现方式。 就认为这个新 的 最 大 化资源的 利 实现。 册 库 、 清 晰 的 Etcd 和 Flannel等
路径就是系统 的 用率。 REST API、命令 容器相关产品。
根目录。 行等。

容器安全

虽然容器技术备受追捧,在多个领域得到广泛使用,但其背后的安全问题不容忽视。
2018 年 6 月 14 日,某安全厂商发现 17 个受到感染的 Docker 容器镜像,镜像中包含了可用于挖掘加密货币的程序,更危险的是,这些镜像的下载次数已经高达 500 万次 [6]。
云安全厂商 Lacework 在 6 月 18 日发布的一份研究报告 [7]中指出,超过 21,000 个容器编排平台目前暴露 在互联网上,其中包括 Kubernetes、Docker Swarm、Mesos Marathon、Redhat OpenShift 等被广泛使用的容 器编排平台,有将近 3/4 的暴露平台为 Kubernetes(详见 3.1.2 节绿盟威胁情报中心数据)。其中的 305 个甚 至都没有设置登录密码,一旦被恶意操作,后果将不堪设想。
首先,从对业界最流行的容器实现技术 Docker 分析来看,Docker 自 2014 年正式发布以来,截止到 2018 年 7 月 31 日,累计共发现 38 个相关漏洞 [8],其中 2018 年 8 个,2017 年 5 个,2016 年 11 个。所有 38 个漏洞
中,标记危害等级的漏洞有 33 个,其中超危漏洞 4 个,高危漏洞 8 个,仅有 3 个为低危漏洞。
例如 2014 年年底发现的漏洞编号为 CVE-2014-9357 的漏洞,被 CVSS V2认定为综合评分 10 分的超危漏洞。 漏洞造成的风险主要包括被拒绝服务、访问控制权限的绕过、执行任意代码等。
Docker 公司在 2017 年 3月份宣布正式发布企业版 Docker EE(Docker Enterprise Edition),版本编号也从 1.13. X跳跃到了 17.X(17.03.0-ee-1/17.03.1-ee-2、17.03.0-ce/17.03.1-ce)。无论是社区版还是企业版,Docker 在最 近的几次版本更新中,均在很大程度上增加了安全性考虑。
例如在 2017 年 11 月 27 日发布的 Docker EE 17.06.2-ee-6[9]版本,修复了漏洞容器的执行状态,同时增加了对健康状态监测通道进行保护,修复了异常镜像可能 导致守护进程崩溃,造成内存耗尽的问题。

此外,我们通过在 Google Trends[^1] 中,比较“docker security”、“container security”和“kubernetes security”这三个关键词近 5 年时间内,在 Google 的网页搜索热度。从图 1.4 可以看出 [^2],三个关键词的搜索热度 均不同程度地呈现出上升趋势,尤其是“docker security”在近一两年的热度评分均在 50 分以上,在 2018 年 2月 4 日—10 日期间达到了 100 分。

Gartner 在 2017 年 6 月发布了《2017 年度最新最酷的信息安全技术》[13],其中就包括容器安全(Container Security)以及 DevOps 安全――DevSecOps(Development -Security-Operations)。在 Gartner 发布的《2017 年云安全技术成熟度曲线》[14](Hype Cycle)中,容器安全目前处于新兴(Innovation Trigger)阶段,虽然尚未成熟, 但技术进步较快。容器自身安全,以及容器生态环境中的安全防护,都是准备部署容器的企业中 CIO和 CISO们 非常关心的安全问题。

一方面,容器技术应用于 DevOps 的开发、测试和运维环节,需要保证全生命周期的安全,如开源库和容器 镜像安全评估、编排安全和容器运行时安全等方面,都是 DevSecOps 需要解决的问题;另一方面,在实际的运 行环境中,容器自身的系统、应用和网络也需要做安全加固、安全检测和安全防护。
容器本质上是一种操作系统层面的虚拟化技术,一旦攻击者利用宿主机操作系统的某个内核漏洞对容器进行 攻击,可能逃逸到宿主机上,并将导致宿主机上的其它容器被攻陷。另外,容器系统本身也存在一定的不安全性, 使用者在部署和使用容器的时候,往往又缺少专业安全团队的帮助,很容易给攻击者造成可乘之机。
由于容器是介于基础设施和平台之间的虚拟化技术,因此面向基础设施虚拟化的传统云安全解决方案无法完 全解决前述安全问题。如以容器为支撑技术构建 DevOps 环境,就需要设计涵盖从容器镜像的创建到投产上线的 整个生命周期的容器安全方案。
综上所述,容器以及容器运行环境的安全问题亟待调研和分析,了解容器技术和基于容器技术的系统存在的 风险、应对策略,将是构建安全的云原生环境非常重要的前提。

参考资料

绿盟 容器安全技术报告

友情链接

绿盟 新型IoT机顶盒恶意软件Rowdy网络分析报告

容器安全技术容器发展历程相关推荐

  1. 容器安全技术容器管理与应用

    容器管理与应用 容器技术之所以在微服务.云计算 等领域得到广泛应用,除了其轻量化的技术外,弹性.敏捷的容器管理和 编排系统支持也是重要因素之一.#### 容器管理 集群化.弹性化和敏捷化是容器应用的显 ...

  2. 容器混合云发展引争议,专家亚马逊云科技中国峰会共探讨

    自从2006年亚马逊亚马逊云科技便借用Amazon S3(Simple Storage Service)和Amazon EC2(Elastic Compute Cloud)两款产品,拉开了云计算的大幕 ...

  3. 计算机硬件与游戏发展史,电脑硬件的发展历程中 什么是电竞SSD?

    原标题:电脑硬件的发展历程中 什么是电竞SSD? 身处21世纪的人们,早已经习惯了各类电子设备的充斥,并全方位的体验着智能设备所带来的便利.那么,我们平常所熟知的计算机设备,到底由那些重要部件组成,它 ...

  4. 《Docker——容器与容器云》:第一章 从容器到容器云

    2013年初,一个名字从云计算领域横空出世,并在整个IT行业激起千层浪.这就是Docker--一个孕育着新思想的"容器".Docker选择容器作为核心和基础,依靠容器技术支撑的Do ...

  5. 切面是异步还是同步操作‘_细说JS异步发展历程

    知其然知其所以然,首先了解三个概念: 1.什么是同步? 所谓同步,就是在发出一个"调用"时,在没有得到结果之前,该"调用"就不返回.但是一旦调用返回,就得到返回 ...

  6. WEB的发展历程、Tomcat服务器、与HTTP协议

    1 web的发展历程 C/S和B/S都是软件架构的两种不同的表现形式: C/S架构:Client/Server:客户端和服务端的架构.该软件运行在电脑桌面:比如,QQ,FeiQ,POS机/火车站买票. ...

  7. 如何向小白讲述软件架构发展历程?

    点击上方"CSDN",选择"置顶公众号" 关键时刻,第一时间送达! 作者简介:kimmking,关注于互联网电商,金融,支付等系统领域,10多年研发管理和架构经 ...

  8. 马蹄疾 | 详解 JavaScript 异步机制及发展历程(万字长文)

    本文从Event Loop.Promise.Generator.async await入手,系统的回顾 JavaScript 的异步机制及发展历程. 需要提醒的是,文本没有讨论 nodejs 的异步机 ...

  9. 第一章:ORM框架发展历程和MyBatis的核心应用

    ORM框架的发展历史与MyBatis的高级应用 一.ORM框架的发展历程 1. JDBC操作 1.1 JDBC操作的特点 最初的时候我们肯定是直接通过jdbc来直接操作数据库的,本地数据库我们有一张t ...

最新文章

  1. iOS 图片处理-图片旋转和裁剪
  2. 百度Apollo发布海量自动驾驶数据集,还有两项重磅挑战赛
  3. html5盒子模型作业,html5 盒子模型案例
  4. mysql 控制台全是_Mysql控制台命令大全
  5. Swagger+Spring mvc生成Restful接口文档
  6. 读过的最好的epoll讲解
  7. JAVA实现Token学习笔记001--Token入门案例
  8. Python爬虫之(一):爬虫简介
  9. 数据结构c语言版马睿课后答案,清华大学出版社-图书详情-《C语言程序设计习题解答与实验指导》...
  10. 【图像重建】基于matlab迭代步长自适应图像超分辨重建【含Matlab源码 048期】
  11. PyQt5 与PyQt4的区别
  12. 什么是LVDS电平以及和LVPECL的互联
  13. 教你如何去掉桌面图标的蓝底
  14. 论文阅读:FVQA: Fact-based Visual Question Answering
  15. 学生管理系统IPO图_关于继续开展2019年度辅导员工作考核学生评议的通知
  16. android 录屏 sdk,浅析Android录屏 MediaRecorder
  17. android 简单拍照,android实现简单拍照功能
  18. 写给区块链初创者的一封信
  19. html+监听+页面滚动到底部,JS监听页面滚动到底部事件
  20. 一份来自于全球的前端面试题清单,看看老外喜欢考哪些题(部分有答案)

热门文章

  1. CTF·WEB入门之路
  2. ps中扩展画布的时候,不能选择扩展画布部分的颜色解决方法
  3. spring配置与监听mysql_spring boot (8)mybatis配置监听,
  4. Bluetooth tethering不能用问题
  5. 微信小程序授权微信手机号踩坑,第一次无法获取到手机号,第二次成功的解决方案
  6. 移动网关贝尔G-140W-C 修改wifi前缀去掉CMCC
  7. 计算机图形学学习:GAMES101
  8. java 计时 纳秒_Java精确测量代码运行时间 代码执行时间 纳秒 nanoTime
  9. (轉貼) 千頭萬緒 : 學習多執行緒程式設計的好書 (.NET) (Java)
  10. 为何要开办《微积分阅览室》?