0

我已经通过AppArmor 的 wiki 的 wiki进行了搜索,并尝试在 Internet 上搜索“apparmor mount namespace”(或类似名称)。然而,我总是对 AppArmor 如何处理它们持空白,考虑到 OCI 容器在没有挂载命名空间的情况下就无法存在,这尤其奇怪。AppArmor 是否将挂载命名空间纳入任何帐户,还是只是检查传递给某个系统调用的文件名?

如果容器内的进程切换挂载命名空间,AppArmor 是否会注意到,或者它只是挂载命名空间不可知,因为它不关心?例如,如果一个容器进程切换到初始挂载命名空间,我是否可以编写 AppArmor MAC 规则来防止这样的进程访问敏感的主机文件,而允许访问自己容器内的相同文件?

4

2 回答 2

0

我会说 AppArmor 部分是 linux 内核挂载命名空间感知的。我认为 apparmor 中的 attach_disconnected 标志表明 apparmor 知道您是在主 OS 挂载命名空间还是单独的挂载命名空间中。

attach_disconnected 标志在此链接中进行了简要描述(尽管页面顶部的警告声称是草稿): https ://gitlab.com/apparmor/apparmor/-/wikis/AppArmor_Core_Policy_Reference

以下参考资料来自 ubuntu apparmor 讨论,虽然没有直接回答您的问题,但提供了有用的相关信息。 https://lists.ubuntu.com/archives/apparmor/2018-July/011722.html

以下参考资料来自一个 usenix 演示文稿,提供了将安全命名空间添加到 Linux 内核以供 apparmor 等框架使用的建议。这并没有直接显示 apparmor 当前如何 / 如果 apparmor 使用内核挂载命名空间进行决策,但它的相关性足以引起人们的兴趣。 https://www.usenix.org/sites/default/files/conference/protected-files/security18_slides_sun.pdf https://www.usenix.org/conference/usenixsecurity18/presentation/sun

我不知道我在这里的回答是否足够完整,可以被视为对您问题的完整回答,但是我没有足够的声誉点来发表评论。当单独指定“命名空间”这个词时,我还发现很难知道 AppArmor 文档的含义是“apparmor 策略命名空间”还是“linux 内核挂载命名空间”。

于 2021-06-07T15:56:53.843 回答
0

我可以编写 AppArmor MAC 规则来防止这样的进程访问敏感的主机文件吗?

只是不要让容器访问敏感的主机文件系统部分。这意味着不要将它们安装到容器中。如果您这样做,这超出了 AppArmor 的范围。

于 2021-02-20T20:13:21.347 回答