赞
踩
容器技术通过共享主机操作系统内核,实现轻量的资源虚拟化
和隔离,近年 来在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 环境,就需要设计涵盖从容器镜像的创建到投产上线的 整个生命周期的容器安全方案。
综上所述,容器以及容器运行环境的安全问题亟待调研和分析,了解容器技术和基于容器技术的系统存在的 风险、应对策略,将是构建安全的云原生环境非常重要的前提。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。