首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Docker安全风险,原来有这么多

引言

Docker是一种开源的基于 LXC 的应用容器引擎,因其轻量、弹性伸缩、快速部署、可移植等优势,在大型互联网企业中被广泛应用。随着Docker技术的发展与普及,其带来安全问题不容忽视。本文通过介绍Docker实现原理,对Docker所引入的安全脆弱性问题分析总结,对使用者在容器安全问题方面提供指导性建议。

简 介

Docker的设计理念是“Build,Ship and Run Any App,Anywhere”,可实现对应用的封装、部署、运行等生命周期管理。应用通过镜像的方式部署于任何环境中,可避免各团队之间因沟通不畅产生的协作问题,Docker现已成为企业实现DevOps目标的重要工具。

基本概念

01

Docker镜像(Image)

Docker镜像是动态容器的静态表示,包括容器所要运行时所需的程序、库、资源以及相关配置。镜像不包含任何动态数据,其内容在构建之后不会被改变。一个运行着的Docker 容器是一个镜像的实例,多个容器可以共用一个镜像。

Dockerfile是Docker用来构建镜像的脚本文件,包含自定义的指令和格式。用户可以用统一的语法命令来根据需求进行配置,在不同的平台上进行分发,简化开发人员构建镜像的复杂过程。

仓库(Repository)

仓库是集中存放镜像文件的场所,每个仓库中可包含多个具备不同标签的镜像。仓库类似于Git工具,当用户创建自己的镜像后可以上传到公有或私有的仓库,当需要使用时,从仓库下载过来即可。

容器(Container)

容器是Docker镜像创建的实例,是静态镜像的运行时的实体。其本质是一个与宿主机系统共享内核但与系统中的其他进程资源相隔离的进程,它可以被启动、停止、删除。容器中会运行特定的应用,包含代码和相关的依赖文件。每个运行着的容器都有一个可写层(writable layer,也称为容器层 container layer),它位于若干只读层之上。运行时的所有变化,包括对文件的写和更新,都会保存在这个层中。

Docker系统架构

02

Docker使用了传统的Client-Server架构,总架构如图1所示。用户通过Docker client与Docker daemon建立通信。Docker daemon是Docker最核心的后台进程,一般运行在宿主机之上,负责响应来自Docker client的请求,根据请求类型创建出指定的Job,完成构建、分发和运行Docker容器的工作。API负责提供进程交互的接口。Docker daemon、Docker client与API共同组成Docker Engine。Docker技术使用Docker镜像来创建实例容器。镜像可以从远程的仓库拉取,用户也可以上传镜像到仓库中。

图1 Docker容器系统架构

容器技术风险

容器技术是一种新型的技术革命,不仅存在传统的主机安全问题,还带来了新型的安全威胁。本文主要介绍Docker容器技术引发的有别于传统安全的脆弱性。

镜像

01

容器基于容器镜像文件启动,镜像的安全将影响到整个容器的安全,为此Rui Shu 等人对镜像的安全漏洞进行调研,并在其《Docker Hub 安全漏洞分析》一文中给出了一份镜像的统计数据[2],数据如表 1 所示。

表1 镜像中所含漏洞数量统计[2]

由数据可以看出,无论是社区镜像或官方镜像都有较多的漏洞。现总结容器镜像安全脆弱性如下:

表2 镜像安全脆弱性

容器

02

基于镜像文件运行的容器是整个容器技术的核心,提供对外服务,与用户进行交互,此部分如不安全,将会对整个平台造成安全威胁,经调研其安全脆弱性如下:

表3 容器安全脆弱性

容器网络

03

为了节约ip地址,Docker技术中网络多使用桥接方式进行连接。其在宿主机上创建一个虚拟的网桥Dokcer0,扮演了传统交换机的角色,在各个网络接口间自动的进行包转发,每创建一个新的容器,就为其增加一个虚拟网络接口,并将该网络接口连接到网桥Docker0,其脆弱性将会导致平台上其他用户的信息被泄漏甚至可用性被影响。可能存在的脆弱性如下:

表4 容器网络安全脆弱性

容器机制

04

容器技术为容器的安全运行提供保障,如果此技术机制不安全,那么容器作为其中的一部分,则是在不知不觉中将所有信息暴露在外了。

表5 容器机制安全脆弱性

总 结

Docker技术带来的技术革命是让人惊喜的,运维人员利用 Docker 可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用 Docker 可以构建敏捷的软件交付管道,以更快的速度为 Linux 和 Windows Server 应用发布新功能,但安全性是重要方面,是不得不考虑的问题。本文主要介绍了Docker技术存在的安全脆弱点,意欲抛砖引玉。Docker技术安全能力还有很大的改进空间。

参考文献

[1] 浙江大学SEL实验室.Docker容器与容器云(第二版)[M]. 北京邮电大学出版社北京,2016(10):28

[2] Shu R, Gu X, Enck W. A Study of Security Vulnerabilities on Docker Hub[C]// ACM on Conference on Data and Application Security and Privacy. ACM, 2017:269-280.

[3] Combe T, Martin A, Pietro R D. To Docker or Not to Docker: A Security Perspective[J]. IEEE Cloud Computing, 2016, 3(5):54-62.

[4] Grattafiori A. Understanding and hardening Linux containers[J]. Whitepaper, NCC Group, 2016.

[5]鲁涛,陈杰,史军.Docker安全性研究[J/OL].计算机技术与发展,2018(06):1-6[2018-05-09].http://kns.cnki.net/kcms/detail/61.1450.TP.20180224.1521.064.html.

[6] Gao X, Gu Z, Kayaalp M, et al. ContainerLeaks: Emerging Security Threats of Information Leakages in Container Clouds[C]// Ieee/ifip International Conference on Dependable Systems and Networks. IEEE, 2017:237-248.

[7] Lipp M, Schwarz M, Gruss D, et al. Meltdown. arXiv preprint[J]. arXiv preprint arXiv:1801.01207, 2018.

作者:王婷婷 徐国坤

编辑:高琪

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180614G0QPBU00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券