如何在Docker容器中限制对路径的访问?

时间:2015-12-14 15:28:22

标签: linux ubuntu docker root

Here我编写了一个用于测试用户访问权限的Dockerfile。另一个文件(run.sh)位于此link

到此为止,我已经完成了这个:

  1. 从Ubuntu 12.04.05开始,使用sudo和ssh服务器创建一个新容器。
  2. 将root密码更改为“root”
  3. 使用示例字符串创建一个名为'lalal'的测试目录'/ app'和一个文件。
  4. 创建用户'devops'并为其添加sudo功能,以便启动ssh服务。
  5. 配置run.sh脚本以在启动时启动ssh服务,并将“devops”更改为默认用户。
  6. 使用docker进行操作:

    • 构建:docker build testuser / testuser:v1 -f ./Dockerfile。
    • 运行:docker run -d -P --name testuser -p 22:22 testuser / testuser:v1
    • 查看日志:docker logs testuser
    • 运行bash:docker exec -i -t bash
    • 使用root用户运行bash:docker exec -i -t -user = root bash

    由于对/ app目录的限制,使用devops用户运行bash没有问题,但是当我使用root用户运行bash时,我可以做任何我想做的事情,而devops用户也没用。我该如何纠正这个安全漏洞?

1 个答案:

答案 0 :(得分:1)

issue 8664中所述:

  

如果有人可以访问Docker,他们可以访问您的整个系统,可以加入namepsaces等   禁用docker exec根本不会增强安全性。

如果您可以运行docker exec,则可以在任何正在运行的容器中以root身份运行它。这不是错误或安全风险。这是一个功能。

来自issue 8798

  

我认为exec主要用于调试容器,因此必须能够执行root

OP Agustín Alba Chicarin the comments确认(issue 18640) (Brian Goff -- cpuguy83的答案)

  

没有。
  按照惯例,任何有权访问docker的用户都拥有对主机的完全root权限,这使得对容器的root访问权限无法实现。

     

Docker现在在master中有一个授权框架,可用于限制这种访问。它将在Docker 1.10中提供