我们有离岸开发人员,他们希望在本地运行我们的服务器,但出于安全原因,我们不想向他们提供服务器代码。所以一个解决方案是他们运行一个 Docker 容器,这是我们服务器的独立版本!所以他们这边没有复杂的设置! :)
问题在于,始终可以以 root 身份访问 Docker 实例的 Linux shell,从而访问源代码。
如何禁用 Docker 容器的 root 访问权限?或者我们如何才能将我们的源代码与 root 访问隔离开来?
您可以修改容器创建用户(例如 foo)并为其分配正确的权限。然后你就可以运行docker容器了docker run
使用参数的命令-u foo
。例如,如果您运行:docker run --rm -ti -u foo myCustomImage sh
。这将使用 $ 而不是 # 打开 sh shell。当然,您必须先在 Dockerfile 上创建 foo 用户。
如果您想要更多限制,例如禁用某些内核功能,您可以从 docker 1.10 开始使用 seccomp 安全功能。一探究竟:
https://docs.docker.com/engine/security/seccomp/ https://docs.docker.com/engine/security/seccomp/
使用此功能,您可以禁用和限制许多系统功能...以及拒绝的简单示例mkdir
命令。创建一个像这样的 json 文件(例如将其命名为 sec.json):
{
"defaultAction": "SCMP_ACT_ALLOW",
"syscalls": [
{
"name": "mkdir",
"action": "SCMP_ACT_ERRNO"
}
]
}
然后运行你的容器:docker run --rm -ti --security-opt seccomp=/path/on/host/to/sec.json ubuntu:xenial sh
。您可以检查您无法运行的容器内部mkdir
命令。
希望这可以帮助。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)