3

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

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

相反,我在 AppArmor 中找不到对类似机制的任何引用。相反,Docker 的默认 AppArmor 配置文件似乎主要是关于拒绝访问特定的文件系统路径和主机资源,而不是拒绝容器之间的访问。

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

4

0 回答 0