All Policies

Disallow binding to self-provisioner cluster role in OpenShift

This policy prevents binding to the self-provisioners role for strict control of OpenShift project creation.

Policy Definition

/openshift/disallow-self-provisioner-binding/disallow-self-provisioner-binding.yaml

 1apiVersion: kyverno.io/v1
 2kind: ClusterPolicy
 3metadata:
 4  name: disallow-self-provisioner-binding
 5  annotations:
 6    policies.kyverno.io/title: Disallow binding to self-provisioner cluster role in OpenShift
 7    policies.kyverno.io/category: OpenShift
 8    policies.kyverno.io/severity: high
 9    kyverno.io/kyverno-version: 1.6.0
10    policies.kyverno.io/minversion: 1.6.0
11    kyverno.io/kubernetes-version: "1.20"
12    policies.kyverno.io/subject: ClusterRoleBinding, RBAC
13    policies.kyverno.io/description: >-
14            This policy prevents binding to the self-provisioners role for strict control of OpenShift project creation.
15spec:
16  validationFailureAction: enforce
17  background: true
18  rules:
19  - name: check-self-provisioner-binding-no-subject
20    match:
21      any:
22      - resources:
23          kinds:
24          - ClusterRoleBinding
25    preconditions:
26      all:
27      - key: "{{request.object.metadata.name}}"
28        operator: Equals
29        value: self-provisioners
30      - key: "{{request.operation || 'BACKGROUND'}}"
31        operator: Equals
32        value: UPDATE
33    validate:
34      message: >-
35                Binding to the self-provisioners cluster role is not allowed.
36      pattern:
37        =(subjects): {}
38  - name: check-self-provisioner-binding-with-subject
39    match:
40      any:
41      - resources:
42          kinds:
43          - ClusterRoleBinding
44    preconditions:
45      all:
46      - key: "{{request.object.metadata.name || ''}}"
47        operator: NotEquals
48        value: self-provisioners
49    validate:
50      message: >-
51                Binding to the self-provisioners cluster role is not allowed.
52      deny:
53        conditions:
54          all:
55          - key: self-provisioner
56            operator: AnyIn
57            value: "{{request.object.roleRef.name}}"