对于Docker容器,SELinux比AppArmor更安全吗?

我的理解是,AppArmor和SELinux都实现了一个强制访问控制(MAC)系统,该系统在容器之间提供了一个额外的安全隔离层,并且Docker带有两个默认策略。

但是,SELinux专门可以使用多类别安全性(MCS)来强制系统上的每个单独的容器只能访问为特定容器标记的主机上的文件(更多详细信息: 文章 , 演示文稿 )。 也就是说,如果两个Docker容器A和B在单个主机上分离,那么Doc​​ker附带的默认SELinux安全策略实际上会强制在发生中断时,容器A中的Linux进程将无法访问属于容器B的文件。不仅如此,文件可以从主机装入容器的唯一方式是如果卷后缀为“:Z”,因此告诉Docker确保将相关的MCS标签添加到该path上的主机上的文件,以便容器可以访问它们。

相反,我无法在AppArmor中find任何类似机制的引用。 相反,Docker的默认AppArmorconfiguration文件似乎主要是关于拒绝访问特定的文件系统path和主机资源,而不是拒绝访问容器。

我的问题是,如果我使用Docker的默认AppArmorconfiguration文件,我将获得与使用上述SELinux相同的有效保护吗? AppArmor会阻止从一个容器访问另一个容器的文件吗? 如果是的话,它是如何实现的?