第 9 章 为容器创建 SELinux 策略

Red Hat Enterprise Linux 9 使用 udica 软件包提供为容器生成 SELinux 策略的工具。通过 udica,您可以创建一个定制的安全策略来更好地控制容器如何访问主机系统资源,如存储、设备和网络。这可让强化容器部署以避免出现安全问题,并简化了规范合规性的实现和维护。

9.1. udica SELinux 策略生成器介绍

为了简化为自定义容器创建新 SELinux 策略,RHEL 9 提供了 udica 工具。您可以使用此工具基于容器的 JavaScript Object Notation(JSON)文件创建策略,该文件包含 Linux 功能、挂载点和端口定义。因此,该工具将使用检查结果生成的规则与从指定 SELinux 通用中间语言(CIL)块继承的规则合并。

使用 udica 为容器生成 SELinux 策略的过程有三个主要部分:

  1. 以 JSON 格式解析容器规格文件
  2. 根据第一部分的结果查找合适的允许规则
  3. 生成最终 SELinux 策略

在解析阶段,udica 会查找 Linux 功能、网络端口和挂载点。

根据结果,udica 检测到容器需要哪些 Linux 功能,并创建一个允许所有这些功能的 SELinux 规则。如果容器绑定到一个特定端口,udica 使用 SELinux 用户空间库来获取通过检查容器使用的端口的正确 SELinux 标签。

之后,udica 检测到哪些目录被挂载到主机中的容器文件系统名称空间中。

CIL 的块继承功能允许 udica 创建 SELinux 模板,允许规则专注于特定操作,例如:

  • 允许访问主目录
  • 允许访问日志文件
  • 允许访问与 Xserver 的通讯

这些模板称为块,最终 SELinux 策略通过合并这些块来创建。