内核能力机制

    例如,一个 Web 服务进程只需要绑定一个低于 1024 的端口的权限,并不需要 root 权限。那么它只需要被授权 能力即可。此外,还有很多其他的类似能力来避免进程获取 root 权限。

    使用能力机制对加强 Docker 容器的安全有很多好处。通常,在服务器上会运行一堆需要特权权限的进程,包括有 ssh、cron、syslogd、硬件管理工具模块(例如负载模块)、网络配置工具等等。容器跟这些进程是不同的,因为几乎所有的特权进程都由容器以外的支持系统来进行管理。

    • ssh 访问被主机上ssh服务来管理;
    • cron 通常应该作为用户进程执行,权限交给使用它服务的应用来处理;
    • 硬件管理无关紧要,容器中也就无需执行 udevd 以及类似服务;
    • 网络管理也都在主机上设置,除非特殊需求,容器不需要对网络进行配置。
    • 禁止直接访问本地主机的套接字;
    • 禁止访问一些文件系统的操作,比如创建新的设备、修改文件属性等;

    这样,就算攻击者在容器中取得了 root 权限,也不能获得本地主机的较高权限,能进行的破坏也有限。