我们有希望在本地运行我们服务器的离岸开发人员,但出于安全考虑,我们不希望向他们提供服务器代码。所以解决方案是他们运行Docker容器,这是我们服务器的独立版本!所以他们身边没有复杂的设置! :)
问题是始终可以以root用户身份访问Docker实例的Linux shell,从而可以访问源代码。
如何禁用Docker容器的root访问权限?或者我们如何从root访问中隔离我们的源代码?
答案 0 :(得分:2)
您可以修改创建用户的容器(例如foo)并为其分配正确的权限。然后,您可以使用参数docker run
在-u foo
命令上运行docker容器。如果您运行例如:docker run --rm -ti -u foo myCustomImage sh
。这将使用$而不是#打开sh shell。当然,在您的Dockerfile上,您必须先创建foo用户。
如果您需要更多限制(例如禁用某些内核功能),则自docker 1.10起可以使用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
命令。
希望这有帮助。