Skip to content

Commit 616a923

Browse files
committed
v2: correct and test controller RBAC
Prior to this commit the declared permissions for the RedpandaReconciler had become out of date. This went unnoticed due to tests utilizing admin permissions or the inflated permissions required for executing `rpk debug bundle`. This commit corrects the permission declaration of the RedpandaReconciler, updates its tests to use the ClusterRole and Role generated by controller-gen, and adds a test to statically assert the correctness of the permissions.
1 parent 3a34a83 commit 616a923

File tree

13 files changed

+628
-180
lines changed

13 files changed

+628
-180
lines changed

operator/config/rbac/bases/operator/role.yaml

Lines changed: 19 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -97,10 +97,10 @@ rules:
9797
- apiGroups:
9898
- cluster.redpanda.com
9999
resources:
100-
- schemas
101-
- topics
102-
- users
100+
- redpandas
103101
verbs:
102+
- create
103+
- delete
104104
- get
105105
- list
106106
- patch
@@ -109,6 +109,7 @@ rules:
109109
- apiGroups:
110110
- cluster.redpanda.com
111111
resources:
112+
- redpandas/finalizers
112113
- schemas/finalizers
113114
- topics/finalizers
114115
- users/finalizers
@@ -117,13 +118,26 @@ rules:
117118
- apiGroups:
118119
- cluster.redpanda.com
119120
resources:
121+
- redpandas/status
120122
- schemas/status
121123
- topics/status
122124
- users/status
123125
verbs:
124126
- get
125127
- patch
126128
- update
129+
- apiGroups:
130+
- cluster.redpanda.com
131+
resources:
132+
- schemas
133+
- topics
134+
- users
135+
verbs:
136+
- get
137+
- list
138+
- patch
139+
- update
140+
- watch
127141
- apiGroups:
128142
- networking.k8s.io
129143
resources:
@@ -155,6 +169,7 @@ rules:
155169
- clusterroles
156170
verbs:
157171
- create
172+
- delete
158173
- get
159174
- list
160175
- patch
@@ -309,50 +324,6 @@ rules:
309324
- patch
310325
- update
311326
- watch
312-
- apiGroups:
313-
- cluster.redpanda.com
314-
resources:
315-
- redpandas
316-
verbs:
317-
- create
318-
- delete
319-
- get
320-
- list
321-
- patch
322-
- update
323-
- watch
324-
- apiGroups:
325-
- cluster.redpanda.com
326-
resources:
327-
- redpandas/finalizers
328-
- schemas/finalizers
329-
- topics/finalizers
330-
- users/finalizers
331-
verbs:
332-
- update
333-
- apiGroups:
334-
- cluster.redpanda.com
335-
resources:
336-
- redpandas/status
337-
- schemas/status
338-
- topics/status
339-
- users/status
340-
verbs:
341-
- get
342-
- patch
343-
- update
344-
- apiGroups:
345-
- cluster.redpanda.com
346-
resources:
347-
- schemas
348-
- topics
349-
- users
350-
verbs:
351-
- get
352-
- list
353-
- patch
354-
- update
355-
- watch
356327
- apiGroups:
357328
- coordination.k8s.io
358329
resources:
@@ -394,6 +365,7 @@ rules:
394365
- apiGroups:
395366
- monitoring.coreos.com
396367
resources:
368+
- podmonitors
397369
- servicemonitors
398370
verbs:
399371
- create

operator/config/rbac/v2-manager-role/role.yaml

