All Policies
Service Mesh Require runAsNonRoot
This policy is a variation of the Require runAsNonRoot policy that is a part of the Pod Security Standards (Restricted) category. It enforces the same control but with provisions for Istio's initContainer. For more information and context, see the Kyverno blog post at https://kyverno.io/blog/2024/02/04/securing-services-meshes-easier-with-kyverno/.
Policy Definition
/istio/service-mesh-require-run-as-nonroot/service-mesh-require-run-as-nonroot.yaml
1apiVersion: kyverno.io/v1
2kind: ClusterPolicy
3metadata:
4 name: service-mesh-require-run-as-nonroot
5 annotations:
6 policies.kyverno.io/title: Service Mesh Require runAsNonRoot
7 policies.kyverno.io/category: Istio, Pod Security Standards (Restricted)
8 policies.kyverno.io/severity: medium
9 kyverno.io/kyverno-version: 1.12.3
10 kyverno.io/kubernetes-version: "1.28"
11 policies.kyverno.io/subject: Pod
12 policies.kyverno.io/description: >-
13 This policy is a variation of the Require runAsNonRoot policy that is a part of the
14 Pod Security Standards (Restricted) category. It enforces the same control but with
15 provisions for Istio's initContainer. For more information and context,
16 see the Kyverno blog post at https://kyverno.io/blog/2024/02/04/securing-services-meshes-easier-with-kyverno/.
17spec:
18 validationFailureAction: Audit
19 background: true
20 rules:
21 - name: run-as-non-root-istio
22 match:
23 any:
24 - resources:
25 kinds:
26 - Pod
27 validate:
28 message: >-
29 Running as root is not allowed. Either the field spec.securityContext.runAsNonRoot
30 must be set to `true`, or the fields spec.containers[*].securityContext.runAsNonRoot,
31 spec.initContainers[*].securityContext.runAsNonRoot, and spec.ephemeralContainers[*].securityContext.runAsNonRoot
32 must be set to `true`.
33 anyPattern:
34 - spec:
35 securityContext:
36 runAsNonRoot: true
37 =(ephemeralContainers):
38 - =(securityContext):
39 =(runAsNonRoot): true
40 =(initContainers):
41 - (image): "!*istio/proxyv2*"
42 =(securityContext):
43 =(runAsNonRoot): true
44 containers:
45 - =(securityContext):
46 =(runAsNonRoot): true
47 - spec:
48 =(ephemeralContainers):
49 - securityContext:
50 runAsNonRoot: true
51 =(initContainers):
52 - (image): "!*istio/proxyv2*"
53 securityContext:
54 runAsNonRoot: true
55 containers:
56 - securityContext:
57 runAsNonRoot: true