第 9 章 为容器创建 SELinux 策略
Red Hat Enterprise Linux 8 使用 udica
软件包提供为容器生成 SELinux 策略的工具。通过 udica
,您可以创建一个定制的安全策略来更好地控制容器如何访问主机系统资源,如存储、设备和网络。这可使您强化容器部署,以避免出现安全违规,并简化了规范合规性的实现和维护。
9.1. udica SELinux 策略生成器介绍
为了简化为自定义容器创建新 SELinux 策略,RHEL 8 提供了 udica
工具。您可以使用此工具基于容器的 JavaScript Object Notation(JSON)文件创建策略,该文件包含 Linux 功能、挂载点和端口定义。因此,该工具将使用检查结果生成的规则与从指定 SELinux 通用中间语言(CIL)块继承的规则合并。
使用 udica
为容器生成 SELinux 策略的过程有三个主要部分:
- 以 JSON 格式解析容器规格文件
- 根据第一部分的结果查找合适的允许规则
- 生成最终 SELinux 策略
在解析阶段,udica
会查找 Linux 功能、网络端口和挂载点。
根据结果,udica
检测到容器需要哪些 Linux 功能,并创建一个允许所有这些功能的 SELinux 规则。如果容器绑定到一个特定端口,udica
使用 SELinux 用户空间库来获取通过检查容器使用的端口的正确 SELinux 标签。
之后,udica
检测到哪些目录被挂载到主机中的容器文件系统名称空间中。
CIL 的块继承功能允许 udica
创建 SELinux 模板,允许规则专注于特定操作,例如:
- 允许访问主目录
- 允许访问日志文件
- 允许访问与 Xserver 的通讯。
这些模板称为块,最终 SELinux 策略通过合并这些块来创建。