Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package container-selinux for openSUSE:Factory checked in at 2022-06-22 16:18:16 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/container-selinux (Old) and /work/SRC/openSUSE:Factory/.container-selinux.new.1548 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "container-selinux" Wed Jun 22 16:18:16 2022 rev:12 rq: version:2.187.0 Changes: -------- --- /work/SRC/openSUSE:Factory/container-selinux/container-selinux.changes 2022-03-28 16:58:58.960840710 +0200 +++ /work/SRC/openSUSE:Factory/.container-selinux.new.1548/container-selinux.changes 2022-06-22 16:18:17.496539657 +0200 @@ -1,0 +2,15 @@ +Wed Jun 22 13:17:49 UTC 2022 - Frederic Crozat <fcro...@suse.com> + +- Update to version 2.187.0: + * Allow container domains to use /dev/zero +- Changes from 2.186.0: + * Create policy for a container_device_t + * Allow containers to shutdown & setopt userdomain:sockets +- Changes from 2.183.0: + * Allow containers to inherit all socket classes from container runtimes. +- Changes from 2.182.0: + * Allow containers to inherit all socket classes +- Changes from 2.181.0: + * Allow socket activated domains for tcp sockets from init_t and userdomains. + +------------------------------------------------------------------- Old: ---- v2.180.0.tar.gz New: ---- v2.187.0.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ container-selinux.spec ++++++ --- /var/tmp/diff_new_pack.ow6Yg9/_old 2022-06-22 16:18:18.132540591 +0200 +++ /var/tmp/diff_new_pack.ow6Yg9/_new 2022-06-22 16:18:18.136540597 +0200 @@ -26,7 +26,7 @@ # Version of SELinux we were using %define selinux_policyver %(rpm -q selinux-policy --qf '%%{version}') Name: container-selinux -Version: 2.180.0 +Version: 2.187.0 Release: 0 Summary: SELinux policies for container runtimes License: GPL-2.0-only ++++++ v2.180.0.tar.gz -> v2.187.0.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/container-selinux-2.180.0/container.fc new/container-selinux-2.187.0/container.fc --- old/container-selinux-2.180.0/container.fc 2022-03-03 15:20:15.000000000 +0100 +++ new/container-selinux-2.187.0/container.fc 2022-05-24 18:37:23.000000000 +0200 @@ -5,10 +5,10 @@ /usr/libexec/docker/docker.* -- gen_context(system_u:object_r:container_runtime_exec_t,s0) /usr/local/libexec/docker/docker.* -- gen_context(system_u:object_r:container_runtime_exec_t,s0) /usr/s?bin/docker.* -- gen_context(system_u:object_r:container_runtime_exec_t,s0) -/usr/s?bin/kubelet.* -- gen_context(system_u:object_r:container_runtime_exec_t,s0) -/usr/local/s?bin/kubelet.* -- gen_context(system_u:object_r:container_runtime_exec_t,s0) -/usr/s?bin/hyperkube.* -- gen_context(system_u:object_r:container_runtime_exec_t,s0) -/usr/local/s?bin/hyperkube.* -- gen_context(system_u:object_r:container_runtime_exec_t,s0) +/usr/s?bin/kubelet.* -- gen_context(system_u:object_r:kubelet_exec_t,s0) +/usr/local/s?bin/kubelet.* -- gen_context(system_u:object_r:kubelet_exec_t,s0) +/usr/s?bin/hyperkube.* -- gen_context(system_u:object_r:kubelet_exec_t,s0) +/usr/local/s?bin/hyperkube.* -- gen_context(system_u:object_r:kubelet_exec_t,s0) /usr/local/s?bin/docker.* -- gen_context(system_u:object_r:container_runtime_exec_t,s0) /usr/s?bin/containerd.* -- gen_context(system_u:object_r:container_runtime_exec_t,s0) /usr/local/s?bin/containerd.* -- gen_context(system_u:object_r:container_runtime_exec_t,s0) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/container-selinux-2.180.0/container.if new/container-selinux-2.187.0/container.if --- old/container-selinux-2.180.0/container.if 2022-03-03 15:20:15.000000000 +0100 +++ new/container-selinux-2.187.0/container.if 2022-05-24 18:37:23.000000000 +0200 @@ -881,3 +881,67 @@ allow $1 spc_t:fifo_file rw_inherited_fifo_file_perms; ') + +######################################## +## <summary> +## Execute container in the container domain. +## </summary> +## <param name="domain"> +## <summary> +## Domain allowed to transition. +## </summary> +## </param> +# +interface(`container_kubelet_domtrans',` + gen_require(` + type kubelet_t, kubelet_exec_t; + ') + + corecmd_search_bin($1) + domtrans_pattern($1, kubelet_exec_t, kubelet_t) +') + +######################################## +## <summary> +## Execute kubelet_exec_t in the kubelet_t domain +## </summary> +## <param name="domain"> +## <summary> +## Domain allowed to transition. +## </summary> +## </param> +## <param name="role"> +## <summary> +## Role allowed access. +## </summary> +## </param> +## <rolecap/> +# +interface(`container_kubelet_run',` + gen_require(` + type kubelet_t; + class dbus send_msg; + ') + + container_kubelet_domtrans($1) + role $2 types kubelet_t; +') + +######################################## +## <summary> +## Connect to kubelet over a unix stream socket. +## </summary> +## <param name="domain"> +## <summary> +## Domain allowed access. +## </summary> +## </param> +# +interface(`container_kubelet_stream_connect',` + gen_require(` + type kubelet_t, container_var_run_t; + ') + + files_search_pids($1) + stream_connect_pattern($1, container_var_run_t, container_var_run_t, kubelet_t) +') diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/container-selinux-2.180.0/container.te new/container-selinux-2.187.0/container.te --- old/container-selinux-2.180.0/container.te 2022-03-03 15:20:15.000000000 +0100 +++ new/container-selinux-2.187.0/container.te 2022-05-24 18:37:23.000000000 +0200 @@ -1,4 +1,4 @@ -policy_module(container, 2.180.0) +policy_module(container, 2.187.0) gen_require(` class passwd rootok; @@ -482,6 +482,7 @@ userdom_use_inherited_user_terminals(container_runtime_domain) userdom_use_user_ptys(container_runtime_domain) userdom_connectto_stream(container_runtime_domain) +allow container_domain init_t:socket_class_set { accept ioctl read getattr lock write append getopt }; tunable_policy(`virt_use_nfs',` fs_manage_nfs_dirs(container_runtime_domain) @@ -836,6 +837,7 @@ dev_getattr_mtrr_dev(container_domain) dev_list_sysfs(container_domain) dev_rw_kvm(container_domain) +dev_rwx_zero(container_domain) allow container_domain self:key manage_key_perms; dontaudit container_domain container_domain:key search; @@ -851,9 +853,7 @@ allow container_domain self:passwd rootok; allow container_domain self:filesystem associate; allow container_domain self:netlink_kobject_uevent_socket create_socket_perms; -allow container_domain container_runtime_domain:unix_stream_socket { accept ioctl read getattr lock write append getopt setopt }; -allow container_domain container_runtime_domain:tcp_socket { accept ioctl read getattr lock write append getopt setopt }; -allow container_domain container_runtime_domain:udp_socket { accept ioctl read getattr lock write append getopt setopt }; +allow container_domain container_runtime_domain:socket_class_set { accept ioctl read getattr lock write append getopt setopt }; kernel_getattr_proc(container_domain) kernel_list_all_proc(container_domain) @@ -1007,6 +1007,7 @@ fs_manage_fusefs_named_pipes(container_domain) fs_exec_fusefs_files(container_domain) fs_unmount_xattr_fs(container_domain) +fs_remount_xattr_fs(container_domain) fs_mount_fusefs(container_domain) fs_unmount_fusefs(container_domain) fs_mounton_fusefs(container_domain) @@ -1168,7 +1169,7 @@ allow staff_t container_runtime_t:process signal_perms; allow staff_t container_domain:process signal_perms; - allow container_domain userdomain:unix_stream_socket { accept ioctl read getattr lock write append getopt }; + allow container_domain userdomain:socket_class_set { accept ioctl read getattr lock write append getopt shutdown setopt }; ') gen_require(` @@ -1298,3 +1299,67 @@ kernel_mounton_proc(container_engine_t) kernel_mounton_systemd_ProtectKernelTunables(container_engine_t) term_mount_pty_fs(container_engine_t) + +type kubelet_t, container_runtime_domain; +domain_type(kubelet_t) + +optional_policy(` + gen_require(` + role unconfined_r; + ') + role unconfined_r types kubelet_t; + unconfined_domain(kubelet_t) +') + + +type kubelet_exec_t; +application_executable_file(kubelet_exec_t) +can_exec(container_runtime_t, kubelet_exec_t) +allow kubelet_t kubelet_exec_t:file entrypoint; + +ifdef(`enable_mcs',` + init_ranged_daemon_domain(kubelet_t, kubelet_exec_t, s0 - mcs_systemhigh) +') + +ifdef(`enable_mls',` + init_ranged_daemon_domain(kubelet_t, kubelet_exec_t, s0 - mls_systemhigh) +') +mls_trusted_object(kubelet_t) + +init_daemon_domain(kubelet_t, kubelet_exec_t) + +admin_pattern(kubelet_t, kubernetes_file_t) + +optional_policy(` + gen_require(` + type sysadm_t; + role sysadm_r; + attribute userdomain; + role unconfined_r; + ') + + container_kubelet_run(sysadm_t, sysadm_r) + + unconfined_run_to(kubelet_t, kubelet_exec_t) + role_transition unconfined_r kubelet_exec_t system_r; +') + +# Standard container which needs to be allowed to use any device +container_domain_template(container_device) +allow container_device_t device_node:chr_file rw_chr_file_perms; + +# Standard container which needs to be allowed to use any device and +# communicate with kubelet +container_domain_template(container_device_plugin) +allow container_device_plugin_t device_node:chr_file rw_chr_file_perms; +dev_rw_sysfs(container_device_plugin_t) +container_kubelet_stream_connect(container_device_plugin_t) + +# Standard container which needs to be allowed to use any device and +# modify kubelet configuration +container_domain_template(container_device_plugin_init) +allow container_device_plugin_init_t device_node:chr_file rw_chr_file_perms; +dev_rw_sysfs(container_device_plugin_init_t) +manage_dirs_pattern(container_device_plugin_init_t, kubernetes_file_t, kubernetes_file_t) +manage_files_pattern(container_device_plugin_init_t, kubernetes_file_t, kubernetes_file_t) +manage_lnk_files_pattern(container_device_plugin_init_t, kubernetes_file_t, kubernetes_file_t)