Docker容器真的安全吗?
本文基于我今年在DockerCon上的演讲。 它将讨论Docker容器安全性,我们当前的位置以及发展的方向。
这是有关Docker安全性的系列文章的一部分 ,请阅读第二部分 。
容器不包含
我听到并读到很多人都认为Docker容器实际上是沙箱应用程序-意味着他们可以使用Docker作为根在自己的系统上运行随机应用程序。 他们认为Docker容器实际上将保护其主机系统。
- 我听说有人说Docker容器与在单独的VM / KVM中运行进程一样安全。
- 我知道人们正在下载随机的Docker映像,然后在其主机上启动它们。
- 我什至看到PaaS服务器(还不是OpenShift)允许用户上载自己的映像以在多租户系统上运行。
- 我有一个同事说:“ Docker是要运行从Internet下载的随机代码并以root用户身份运行它。”
“你会走进我的客厅吗?” 蜘蛛对苍蝇说 。
不要再假设Docker和Linux内核可以保护您免受恶意软件的侵害。
你关心?
如果您未在多租户系统上运行Docker,并且对容器内运行的服务使用了良好的安全性实践,则可能不必担心。 仅假设容器内运行的特权进程与容器外运行的特权进程相同。
有些人误以为将容器视为运行虚拟机的一种更好,更快的方法。 从安全的角度来看,容器要弱得多,我将在本文后面介绍。
如果您像我一样相信,则应将Docker容器视为“容器服务”-意味着将其视为运行Apache的容器,就像对待在系统上运行的Apache服务一样。这意味着您将执行以下操作:
- 尽快放弃特权
- 尽可能以非root用户身份运行服务
- 将容器内的根视为容器外的根
当前,我们告诉“ 通用标准”中的人员以与容器外部运行的特权进程相同的标准来对待容器中的特权进程。
不要在系统上运行随机的Docker映像。 从许多方面来看,我认为Docker容器的革命与1999年左右的Linux革命相似。当时,当管理员听到新的酷炫Linux服务时,他们会:
- 在rpmfind.net等网站或随机网站上的互联网上搜索软件包
- 将程序下载到他们的系统上
- 如果通过RPM安装或进行安装
- 特权运行
可能出什么问题了?
两周后,管理员听到了zlib漏洞的消息,必须弄清楚他们是否希望自己的软件容易受到攻击,同时祈祷并祈祷它不是易受攻击的软件!
这是Red Hat发行版和其他一些受信任的各方介入的地方,以度过难关。 红帽企业Linux为管理员提供:
- 他们可以从其下载软件的受信任存储库
- 安全更新以修复漏洞
- 一个安全响应团队来查找和管理漏洞
- 一组工程师来管理/维护软件包并致力于安全性增强
- 通用标准认证,用于检查操作系统的安全性
仅运行来自受信任方的容器。 我相信您应该继续从过去获得过代码的人那里获得代码/软件包。 如果代码不是来自内部或受信任的第三方,请不要依靠容器技术来保护您的主机。
那是什么问题呢? 为什么容器不包含容器?
最大的问题是Linux中的所有内容都没有命名空间。 当前,Docker使用五个名称空间来更改系统的进程视图:进程,网络,安装,主机名,共享内存。
尽管这些为用户提供了一定程度的安全性,但它绝不是像KVM那样全面的。 在KVM环境中,虚拟机中的进程不会直接与主机内核对话。 他们无权访问/ sys和/ sys / fs , / proc / *之类的内核文件系统。
设备节点用于与VM内核而非主机进行通信。 因此,为了使虚拟机具有特权升级,该过程必须对虚拟机的内核进行子虚拟化,在HyperVisor中找到漏洞,突破虚拟机上非常紧密的SELinux控件(sVirt),最后攻击主机核心。
当您在容器中运行时,您已经到了与主机内核对话的地步。
主要内核子系统的命名空间不像以下那样:
- SELinux
- 团体
- / sys下的文件系统
- / proc / sys , / proc / sysrq-trigger , / proc / irq , / proc / bus
设备未命名空间:
- / dev / mem
- / dev / sd *文件系统设备
- 内核模块
如果您可以通过特权进程来通信或攻击其中之一,则可以拥有该系统。
翻译自: https://opensource.com/business/14/7/docker-security-selinux
Docker容器真的安全吗?相关推荐
- Docker安全性(一)——Docker容器真的安全吗?
Docker安全性(一)--Docker容器真的安全吗? 本文翻译自Daniel J Walsh的一篇开源文章:http://opensource.com/business/14/7/docker-s ...
- 初识docker容器(优势真的巨大,比虚拟机好用多了)
目录 背景: 一.名称空间 Namespaces Docker Engine在Linux.上使用以下名称空间: 二.docker与虚拟化 2.1cgroups 2.2全虚拟.半虚拟.容器技术 2.3那 ...
- Docker容器技术——真的很细
目录 一.容器介绍 1.云计算服务类型 2.容器本质 3.容器和虚拟机对比 4. docker基本概念 5.docker的优势 交付物标准化 一次构建,多次交付 应用隔离 6.Docker三大核心组件 ...
- docker容器虚拟化技术_Docker,虚拟机和容器的全面介绍
docker容器虚拟化技术 by shota jolbordi 通过Shota Jolbordi Docker has been a buzzword for tech people for the ...
- docker容器学习笔记
docker是通过内核虚拟化技术来提供容器的资源隔离与安全保障. docker组成: docker client.docker server.docker组件(镜像(image).容器(contain ...
- 如何在Docker容器中挂载主机目录
本文翻译自:How to mount a host directory in a Docker container I am trying to mount a host directory into ...
- Docker容器中MySQL最大连接数被限制为214的解决方案
Docker容器中MySQL最大连接数被限制为214的解决方案 原文:Docker容器中MySQL最大连接数被限制为214的解决方案 一.背景 话说笔者在上次的博客里简单的讲了一下调整MySQL最大连 ...
- windows container (docker) 容器资料笔记
背景 业务需求:简化公司私有云,公有云的部署,尝试寻找更好的,更优化的技术方案替换现有的虚拟机部署方案. 技术背景: .net Docker 学习资料 Docker中文社区: http://www.d ...
- docker容器 eureka 集成_微服务:基于 Docker 的微服务架构之分布式企业级实践参考...
编者按:本文分享自CSDN技术博客,作者为 FlyWine,所有权归原著者.若有不妥,联系本头条号以做必要处理. 目录 Microservice 和 Docker 服务发现模式 客户端发现模式 Net ...
最新文章
- python PyQt5.QtWidgets.QApplication类(sys.argv)(app应用对象类)
- 干货:SSH的使用详解
- 怒卸python3.4.1
- ajxs跨域 php_PHP项目中是如何处理Ajax请求与Ajax跨域的
- java spring注解维护,从一次工程启动失败谈谈 spring 注解
- 关于@Alias注解的几个问题
- VPP /什么是VPP?读这篇文章就够了
- sql 计算单行数据字段空值比例_如何利用工具,迅猛定位低效SQL? | 1分钟系列...
- Kotlin协程简介(一) Hello,coroutines!
- URAL-1998 The old Padawan 二分
- js逆向案例-过加速乐
- 机械硬盘 与 固态硬盘SSD
- C++中如何获取一个文件夹下带有指定文件后缀名的文件绝对路径
- 如何html5将文字插入图片,如何在文字中加入图片?
- 2016年山西医科大汾阳学院实验1,实验2
- 使用prometheus监控服务器主机
- 求出 2 到 n 之间 (含 n)的所有素数。
- repr函数输出调试信息
- P94-好玩游戏的物品清单升级-列表到字典的函数
- 入门算法:小和问题 之归并排序思想 java语言