Lines changed: 45 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,9 @@ rules:
77
- apiGroups:
88
- ""
99
resources:
10+
- configmaps
1011
- nodes
12+
- secrets
1113
verbs:
1214
- get
1315
- list
@@ -26,10 +28,10 @@ rules:
2628
- apiGroups:
2729
- cluster.redpanda.com
2830
resources:
29-
- schemas
30-
- topics
31-
- users
31+
- redpandas
3232
verbs:
33+
- create
34+
- delete
3335
- get
3436
- list
3537
- patch
@@ -38,6 +40,7 @@ rules:
3840
- apiGroups:
3941
- cluster.redpanda.com
4042
resources:
43+
- redpandas/finalizers
4144
- schemas/finalizers
4245
- topics/finalizers
4346
- users/finalizers
@@ -46,13 +49,39 @@ rules:
4649
- apiGroups:
4750
- cluster.redpanda.com
4851
resources:
52+
- redpandas/status
4953
- schemas/status
5054
- topics/status
5155
- users/status
5256
verbs:
5357
- get
5458
- patch
5559
- update
60+
- apiGroups:
61+
- cluster.redpanda.com
62+
resources:
63+
- schemas
64+
- topics
65+
- users
66+
verbs:
67+
- get
68+
- list
69+
- patch
70+
- update
71+
- watch
72+
- apiGroups:
73+
- rbac.authorization.k8s.io
74+
resources:
75+
- clusterrolebindings
76+
- clusterroles
77+
verbs:
78+
- create
79+
- delete
80+
- get
81+
- list
82+
- patch
83+
- update
84+
- watch
5685
---
5786
apiVersion: rbac.authorization.k8s.io/v1
5887
kind: Role
@@ -63,15 +92,13 @@ rules:
6392
- apiGroups:
6493
- ""
6594
resources:
66-
- events
95+
- configmaps
96+
- pods
97+
- secrets
98+
- serviceaccounts
99+
- services
67100
verbs:
68101
- create
69-
- patch
70-
- apiGroups:
71-
- ""
72-
resources:
73-
- persistentvolumeclaims
74-
verbs:
75102
- delete
76103
- get
77104
- list
@@ -81,12 +108,15 @@ rules:
81108
- apiGroups:
82109
- ""
83110
resources:
84-
- pods
85-
- secrets
86-
- serviceaccounts
87-
- services
111+
- events
88112
verbs:
89113
- create
114+
- patch
115+
- apiGroups:
116+
- ""
117+
resources:
118+
- persistentvolumeclaims
119+
verbs:
90120
- delete
91121
- get
92122
- list
@@ -158,50 +188,6 @@ rules:
158188
- patch
159189
- update
160190
- watch
161-
- apiGroups:
162-
- cluster.redpanda.com
163-
resources:
164-
- redpandas
165-
verbs:
166-
- create
167-
- delete
168-
- get
169-
- list
170-
- patch
171-
- update
172-
- watch
173-
- apiGroups:
174-
- cluster.redpanda.com
175-
resources:
176-
- redpandas/finalizers
177-
- schemas/finalizers
178-
- topics/finalizers
179-
- users/finalizers
180-
verbs:
181-
- update
182-
- apiGroups:
183-
- cluster.redpanda.com
184-
resources:
185-
- redpandas/status
186-
- schemas/status
187-
- topics/status
188-
- users/status
189-
verbs:
190-
- get
191-
- patch
192-
- update
193-
- apiGroups:
194-
- cluster.redpanda.com
195-
resources:
196-
- schemas
197-
- topics
198-
- users
199-
verbs:
200-
- get
201-
- list
202-
- patch
203-
- update
204-
- watch
205191
- apiGroups:
206192
- helm.toolkit.fluxcd.io
207193
resources:
@@ -231,6 +217,7 @@ rules:
231217
- apiGroups:
232218
- monitoring.coreos.com
233219
resources:
220+
- podmonitors
234221
- servicemonitors
235222
verbs:
236223
- create

