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 Modifying the self-provisioners ClusterRoleBinding is not allowed.
36 deny: {}
37 - name: check-self-provisioner-binding-with-subject
38 match:
39 any:
40 - resources:
41 kinds:
42 - ClusterRoleBinding
43 preconditions:
44 all:
45 - key: "{{request.object.metadata.name || ''}}"
46 operator: NotEquals
47 value: self-provisioners
48 validate:
49 message: >-
50 Binding to the self-provisioners cluster role is not allowed.
51 deny:
52 conditions:
53 all:
54 - key: self-provisioner
55 operator: AnyIn
56 value: "{{request.object.roleRef.name}}"