docker学习_10(Docker 安全)

Docker 安全

安全问题必须要被高度重视,无论是开发环境还是生产环境。如今 Docker 已经被部署在越来越多的地方,Docker 作为项目和平台的安全性也越来越要被重视。

因此,本系列教程关键的第五章用来讨论 Docker 可能面临的安全问题以及它们是如何影响到 Docker 整体的安全性的。但并不是说 Docker 本身不安全:Docker 是建立在 LXC 的基础上的,因此 Docker 继承了 LXC 绝大部分安全优势。

前文中提到 docker run 是用来运行容器的,那么 docker run 之后到底发生了什么?

  1. docker run 命令初始化

  2. Docker 调用 lxc-start 命令。

  3. lxc-start 创建一系列的 namespaces 和 CGroups 进行资源限制。

namespace 是虚拟化的第一层,用于容器以及容器内之间互相隔离。所有的容器都有独立的网络栈、一个容器也无法访问到另一个容器的 Socket 端口。如果你希望容器之间通过网络互访的话,就要开启 Docker 的端口映射功能,或者为容器指定公网 IP。

CGroup 有如下的特点:

  1. 资源计数和资源控制。

  2. 限制内存、CPU、IO 和网络使用。

  3. 试图解决 Dos 攻击问题。

  4. 更适用于多用户、多进程的系统。

对于 namespace 和 CGroups 不熟悉的童鞋可以参考这么几篇文章:
Docker 基础技术:Linux Namespace(上)
Docker 基础技术:Linux Namespace(下)
Docker 基础技术:Linux CGroup

Docker Daemon 的攻击层面

Docker daemon 使用 root 权限运行,肯定需要有许多地方需要特别注意,例如:

  1. 如果 Docker 容器有权限访问宿主机的话,那么要特别小心,Docker 进程的控制权只能给授权用户。举个极端的例子:容器内部的 UID=0 如果对容器外部某个不明程序执行了 chmod +s

  2. REST API 也支持 UNIX socket,从而避免了 XSS 攻击。

  3. REST API 的 HTTP 端口(如果有的话)只能对可信的网络、VPN、IP 开放。

  4. 在服务器上运行 Docker 时需要与其他服务隔离。

一些必要的安全措施包括:

  1. 使用非特权用户运行容器。

  2. Apparmor,SELinux,grsec 都可以当成是一层额外的安全加固。

  3. 可以使用其他容器系统的安全功能。

Docker.io API

本图中列举了几个用于维护和授权的安全性 Docker API。

clipboard.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值