se linux не работает в контейнере с se linux -enable = true - PullRequest
0 голосов
/ 11 апреля 2020

У меня есть два кластера k8s, один с использованием docker, а другой с использованием containerd, оба с включенным se linux. но я обнаружил, что se linux на самом деле не работает над контейнером, хотя эти два кластера имеют одинаковую версию containerd и запускают c.

я пропустил некоторые настройки с containerd?

docker: метка файла container_file_t , и процесс запускается как container_t , se linux отлично работает

K8s version: 1.17
Docker version: 19.03.6
Containerd version: 1.2.10
selinux enable by adding ["selinux-enabled": true] to /etc/docker/daemon.json

// create pod using tomcat official image then check the process and file label
# kubectl exec tomcat -it -- ps -eZ
LABEL                             PID TTY          TIME CMD
system_u:system_r:container_t:s0:c655,c743          1 ?        00:00:00 java

# ls -Z /usr/local/openjdk-8/bin/java
system_u:object_r:container_file_t:s0:c655,c743 /usr/local/openjdk-8/bin/java

containerd: метка файла container_var_lib_t , а процесс запускается как spc_t , se linux не имеет смысла

K8s version: 1.15
Containerd version: 1.2.10
selinux enable by setting [enable_selinux = true] in /etc/containerd/config.toml

// create pod using tomcat official image then check the process and file label
# kubectl exec tomcat -it -- ps -eZ
LABEL                             PID TTY          TIME CMD
system_u:system_r:spc_t:s0          1 ?        00:00:00 java

# ls -Z /usr/local/openjdk-8/bin/java
system_u:object_r:container_var_lib_t:s0 /usr/local/openjdk-8/bin/java

// seems run as spc_t is correct
# sesearch -T -t container_var_lib_t | grep spc_t
   type_transition container_runtime_t container_var_lib_t : process spc_t;

1 Ответ

1 голос
/ 14 апреля 2020

Из этого выпуска мы можем прочитать:

Containerd включает минимальную поддержку SE Linux. Точнее, он содержит поддержку для запуска систем, использующих SE Linux, но не использует SE Linux для повышения безопасности контейнеров.

Все контейнеры работают с меткой system_u:system_r:container_runtime_t:s0, но не дальнейшая сегментация сделана

Нет полной поддержки того, что вы делаете с помощью Containerd. Ваш подход правильный, но проблема заключается в отсутствии поддержки этой функции.

...