我打算使用 LXC 容器来隔离大部分面向网络的服务。
根据我的理解,我主要有两种方法来做到这一点:
创建 root 拥有的非特权容器。在这种情况下,root 将拥有一组大的 sub-UID 和 sub-GID,并且该范围的不同子集将影响到每个容器(没有容器会相互共享任何 sub-UID 或 sub-GID),
创建非特权系统帐户拥有的非特权容器。在这种情况下,每个帐户将拥有一个容器以及该容器所需的从属 UID 和 GID。
从可用性的角度来看,前者要好得多:更容易设置和维护。
但是,从安全的角度来看,两者之间有什么区别吗?
例如:
与属于不同用户并因此属于不同池(不同行)的 ID 相比,属于/etc/subuid
和 中定义的同一池(同一行)的 ID 之间是否存在某种链接或水平关系/etc/subgid
?
从属 ID 与其所有者帐户之间是否存在某种链接或垂直关系?root 拥有的从属 ID 是否可以获得比非特权用户拥有的从属 ID 更高的权限?从属 ID 是否可以比升级为任何其他任意 ID 更简单的方式升级为其所有者 ID?
由 root 拥有意味着所有管理容器的命令都将使用主机的 root 权限启动。这是否构成弱点,或者例如所有特权是否提前下降?
等等。
换句话说:root 拥有的非特权容器可能比标准帐户拥有的容器“更少非特权”吗?