All Policies

Require Non-Root Groups

Containers should be forbidden from running with a root primary or supplementary GID. This policy ensures the `runAsGroup`, `supplementalGroups`, and `fsGroup` fields are set to a number greater than zero (i.e., non root). A known issue prevents a policy such as this using `anyPattern` from being persisted properly in Kubernetes 1.23.0-1.23.2.

Policy Definition

/other/require-non-root-groups/require-non-root-groups.yaml

 1apiVersion: kyverno.io/v1
 2kind: ClusterPolicy
 3metadata:
 4  name: require-non-root-groups
 5  annotations:
 6    policies.kyverno.io/title: Require Non-Root Groups
 7    policies.kyverno.io/category: Sample, EKS Best Practices
 8    policies.kyverno.io/severity: medium
 9    policies.kyverno.io/minversion: 1.3.6
10    kyverno.io/kyverno-version: 1.6.0
11    kyverno.io/kubernetes-version: "1.22-1.23"
12    policies.kyverno.io/subject: Pod
13    policies.kyverno.io/description: >-
14      Containers should be forbidden from running with a root primary or supplementary GID.
15      This policy ensures the `runAsGroup`, `supplementalGroups`, and `fsGroup` fields are set to a number
16      greater than zero (i.e., non root). A known issue prevents a policy such as this
17      using `anyPattern` from being persisted properly in Kubernetes 1.23.0-1.23.2.
18spec:
19  validationFailureAction: Audit
20  background: true
21  rules:
22    - name: check-runasgroup
23      match:
24        any:
25        - resources:
26            kinds:
27              - Pod
28      validate:
29        message: >-
30          Running with root group IDs is disallowed. The fields
31          spec.securityContext.runAsGroup, spec.containers[*].securityContext.runAsGroup,
32          spec.initContainers[*].securityContext.runAsGroup, and
33          spec.ephemeralContainers[*].securityContext.runAsGroup must be
34          set to a value greater than zero.
35        anyPattern:
36        - spec:
37            securityContext:
38              runAsGroup: ">0"
39            =(ephemeralContainers):
40              - =(securityContext):
41                  =(runAsGroup): ">0"
42            =(initContainers):
43              - =(securityContext):
44                  =(runAsGroup): ">0"
45            containers:
46              - =(securityContext):
47                  =(runAsGroup): ">0"
48        - spec:
49            =(ephemeralContainers):
50              - securityContext:
51                  runAsGroup: ">0"
52            =(initContainers):
53              - securityContext:
54                  runAsGroup: ">0"
55            containers:
56              - securityContext:
57                  runAsGroup: ">0"
58    - name: check-supplementalgroups
59      match:
60        any:
61        - resources:
62            kinds:
63              - Pod
64      validate:
65        message: >-
66          Containers cannot run with a root primary or supplementary GID. The field
67          spec.securityContext.supplementalGroups must be unset or
68          set to a value greater than zero.
69        pattern:
70          spec:
71            =(securityContext):
72              =(supplementalGroups): ">0"
73    - name: check-fsgroup
74      match:
75        any:
76        - resources:
77            kinds:
78              - Pod
79      validate:
80        message: >-
81          Containers cannot run with a root primary or supplementary GID. The field
82          spec.securityContext.fsGroup must be unset or set to a value greater than zero.
83        pattern:
84          spec:
85            =(securityContext):
86              =(fsGroup): ">0"