在本系列中,我们介绍了各种安全层,这些安全层不仅可以将容器与主机上的其他进程隔离开来,还可以将容器与其底层主机隔离开来。在这篇文章中,我们将讨论 AppArmor 和 SELinux 如何在我们之前讨论过的其他隔离层之外提供额外的限制。
强制访问控制系统
AppArmor 和 SELinux 是强制访问控制 (MAC) 系统的示例。这些系统与其他安全控制(通常称为自主访问控制(DAC)系统)的不同之处在于,用户通常无法更改其操作。
文件权限是 DAC 系统的一个示例。文件的所有者可以调整其权限,以允许主机上的任何人修改它。使用 MAC 系统时,用户可能无法修改对他们拥有的资源施加的约束。这些限制甚至包括 root 用户,尽管系统上的 root 用户只需禁用整个 MAC 系统即可绕过此限制。Linux 中的 MAC 系统允许你限制对各种系统资源的访问,以便即使是其他特权进程也无法访问它们。
虽然可以在任何 Linux 主机上同时使用 AppArmor 或 SELinux,但通常只启用其中一个MAC策略 ,这因不同发行版而异。默认情况下,Debian 衍生系统使用 AppArmor,而基于 Red Hat 的系统则使用 SELinux。
AppArmor
AppArmor 通过定义可应用于主机上运行的进程的不同配置文件来实现其控制能力。这些配置文件可以限制对许多资源的访问,包括文件、网络流量和 Linux capabilities。
在安装了 AppArmor 的系统上,我们可以开始探索如何使用 sudo aa-status 命令来使其发挥作用。这将显示有关 AppArmor 配置和状态的信息。
aa-status 的输出
从这个输出中,我们可以看到几个有趣的信息:
-
AppArmor 已加载并正常工作。
-
系统上定义了 34 个配置文件。
-
目前,没有进程具有启用的 AppArmor 配置文件。
从容器化的角度来看,配置文件列表中最有趣的部分是 do