operator/internal/controller/redpanda/managed_decommission_controller.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ const (
4646

4747
var ErrZeroReplicas = errors.New("redpanda replicas is zero")
4848

49-
// +kubebuilder:rbac:groups=cluster.redpanda.com,namespace=default,resources=redpandas,verbs=get;list;watch;
49+
// +kubebuilder:rbac:groups=cluster.redpanda.com,resources=redpandas,verbs=get;list;watch;
5050
// +kubebuilder:rbac:groups=core,namespace=default,resources=pods,verbs=update;patch;delete;get;list;watch;
5151
// +kubebuilder:rbac:groups=core,namespace=default,resources=pods/status,verbs=update;patch
5252
// +kubebuilder:rbac:groups=core,namespace=default,resources=persistentvolumeclaims,verbs=get;list;update;patch;delete;watch

operator/internal/controller/redpanda/redpanda_controller.go

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -104,27 +104,25 @@ type RedpandaReconciler struct {
104104

105105
// any resource that Redpanda helm creates and flux controller needs to reconcile them
106106
// +kubebuilder:rbac:groups="",namespace=default,resources=pods,verbs=get;list;watch;create;update;patch;delete
107-
// +kubebuilder:rbac:groups=rbac.authorization.k8s.io,namespace=default,resources=rolebindings,verbs=get;list;watch;create;update;patch;delete
108-
// +kubebuilder:rbac:groups=rbac.authorization.k8s.io,namespace=default,resources=roles,verbs=get;list;watch;create;update;patch;delete
107+
// +kubebuilder:rbac:groups=rbac.authorization.k8s.io,resources=clusterroles;clusterrolebindings,verbs=get;list;watch;create;update;patch;delete
108+
// +kubebuilder:rbac:groups=rbac.authorization.k8s.io,namespace=default,resources=roles;rolebindings,verbs=get;list;watch;create;update;patch;delete
109109
// +kubebuilder:rbac:groups=batch,namespace=default,resources=jobs,verbs=get;list;watch;create;update;patch;delete
110-
// +kubebuilder:rbac:groups=core,namespace=default,resources=secrets,verbs=get;list;watch;create;update;patch;delete
111-
// +kubebuilder:rbac:groups=core,namespace=default,resources=services,verbs=get;list;watch;create;update;patch;delete
112-
// +kubebuilder:rbac:groups=core,namespace=default,resources=serviceaccounts,verbs=get;list;watch;create;update;patch;delete
110+
// +kubebuilder:rbac:groups=core,namespace=default,resources=configmaps;secrets;services;serviceaccounts,verbs=get;list;watch;create;update;patch;delete
113111
// +kubebuilder:rbac:groups=apps,namespace=default,resources=statefulsets,verbs=get;list;watch;create;update;patch;delete;
114112
// +kubebuilder:rbac:groups=policy,namespace=default,resources=poddisruptionbudgets,verbs=get;list;watch;create;update;patch;delete
115113
// +kubebuilder:rbac:groups=apps,namespace=default,resources=deployments,verbs=get;list;watch;create;update;patch;delete
116114
// +kubebuilder:rbac:groups=cert-manager.io,namespace=default,resources=certificates,verbs=get;create;update;patch;delete;list;watch
117115
// +kubebuilder:rbac:groups=cert-manager.io,namespace=default,resources=issuers,verbs=get;create;update;patch;delete;list;watch
118-
// +kubebuilder:rbac:groups="monitoring.coreos.com",namespace=default,resources=servicemonitors,verbs=get;list;watch;create;update;patch;delete
119-
// +kubebuilder:rbac:groups=networking.k8s.io,namespace=default,resources=ingresses,verbs=get;list;watch;create;update;patch;delete
116+
// +kubebuilder:rbac:groups="monitoring.coreos.com",namespace=default,resources=podmonitors;servicemonitors,verbs=get;list;watch;create;update;patch;delete
120117

121118
// Console chart
122119
// +kubebuilder:rbac:groups=autoscaling,namespace=default,resources=horizontalpodautoscalers,verbs=get;list;watch;create;update;patch;delete
120+
// +kubebuilder:rbac:groups=networking.k8s.io,namespace=default,resources=ingresses,verbs=get;list;watch;create;update;patch;delete
123121

124122
// redpanda resources
125-
// +kubebuilder:rbac:groups=cluster.redpanda.com,namespace=default,resources=redpandas,verbs=get;list;watch;create;update;patch;delete
126-
// +kubebuilder:rbac:groups=cluster.redpanda.com,namespace=default,resources=redpandas/status,verbs=get;update;patch
127-
// +kubebuilder:rbac:groups=cluster.redpanda.com,namespace=default,resources=redpandas/finalizers,verbs=update
123+
// +kubebuilder:rbac:groups=cluster.redpanda.com,resources=redpandas,verbs=get;list;watch;create;update;patch;delete
124+
// +kubebuilder:rbac:groups=cluster.redpanda.com,resources=redpandas/status,verbs=get;update;patch
125+
// +kubebuilder:rbac:groups=cluster.redpanda.com,resources=redpandas/finalizers,verbs=update
128126
// +kubebuilder:rbac:groups=core,namespace=default,resources=events,verbs=create;patch
129127

130128
// SetupWithManager sets up the controller with the Manager.

0 commit comments

Comments
 (0)