All Policies
Require runAsNonRoot in CEL
Containers must be required to run as non-root. This policy ensures `runAsNonRoot` is set to true.
Policy Definition
/pod-security-cel/restricted/require-run-as-nonroot/require-run-as-nonroot.yaml
1apiVersion: kyverno.io/v1
2kind: ClusterPolicy
3metadata:
4 name: require-run-as-nonroot
5 annotations:
6 policies.kyverno.io/title: Require runAsNonRoot in CEL
7 policies.kyverno.io/category: Pod Security Standards (Restricted) in CEL
8 policies.kyverno.io/severity: medium
9 policies.kyverno.io/subject: Pod
10 policies.kyverno.io/minversion: 1.11.0
11 kyverno.io/kyverno-version: 1.11.0
12 kyverno.io/kubernetes-version: "1.26-1.27"
13 policies.kyverno.io/description: >-
14 Containers must be required to run as non-root. This policy ensures
15 `runAsNonRoot` is set to true.
16spec:
17 validationFailureAction: Audit
18 background: true
19 rules:
20 - name: run-as-non-root
21 match:
22 any:
23 - resources:
24 kinds:
25 - Pod
26 validate:
27 cel:
28 expressions:
29 - expression: >-
30 (
31 (
32 has(object.spec.securityContext) &&
33 has(object.spec.securityContext.runAsNonRoot) &&
34 object.spec.securityContext.runAsNonRoot == true
35 ) && (
36 (
37 object.spec.containers +
38 (has(object.spec.initContainers) ? object.spec.initContainers : []) +
39 (has(object.spec.ephemeralContainers) ? object.spec.ephemeralContainers : [])
40 ).all(container,
41 !has(container.securityContext) ||
42 !has(container.securityContext.runAsNonRoot) ||
43 container.securityContext.runAsNonRoot == true)
44 )
45 ) || (
46 (
47 object.spec.containers +
48 (has(object.spec.initContainers) ? object.spec.initContainers : []) +
49 (has(object.spec.ephemeralContainers) ? object.spec.ephemeralContainers : [])
50 ).all(container,
51 has(container.securityContext) &&
52 has(container.securityContext.runAsNonRoot) &&
53 container.securityContext.runAsNonRoot == true)
54 )
55 message: >-
56 Running as root is not allowed. Either the field spec.securityContext.runAsNonRoot or all of
57 spec.containers[*].securityContext.runAsNonRoot, spec.initContainers[*].securityContext.runAsNonRoot and
58 spec.ephemeralContainers[*].securityContext.runAsNonRoot, must be set to true.
59