Back to Policies

Disallow SELinux

SELinux options can be used to escalate privileges and should not be allowed. This policy ensures that the `seLinuxOptions` field is undefined.

View on GitHub

Policy Definition

apiVersion: kyverno.io/v1
kind: ClusterPolicy
metadata:
name: disallow-selinux
annotations:
policies.kyverno.io/title: Disallow SELinux
policies.kyverno.io/category: Pod Security Standards (Baseline)
policies.kyverno.io/severity: medium
policies.kyverno.io/subject: Pod
kyverno.io/kyverno-version: 1.6.0
kyverno.io/kubernetes-version: 1.22-1.23
policies.kyverno.io/description: SELinux options can be used to escalate privileges and should not be allowed. This policy ensures that the `seLinuxOptions` field is undefined.
spec:
validationFailureAction: Audit
background: true
rules:
- name: selinux-type
match:
any:
- resources:
kinds:
- Pod
validate:
message: Setting the SELinux type is restricted. The fields spec.securityContext.seLinuxOptions.type, spec.containers[*].securityContext.seLinuxOptions.type, , spec.initContainers[*].securityContext.seLinuxOptions, and spec.ephemeralContainers[*].securityContext.seLinuxOptions.type must either be unset or set to one of the allowed values (container_t, container_init_t, or container_kvm_t).
pattern:
spec:
"=(securityContext)":
"=(seLinuxOptions)":
"=(type)": container_t | container_init_t | container_kvm_t
"=(ephemeralContainers)":
- "=(securityContext)":
"=(seLinuxOptions)":
"=(type)": container_t | container_init_t | container_kvm_t
"=(initContainers)":
- "=(securityContext)":
"=(seLinuxOptions)":
"=(type)": container_t | container_init_t | container_kvm_t
containers:
- "=(securityContext)":
"=(seLinuxOptions)":
"=(type)": container_t | container_init_t | container_kvm_t
- name: selinux-user-role
match:
any:
- resources:
kinds:
- Pod
validate:
message: Setting the SELinux user or role is forbidden. The fields spec.securityContext.seLinuxOptions.user, spec.securityContext.seLinuxOptions.role, spec.containers[*].securityContext.seLinuxOptions.user, spec.containers[*].securityContext.seLinuxOptions.role, spec.initContainers[*].securityContext.seLinuxOptions.user, spec.initContainers[*].securityContext.seLinuxOptions.role, spec.ephemeralContainers[*].securityContext.seLinuxOptions.user, and spec.ephemeralContainers[*].securityContext.seLinuxOptions.role must be unset.
pattern:
spec:
"=(securityContext)":
"=(seLinuxOptions)":
X(user): "null"
X(role): "null"
"=(ephemeralContainers)":
- "=(securityContext)":
"=(seLinuxOptions)":
X(user): "null"
X(role): "null"
"=(initContainers)":
- "=(securityContext)":
"=(seLinuxOptions)":
X(user): "null"
X(role): "null"
containers:
- "=(securityContext)":
"=(seLinuxOptions)":
X(user): "null"
X(role): "null"

Related Policies