Docker根权限级别查询
我所有的问题都是关于最新版本的DOCKER
-
守护进程仍然需要以root权限运行?
-
每个有权访问Docker组的用户都拥有root权限? 所以原来的root用户和拥有Docker组权限的用户之间没有任何区别。 如果有分歧,他们是什么?
-
因此,使用授权插件,您只能限制用户访问Docker守护进程,而不能限制用户在主机上的其他权限? (假设在这个Docker组/用户有权访问Docker守护进程的用户拥有主机权限 – 我的上一个问题)
-
“runc,containerd”和“docker daemon作为root运行”之间是否有任何联系? 或者这些(runc,containerd)只为支持OCI格式而引入? 我有一个愚蠢的想法,这些是为了消除docker运行作为根引入 – 我相信这是错误的,但需要确认。
Daemon still need to run as a root right?
是的,你可以在“ 在各种发行版上configuration和运行Docker ”中看到它,尽pipe它增加了 :
从Docker 1.12容器开始,可以在没有Docker或
containerd
运行的情况下运行。
这允许Docker守护进程退出,升级或从崩溃中恢复,而不会影响系统上运行的容器。
要启用此function,需要在启动dockerd
时添加--live-restore
标志。 这将确保Docker不会在正常closures或重启时停止容器运行。
Every user having access to Docker group, has root permissions? So, there is no difference at all between original root user and user having permissions to Docker group?
不完全是。 当守护进程启动时,docker守护进程将使docker
组读/写Unix套接字的所有权
如“ Docker守护进程攻击面 ”(仍为1.12)所述,
只有受信任的用户才能被允许控制你的Docker守护进程。
您可以启动一个容器,其中
/host
目录将成为/host
上的/
目录; 容器将能够不受任何限制地改变你的主机文件系统。
所以docker组的用户部分不是 root。 但是它可以访问所有可以从主机上挂载任何东西的容器。 这是…非常接近根。
So, with authorization plugins you just restrict access of a user to Docker daemon but not to the other permissions that the user has on host?
自“docker 1.11”以来,“ 授权插件 ”页面并没有明显改变 。
主要变化是:
如果在Docker守护进程中启用了TLS,则默认的用户授权stream将从证书使用者名称中提取用户详细信息。 +即,
User
字段被设置为客户端证书主题公用名称,并且AuthenticationMethod
字段被设置为TLS
。
Is there any link between "runc, containerd" and "docker daemon running as a root"? or else are these (`runc`,`containerd`) introduced only for supporting OCI format?
有问题15187“用户命名空间 – 阶段1”和runc
PR 160
prestart钩子在容器进程启动之后(克隆到新的命名空间)之后运行,但在用户命令(例如bash)之前执行。 这允许某人在容器的命名空间中做一些有用的事情。
I had a stupid thought that these are introduced for eliminating docker running as a root
这将更有可能通过用户名空间来实现。
用户名(usernamespace) 似乎仍然是实验性的 (来自PR 12648 )