apparmor.d/apparmor.d/groups/virt/k3s
2022-07-19 14:34:31 +02:00

188 lines
5.8 KiB
Text

# apparmor.d - Full set of apparmor profiles
# Copyright (C) 2022 Jeroen Rijken
# SPDX-License-Identifier: GPL-2.0-only
abi <abi/3.0>,
include <tunables/global>
@{exec_path} = /{usr/,}{local/,}bin/k3s
profile k3s @{exec_path} flags=(complain) {
include <abstractions/base>
include <abstractions/disks-read>
include <abstractions/nameservice-strict>
include <abstractions/ssl_certs>
capability chown,
capability dac_override,
capability dac_read_search,
capability net_admin,
capability syslog,
capability sys_admin,
capability sys_resource,
ptrace peer=@{profile_name},
ptrace (read) peer=unconfined,
network inet dgram,
network inet6 dgram,
network inet stream,
network inet6 stream,
network netlink raw,
mount /var/lib/kubelet/pods/@{uuid}/volumes/kubernetes.io~*/{,**/},
umount /var/lib/kubelet/pods/@{uuid}/volumes/kubernetes.io~*/{,**/},
signal (send, receive) set=term,
@{exec_path} mr,
/{usr/,}bin/kmod rPx,
/{usr/,}bin/mount rPx,
/{usr/,}bin/systemd-run rix,
/{usr/,}{s,}bin/xtables-nft-multi rCx -> xtables-nft-multi,
@{libexec}/kubernetes/kubelet-plugins/volume/exec/nodeagent~uds/uds rix,
/var/lib/rancher/k3s/data/[0-9a-f]*/bin/* rix,
@{libexec}/kubernetes/kubelet-plugins/volume/exec/{,**} r,
/usr/share/mime/globs2 r,
/etc/machine-id r,
/etc/rancher/k3s/{,**} r,
/etc/rancher/k3s/k3s.yaml rw,
/etc/rancher/node/password r,
/var/lib/rancher/k3s/{,**} r,
/var/lib/rancher/k3s/agent/** rw,
/var/lib/rancher/k3s/server/** rw,
/var/lib/rancher/k3s/server/db/** rwk,
# k3s want's to basically manage all directories and create some specific files.
/var/lib/kubelet/{,**/} rw,
/var/lib/kubelet/{cpu_manager_state,memory_manager_state} r,
/var/lib/kubelet/device-plugins/{,DEPRECATION,kubelet.sock} rw,
/var/lib/kubelet/pod-resources/{kubelet.sock,[0-9]*} rw,
/var/lib/kubelet/pods/@{uuid}/containers/*/[0-9a-f]* rw,
/var/lib/kubelet/pods/@{uuid}/etc-hosts rw,
/var/lib/kubelet/pods/@{uuid}/plugins/kubernetes.io~*/{,**} rw,
/var/lib/kubelet/pods/@{uuid}/volumes/kubernetes.io~*/{,**} rw,
/var/lib/kubelet/pods/@{uuid}/**/ca.crt rw,
/var/lib/kubelet/pods/@{uuid}/**/namespace rw,
/var/lib/kubelet/pods/@{uuid}/**/token rw,
/var/log/containers/ r,
/var/log/containers/** rw,
/var/log/rancher/{,**} r,
/var/log/kubelet/{,**} r,
/var/log/kubernetes/{,**} r,
/var/log/kubernetes/audit/** rw,
/var/log/pods/{,**} r,
/var/log/pods/{,**/} rw,
/var/log/pods/**/[0-9]*.log rw,
owner @{HOME}/.kube/cache/discovery/{,**} rw,
owner @{HOME}/.kube/cache/http/[0-9a-z]* rw,
owner @{HOME}/.kube/cache/http/.diskv-temp/[0-9]* rw,
@{run}/containerd/containerd.sock rw,
@{run}/systemd/notify w,
@{run}/systemd/private rw,
@{run}/systemd/resolve/resolv.conf r,
@{run}/nodeagent/ rw,
@{run}/xtables.lock rwk,
owner /var/tmp/etilqs_[0-9a-f]* rw,
owner @{PROC}/@{pids}/cgroup r,
owner @{PROC}/@{pids}/cpuset r,
owner @{PROC}/@{pids}/mounts r,
owner @{PROC}/@{pids}/mountinfo r,
@{PROC}/@{pids}/net/dev r,
@{PROC}/@{pids}/net/ip_tables_names r,
owner @{PROC}/@{pids}/net/ipv6_route r,
owner @{PROC}/@{pids}/net/route r,
owner @{PROC}/@{pids}/oom_score_adj rw,
owner @{PROC}/@{pids}/stat r,
owner @{PROC}/@{pids}/uid_map r,
@{PROC}/diskstats r,
@{PROC}/modules r,
@{PROC}/sys/fs/pipe-max-size r,
@{PROC}/sys/net/core/somaxconn r,
@{PROC}/sys/net/ipv4/conf/all/* rw,
@{PROC}/sys/net/ipv4/conf/default/* rw,
@{PROC}/sys/net/bridge/bridge-nf-call-iptables r,
@{PROC}/sys/net/netfilter/* rw,
@{PROC}/sys/kernel/keys/* r,
@{PROC}/sys/kernel/panic rw,
@{PROC}/sys/kernel/panic_on_oom rw,
@{PROC}/sys/kernel/panic_on_oops rw,
@{PROC}/sys/kernel/pid_max r,
@{PROC}/sys/kernel/osrelease r,
@{PROC}/sys/vm/overcommit_memory rw,
@{PROC}/sys/vm/panic_on_oom r,
@{sys}/class/net/ r,
@{sys}/devices/pci[0-9]*/**/net/*/{address,mtu,speed} r,
@{sys}/devices/system/edac/mc/ r,
@{sys}/devices/system/cpu/ r,
@{sys}/devices/system/cpu/cpu[0-9]*/cache/{,**} r,
@{sys}/devices/system/cpu/cpu[0-9]*/topology/{,**} r,
@{sys}/devices/system/cpu/present{,/} r,
@{sys}/devices/virtual/net/cali[0-9a-f]*/{address,mtu,speed} r,
@{sys}/devices/virtual/net/vxlan.calico/{address,mtu,speed} r,
@{sys}/devices/system/node/ r,
@{sys}/devices/system/node/node[0-9]*/ r,
@{sys}/devices/system/node/node[0-9]*/{cpumap,distance,meminfo} r,
@{sys}/devices/system/node/node[0-9]*/hugepages/{,**} r,
@{sys}/devices/virtual/dmi/id/* r,
@{sys}/fs/cgroup/{,*,*/} r,
@{sys}/fs/cgroup/cgroup.subtree_control rw,
@{sys}/fs/cgroup/kubepods/{,**} rw,
@{sys}/fs/cgroup/system.slice/{,**/} r,
@{sys}/fs/cgroup/system.slice/k3s.service/* r,
@{sys}/fs/cgroup/user.slice/ r,
@{sys}/fs/cgroup/user.slice/user-@{uid}.slice/ r,
@{sys}/fs/cgroup/user.slice/user-@{uid}.slice/user-runtime-dir@@{uid}.service/ r,
@{sys}/fs/cgroup/user.slice/user-@{uid}.slice/user@@{uid}.service/{,**/} r,
@{sys}/fs/cgroup/user.slice/user-@{uid}.slice/session-[0-9]*.scope/{,**/} r,
@{sys}/kernel/mm/hugepages/ r,
@{sys}/kernel/mm/transparent_hugepage/hpage_pmd_size r,
@{sys}/kernel/mm/hugepages/hugepages-*/nr_hugepages r,
@{sys}/module/apparmor/parameters/enabled r,
/dev/kmsg r,
profile xtables-nft-multi flags=(complain) {
include <abstractions/base>
include <abstractions/nameservice-strict>
capability net_admin,
capability net_raw,
network inet dgram,
network inet6 dgram,
network inet raw,
network inet6 raw,
network inet stream,
network inet6 stream,
network netlink raw,
/{usr/,}{s,}bin/xtables-nft-multi mr,
/etc/libnl/classid r,
/etc/iptables/{,**} rw,
/etc/nftables.conf rw,
@{PROC}/@{pids}/net/ip_tables_names r,
/dev/pts/[0-9]* rw,
}
include if exists <local/k3s>
}