运维实战 容器部分 Docker安全

理解Docker安全

由于Docker与传统虚拟化不同, 并不是完全隔离, 因此其安全性也是常被诟病的一点.

要做到相对安全的隔离就应该先了解Docker安全相关的知识.

Docker容器的安全性, 很大程度上依赖于Linux系统自身, 评估Docker的安全性时, 主要考虑以下几个方面:

  • Linux内核的命名空间机制提供的容器隔离安全
  • Linux控制组机制对容器资源的控制能力安全
  • Linux内核的能力机制所带来的操作权限安全
  • Docker程序(特别是服务端)本身的抗攻击性
  • 其他安全增强机制对容器安全性的影响

命名空间隔离的安全

  • 当启动一个容器时, Docker将在后台为容器创建一个独立的命名空间. 命名空间提供了最基础也最直接的隔离.

  • 与虚拟机方式相比, 通过Linux namespace来实现的隔离不是那么彻底.

  • 容器只是运行在宿主机上的一种特殊的进程, 那么多个容器之间使用的就还是同一个宿主机的操作系统内核.

  • Docker目前能够Namespace化的资源只有6种. 在 Linux 内核中, 仍旧有许多资源不能被Namespace化, 比如系统时间, 内存信息等等.

控制组资源控制的安全

  • 当启动一个容器时, Docker会在后台为容器创建一个独立的控制组策略集合.
  • LinuxCgroups特性提供了很多有用的特性支持, 这确保各容器可以公平地分享主机的内存、CPU、磁盘IO等资源.
  • 在考虑Docker安全性时, “确保容器内发生的资源压力不会影响到本地物理主机系统和其他容器” 这一思想是必不可少的.这在防止拒绝服务攻击 (DDoS) 方面能起到一定作用.

考虑内核能力机制

  • 能力机制 (Capability) 是Linux内核一个强大的特性, 可以提供细粒度的权限访问控制.

  • 大部分情况下, 容器并不需要"真正的"root权限, 容器只需要少数的能力即可.实际上, 默认设置下在容器中看到的root权限也并不完全具有我们一般意义上认为的操作系统root权限.

  • 默认情况下, Docker采用"白名单"机制, 禁用"必需功能"之外的其他权限.

Docker服务端防护

  • 既然Docker的安全性很大程度上依托于宿主机的安全性, 尽可能控制其对宿主机的影响以及宿主机本身的访问控制就是很重要一环了.
  • 保证只有可信用户可以访问Docker服务, 这一操作可以从源头降低出现安全风险的问题.
  • Docker分配专门的非root用户, 并将容器的root用户映射到专用用户上, 采用对该用户的权限控制降低容器和主机间因权限可能导致的安全问题出现的概率.
  • 允许Docker服务在非root权限下运行, 采用安全可靠的子进程来代理执行那些需要特权权限的操作.

其他安全特性

  • 采用具有安全特性的模板进行容器构建.
  • 可以自定义更加严格的访问控制机制来提升安全性.
  • 当需要挂载文件系统到容
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值