我在一家公司工作,我们需要分发在公司内部运行 SE-Linux 的图像。
产品采用虚拟化为了增加安全性,我们设置了一个 Linux 主机,运行多个qemu-kvm 客户机. kvm 客户端的操作系统是Debian。
我可以在客户机上手动安装 selinux,也可以激活 SELinux(sestatus 验证它正在运行并且文件被正确地自动标记)。
下一步就是创建我们自己的模块和角色,并为客户机映像中的每个进程和文件设置正确的上下文。
然而我需要的是自动化这安装 + 标签 + 配置的过程linux系统在构建过程中。我们无法构建没有 selinux 的正常映像,然后在每台机器上手动安装 selinux。我们希望预先配置图像一切已正常运行。
构建过程在码头工人-image,将在其中创建和配置 kvm-guest 映像。
当我尝试在 docker-image 中安装 selinux 时,GitLab 会因为错误而无法构建该镜像。(我可以在 docker 镜像中的本地机器上手动安装 selinux,但是 sestatus 显示 SELinux 已被禁用,因此我无法让 docker 100% 成功运行 fixfile relabel)
到目前为止,我在几个小时的研究中发现的只有:
- 如何使用已启动并运行的 SELinux 标记文件
- 如何制作自己的模块并使用它们
- 整个 SELinux 概念如何运作
- 如何手动安装(总是需要重启)
- 如何使用 sVirt 提高主机和客户虚拟机之间的安全性
我到处都找不到的东西:
- 如何在构建映像期间在 guest-vm 映像中安装 SE-Linux。
更多细节:
我认为 docker 需要 selinux-packages 或正在运行的 selinux-installation,以便能够在已安装的文件系统中正确设置 selinux,其中包含我们软件的所有文件。我可以尝试像这样可视化设置:
Docker
-> run build scripts using a mnt-directory inside docker
->Inside mnt-directory install selinux and label files and setup modules and contexts
在这种情况下,mnt 目录将代表客户 kvm 的图像而不是主机的图像。
如果有人详细的有关如何做到这一点的信息,我将不胜感激!