如何保护docker主机不允许rooting

Modified on: Sat, 09 Nov 2019 07:20:02 +0800

我正在尝试使服务器上的docker更安全。主要的问题是,大多数人都会说“如果一个人可以访问docker,他们也可能是root用户”,对于管理员来说很少这不是你想要的。

详细说明,他们可以使用-v并将/etc挂载到容器中的/mnt并更改影子文件并获取访问权限给主人。他们可以使用-d或特权选项来做更多的事情。

所以基本上,有一些事情我想“尝试”和限制。

  1. 卷绑定装载
  2. 特权
  3. --add-cap
  4. -d(某些项目?)
  5. 醇>

    到目前为止我的想法:

  • 别名为docker的bash脚本,在其上使用sudo,并使用正则表达式执行所有不应该执行的操作。
  • 启用远程api,保护它并且可能使用nginx和nginx中的regex反向代理它们不应该做的事情。
  • 使用其他工具? Mesos /马拉松/群/船厂/无论

可选项是将容器提交到git代码,让“checker”验证Dockerfile的内容并为它们创建映像。然后签署该图像并自动部署。 (但这不会给他们更大的自由)

此外,删除绑定卷不是最好的。如果我们有一个docker插件,说“你只能挂载/data,作为用户X”,其中USERDockerfile

docker-novolume-plugin之类的东西已经是一个很好的开端,但不限制绑定卷。

最后问题是,我怎样才能让用户构建/提取/运行docker镜像作为他们自己的用户/ docker并且无法根系统。只要它有效,就不必是完美的。

最佳答案

保护docker引擎需要关注许多不同方面,并且深度防御总是关于的安全性。

您列出的要求之一,限制用户可以命令docker引擎执行的操作,可能是最重要的一项,因为,截至目前,docker engine没有实现授权控制。

您的替代方案包括:

  • Twistlock等封闭源解决方案,这是一个实施RBAC和策略控制的项目docker API

  • OpenShift Origin,一个开源项目,在表单中实现基于角色的访问控制安全限制细粒度授权政策。它的部署非常简单,非常有助于提供开箱即用的解决方案。

我还建议调查可以部署docker引擎的不同操作系统,并建议不要使用通用操作系统,而是使用专用操作系统,例如Atomic。 Atomic和OpenShift都将确保您也可以:

作者:dawud

相关问答

添加新评论