分享

Docker入门教程(五)Docker安全

本帖最后由 nettman 于 2015-1-7 23:06 编辑

问题导读
1.运行容器应该使用哪个命令?
2.Control Groups是非常重要的组件,具有哪些功能?










【编者的话】DockerOne组织翻译了Flux7的Docker入门教程,本文是系列入门教程的第五篇,介绍了Docker的安全问题,依然是老话重谈,入门者可以阅读本文快速了解。

我们必须高度重视开源软件的安全问题,当开发者在使用Docker时,从本地构建应用程序到生产环境部署是没有任何差异的(译者注:作者的言外之意是更应该重视Docker的安全问题)。当Docker被用到越来越多的平台的时候,我们需要重点保证Docker作为一个项目或者平台的安全性。

因此,我们决定在Docker系列教程的第五篇来讨论Docker安全的相关问题以及为什么它们影响到Docker的整体安全性。鉴于Docker是LXC的延伸,它也很容易使用LXC的安全特性。

在本系列的第一篇文章中,我们知道docker run命令可以用来运行容器。那运行这个命令后,Docker做了哪些具体的工作了?具体如下:
  • docker run命令初始化。
  • Docker 运行 lxc-start 来执行run命令。
  • lxc-start 在容器中创建了一组namespace和Control Groups。

对于那些不知道namespace和control groups的概念的读者,我在这里先解释一下:namespace是隔离的第一级,容器是相互隔离的,某个容器是不能看到其它容器内部运行的进程(译者注:namespace系列教程可以阅读DockerOne上的系列教程)。每个容器都分配了单独的网络栈,因此一个容器不可能访问另一容器的sockets。为了支持容器之间的IP通信,您必须指定容器的公网IP端口。

Control Groups是非常重要的组件,具有以下功能:
  • 负责资源核算和限制。
  • 提供CPU、内存、I/O和网络相关的指标。
  • 避免某种DoS攻击。
  • 支持多租户平台。

Docker Daemon的攻击面

Docker Daemon以root权限运行,这意味着有一些问题需要格外小心,
下面介绍一些需要注意的地方:
  • 当Docker允许与访客容器目录共享而不限制其访问权限时,Docker Daemon的控制权应该只给授权用户。
  • REST API支持Unix sockets,从而防止了cross-site-scripting攻击。
  • REST API的HTTP接口应该在可信网络或者VPN下使用。
  • 在服务器上单独运行Docker时,需要与其它服务隔离。

一些关键的Docker安全特性包括:
  • 容器以非特权用户运行。
  • Apparmor、SELinux、GRSEC解决方案,可用于额外的安全层。
  • 可以使用其它容器系统的安全功能。

Docker.io API

用于管理与有关授权和安全的几个进程,Docker提供REST API。如下表格列出了关于此API用于维护相关的安全功能的一些命令。

fada0eeeee2458801a269de8867d2514.png

Docker系列教程下一篇文章中我们继续探讨前面第二篇文章所讨论的Docker命令的进阶。


相关文章




Docker入门教程(二)命令

Docker入门教程(三)DockerFile

Docker入门教程(四)Docker Registry

Docker入门教程(六)另外的15个Docker命令

Docker入门教程(七)Docker API

Docker入门教程(八)Docker Remote API




欢迎加入about云群90371779322273151432264021 ,云计算爱好者群,亦可关注about云腾讯认证空间||关注本站微信

已有(2)人评论

跳转到指定楼层
stark_summer 发表于 2015-1-7 22:43:35
docker好东西 赞
回复

使用道具 举报

anf_1102 发表于 2015-3-11 10:09:50
好东西,值得分享!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条