seLinuxOptions 部分中指定的字段未应用于容器

问题描述 投票:0回答:0

我有一个本地 v1.24.6 Kubernetes 集群,在工作节点上启用了 selinux(设置为许可),这些节点运行 containerd 版本 1.6.15.

` [root@master-1 ~]# kubelet --version
Kubernetes v1.24.6

[root@master-1 ~]# kubectl get nodes
NAME       STATUS   ROLES           AGE    VERSION
master-1   Ready    control-plane   2d4h   v1.24.6
vm1        Ready    <none>          2d4h   v1.24.6
vm2        Ready    <none>          2d4h   v1.24.6
vm3        Ready    <none>          2d4h   v1.24.6

[root@master-1 dummy]# crictl --version
crictl version v1.24.0`

我正在尝试使用具有自定义 selinux 类型标签的容器启动 pod,但是在部署 pod 后标签没有应用到容器上。

The manifest for my pod

我正在使用 crictl inspect 为我正在运行的容器获取 JSON 文件,使用 udica 工具生成适当的 selinux 策略 .cil 文件并使用“semodule -i”应用自定义策略模块。然后我在应用 udica 建议的标签后重新启动容器。

容器使用通用 selinux 标签(spc_t 或 container_t)运行,而不是指定的标签,即本例中的“dummy_container.process”。

我使用 podman 创建了一个测试容器,使用 podman inspect 为我的容器获取 JSON 文件,并使用 udica 工具生成适当的 selinux 策略 .cil 文件。

` [root@master-1 dummy]# podman run --env container=podman -v /home:/home:ro -v /var/spool:/var/spool:rw -p 21:21 -d -it ubi8 bash

[root@master-1 dummy]# podman inspect 1765497df297 > test_container.json

[root@master-1 dummy]# udica -j test_container.json test_container

Policy test_container created!

Please load these modules using:
# semodule -i test_container.cil /usr/share/udica/templates/{base_container.cil,net_container.cil,home_container.cil}

Restart the container with: "--security-opt label=type:test_container.process" parameter

[root@master-1 dummy]# ls test_container.*
test_container.cil  test_container.json

`

然后我停止容器,应用自定义策略模块并重新启动容器,可以观察到进程正在以预期的标签运行。

` [root@master-1 dummy]# semodule -i test_container.cil /usr/share/udica/templates/{base_container.cil,net_container.cil,home_container.cil}

[root@master-1 dummy]# podman run --security-opt label=type:test_container.process -v /home:/home:ro -v /var/spool:/var/spool:rw -p 21:21 -d -it ubi8 bash

[root@master-1 dummy]# ps -efZ | grep -i test

system_u:system_r:test_container.process:s0:c275,c294 root 46403 46391 0 Mar04 pts/0 00:00:00 bash `

那么是容器运行时的问题还是别的什么?

kubernetes selinux containerd crictl
© www.soinside.com 2019 - 2024. All rights reserved.