我的理解是,AppArmor和SELinux都实现了强制访问控制(MAC)系统,该系统在容器之间提供了额外的隔离安全层,并且Docker为这两者提供了默认策略。
但是,SELinux特别可以使用多类别安全性(MCS)来强制系统上的每个单独容器只能访问标记为该特定容器的主机上的文件(更多详细信息:article,{{3 }})。也就是说,如果两个Docker容器A和B在单个主机上旋转,Docker附带的默认SELinux安全策略实际上会强制执行,如果发生突破,容器A中的linux进程将无法访问属于容器B的文件。不仅如此,文件可以从主机安装到容器中的唯一方法是presentation带有“:Z”,这样就告诉Docker确保添加相关的MCS标记到该路径中主机上的文件,以便容器可以访问它们。
相反,我在AppArmor中找不到任何类似机制的引用。相反,Docker的volumes are suffixed似乎主要是拒绝访问特定的文件系统路径和主机资源,而不是拒绝拒绝容器之间的访问。
我的问题是,如果我使用Docker的默认AppArmor配置文件,我是否会获得与上述SELinux相同的有效保护? AppArmor会阻止从一个容器访问另一个容器的文件吗?如果是的话,它是如何实现的?