blob: 4910e72641700e91e091d3c38968509152a758d7 [file] [log] [blame]
Giorgi Lekveishvilid1234c12023-06-19 10:37:06 +04001{{- if .Values.global.rbac.create }}
2apiVersion: rbac.authorization.k8s.io/v1
3kind: Role
4metadata:
5 name: {{ template "cert-manager.fullname" . }}:leaderelection
6 namespace: {{ .Values.global.leaderElection.namespace }}
7 labels:
8 app: {{ include "cert-manager.name" . }}
9 app.kubernetes.io/name: {{ include "cert-manager.name" . }}
10 app.kubernetes.io/instance: {{ .Release.Name }}
11 app.kubernetes.io/component: "controller"
12 {{- include "labels" . | nindent 4 }}
13rules:
14 - apiGroups: ["coordination.k8s.io"]
15 resources: ["leases"]
16 resourceNames: ["cert-manager-controller"]
17 verbs: ["get", "update", "patch"]
18 - apiGroups: ["coordination.k8s.io"]
19 resources: ["leases"]
20 verbs: ["create"]
21
22---
23
24# grant cert-manager permission to manage the leaderelection configmap in the
25# leader election namespace
26apiVersion: rbac.authorization.k8s.io/v1
27kind: RoleBinding
28metadata:
29 name: {{ include "cert-manager.fullname" . }}:leaderelection
30 namespace: {{ .Values.global.leaderElection.namespace }}
31 labels:
32 app: {{ include "cert-manager.name" . }}
33 app.kubernetes.io/name: {{ include "cert-manager.name" . }}
34 app.kubernetes.io/instance: {{ .Release.Name }}
35 app.kubernetes.io/component: "controller"
36 {{- include "labels" . | nindent 4 }}
37roleRef:
38 apiGroup: rbac.authorization.k8s.io
39 kind: Role
40 name: {{ template "cert-manager.fullname" . }}:leaderelection
41subjects:
gio33d62932026-07-23 16:39:35 +040042 - kind: ServiceAccount
Giorgi Lekveishvilid1234c12023-06-19 10:37:06 +040043 name: {{ template "cert-manager.serviceAccountName" . }}
44 namespace: {{ include "cert-manager.namespace" . }}
45
46---
47
48# Issuer controller role
49apiVersion: rbac.authorization.k8s.io/v1
50kind: ClusterRole
51metadata:
52 name: {{ template "cert-manager.fullname" . }}-controller-issuers
53 labels:
54 app: {{ include "cert-manager.name" . }}
55 app.kubernetes.io/name: {{ include "cert-manager.name" . }}
56 app.kubernetes.io/instance: {{ .Release.Name }}
57 app.kubernetes.io/component: "controller"
58 {{- include "labels" . | nindent 4 }}
59rules:
60 - apiGroups: ["cert-manager.io"]
61 resources: ["issuers", "issuers/status"]
62 verbs: ["update", "patch"]
63 - apiGroups: ["cert-manager.io"]
64 resources: ["issuers"]
65 verbs: ["get", "list", "watch"]
66 - apiGroups: [""]
67 resources: ["secrets"]
68 verbs: ["get", "list", "watch", "create", "update", "delete"]
69 - apiGroups: [""]
70 resources: ["events"]
71 verbs: ["create", "patch"]
Giorgi Lekveishvilid1234c12023-06-19 10:37:06 +040072---
73
74# ClusterIssuer controller role
75apiVersion: rbac.authorization.k8s.io/v1
76kind: ClusterRole
77metadata:
78 name: {{ template "cert-manager.fullname" . }}-controller-clusterissuers
79 labels:
80 app: {{ include "cert-manager.name" . }}
81 app.kubernetes.io/name: {{ include "cert-manager.name" . }}
82 app.kubernetes.io/instance: {{ .Release.Name }}
83 app.kubernetes.io/component: "controller"
84 {{- include "labels" . | nindent 4 }}
85rules:
86 - apiGroups: ["cert-manager.io"]
87 resources: ["clusterissuers", "clusterissuers/status"]
88 verbs: ["update", "patch"]
89 - apiGroups: ["cert-manager.io"]
90 resources: ["clusterissuers"]
91 verbs: ["get", "list", "watch"]
92 - apiGroups: [""]
93 resources: ["secrets"]
94 verbs: ["get", "list", "watch", "create", "update", "delete"]
95 - apiGroups: [""]
96 resources: ["events"]
97 verbs: ["create", "patch"]
98
99---
100
101# Certificates controller role
102apiVersion: rbac.authorization.k8s.io/v1
103kind: ClusterRole
104metadata:
105 name: {{ template "cert-manager.fullname" . }}-controller-certificates
106 labels:
107 app: {{ include "cert-manager.name" . }}
108 app.kubernetes.io/name: {{ include "cert-manager.name" . }}
109 app.kubernetes.io/instance: {{ .Release.Name }}
110 app.kubernetes.io/component: "controller"
111 {{- include "labels" . | nindent 4 }}
112rules:
113 - apiGroups: ["cert-manager.io"]
114 resources: ["certificates", "certificates/status", "certificaterequests", "certificaterequests/status"]
115 verbs: ["update", "patch"]
116 - apiGroups: ["cert-manager.io"]
117 resources: ["certificates", "certificaterequests", "clusterissuers", "issuers"]
118 verbs: ["get", "list", "watch"]
119 # We require these rules to support users with the OwnerReferencesPermissionEnforcement
120 # admission controller enabled:
121 # https://kubernetes.io/docs/reference/access-authn-authz/admission-controllers/#ownerreferencespermissionenforcement
122 - apiGroups: ["cert-manager.io"]
123 resources: ["certificates/finalizers", "certificaterequests/finalizers"]
124 verbs: ["update"]
125 - apiGroups: ["acme.cert-manager.io"]
126 resources: ["orders"]
127 verbs: ["create", "delete", "get", "list", "watch"]
128 - apiGroups: [""]
129 resources: ["secrets"]
130 verbs: ["get", "list", "watch", "create", "update", "delete", "patch"]
131 - apiGroups: [""]
132 resources: ["events"]
133 verbs: ["create", "patch"]
134
135---
136
137# Orders controller role
138apiVersion: rbac.authorization.k8s.io/v1
139kind: ClusterRole
140metadata:
141 name: {{ template "cert-manager.fullname" . }}-controller-orders
142 labels:
143 app: {{ include "cert-manager.name" . }}
144 app.kubernetes.io/name: {{ include "cert-manager.name" . }}
145 app.kubernetes.io/instance: {{ .Release.Name }}
146 app.kubernetes.io/component: "controller"
147 {{- include "labels" . | nindent 4 }}
148rules:
149 - apiGroups: ["acme.cert-manager.io"]
150 resources: ["orders", "orders/status"]
151 verbs: ["update", "patch"]
152 - apiGroups: ["acme.cert-manager.io"]
153 resources: ["orders", "challenges"]
154 verbs: ["get", "list", "watch"]
155 - apiGroups: ["cert-manager.io"]
156 resources: ["clusterissuers", "issuers"]
157 verbs: ["get", "list", "watch"]
158 - apiGroups: ["acme.cert-manager.io"]
159 resources: ["challenges"]
160 verbs: ["create", "delete"]
161 # We require these rules to support users with the OwnerReferencesPermissionEnforcement
162 # admission controller enabled:
163 # https://kubernetes.io/docs/reference/access-authn-authz/admission-controllers/#ownerreferencespermissionenforcement
164 - apiGroups: ["acme.cert-manager.io"]
165 resources: ["orders/finalizers"]
166 verbs: ["update"]
gio15aa6632026-07-23 17:14:23 +0400167 - apiGroups: ["cert-manager.io"]
168 resources: ["clusterissuers/finalizers", "issuers/finalizers"]
169 verbs: ["update"]
Giorgi Lekveishvilid1234c12023-06-19 10:37:06 +0400170 - apiGroups: [""]
171 resources: ["secrets"]
172 verbs: ["get", "list", "watch"]
173 - apiGroups: [""]
174 resources: ["events"]
175 verbs: ["create", "patch"]
176
177---
178
179# Challenges controller role
180apiVersion: rbac.authorization.k8s.io/v1
181kind: ClusterRole
182metadata:
183 name: {{ template "cert-manager.fullname" . }}-controller-challenges
184 labels:
185 app: {{ include "cert-manager.name" . }}
186 app.kubernetes.io/name: {{ include "cert-manager.name" . }}
187 app.kubernetes.io/instance: {{ .Release.Name }}
188 app.kubernetes.io/component: "controller"
189 {{- include "labels" . | nindent 4 }}
190rules:
191 # Use to update challenge resource status
192 - apiGroups: ["acme.cert-manager.io"]
193 resources: ["challenges", "challenges/status"]
194 verbs: ["update", "patch"]
195 # Used to watch challenge resources
196 - apiGroups: ["acme.cert-manager.io"]
197 resources: ["challenges"]
198 verbs: ["get", "list", "watch"]
199 # Used to watch challenges, issuer and clusterissuer resources
200 - apiGroups: ["cert-manager.io"]
201 resources: ["issuers", "clusterissuers"]
202 verbs: ["get", "list", "watch"]
203 # Need to be able to retrieve ACME account private key to complete challenges
204 - apiGroups: [""]
205 resources: ["secrets"]
206 verbs: ["get", "list", "watch"]
207 # Used to create events
208 - apiGroups: [""]
209 resources: ["events"]
210 verbs: ["create", "patch"]
211 # HTTP01 rules
212 - apiGroups: [""]
213 resources: ["pods", "services"]
214 verbs: ["get", "list", "watch", "create", "delete"]
215 - apiGroups: ["networking.k8s.io"]
216 resources: ["ingresses"]
217 verbs: ["get", "list", "watch", "create", "delete", "update"]
giod55d03a2026-07-23 16:57:48 +0400218 - apiGroups: ["gateway.networking.k8s.io"]
219 resources: ["httproutes"]
Giorgi Lekveishvilid1234c12023-06-19 10:37:06 +0400220 verbs: ["get", "list", "watch", "create", "delete", "update"]
221 # We require the ability to specify a custom hostname when we are creating
222 # new ingress resources.
223 # See: https://github.com/openshift/origin/blob/21f191775636f9acadb44fa42beeb4f75b255532/pkg/route/apiserver/admission/ingress_admission.go#L84-L148
224 - apiGroups: ["route.openshift.io"]
225 resources: ["routes/custom-host"]
226 verbs: ["create"]
227 # We require these rules to support users with the OwnerReferencesPermissionEnforcement
228 # admission controller enabled:
229 # https://kubernetes.io/docs/reference/access-authn-authz/admission-controllers/#ownerreferencespermissionenforcement
230 - apiGroups: ["acme.cert-manager.io"]
231 resources: ["challenges/finalizers"]
232 verbs: ["update"]
233 # DNS01 rules (duplicated above)
234 - apiGroups: [""]
235 resources: ["secrets"]
236 verbs: ["get", "list", "watch"]
237
238---
239
240# ingress-shim controller role
241apiVersion: rbac.authorization.k8s.io/v1
242kind: ClusterRole
243metadata:
244 name: {{ template "cert-manager.fullname" . }}-controller-ingress-shim
245 labels:
246 app: {{ include "cert-manager.name" . }}
247 app.kubernetes.io/name: {{ include "cert-manager.name" . }}
248 app.kubernetes.io/instance: {{ .Release.Name }}
249 app.kubernetes.io/component: "controller"
250 {{- include "labels" . | nindent 4 }}
251rules:
252 - apiGroups: ["cert-manager.io"]
253 resources: ["certificates", "certificaterequests"]
254 verbs: ["create", "update", "delete"]
255 - apiGroups: ["cert-manager.io"]
256 resources: ["certificates", "certificaterequests", "issuers", "clusterissuers"]
257 verbs: ["get", "list", "watch"]
258 - apiGroups: ["networking.k8s.io"]
259 resources: ["ingresses"]
260 verbs: ["get", "list", "watch"]
261 # We require these rules to support users with the OwnerReferencesPermissionEnforcement
262 # admission controller enabled:
263 # https://kubernetes.io/docs/reference/access-authn-authz/admission-controllers/#ownerreferencespermissionenforcement
264 - apiGroups: ["networking.k8s.io"]
265 resources: ["ingresses/finalizers"]
266 verbs: ["update"]
267 - apiGroups: ["gateway.networking.k8s.io"]
gio15aa6632026-07-23 17:14:23 +0400268 resources: ["gateways", "httproutes", "listenersets"]
Giorgi Lekveishvilid1234c12023-06-19 10:37:06 +0400269 verbs: ["get", "list", "watch"]
270 - apiGroups: ["gateway.networking.k8s.io"]
gio15aa6632026-07-23 17:14:23 +0400271 resources: ["gateways/finalizers", "httproutes/finalizers", "listenersets/finalizers"]
Giorgi Lekveishvilid1234c12023-06-19 10:37:06 +0400272 verbs: ["update"]
273 - apiGroups: [""]
274 resources: ["events"]
275 verbs: ["create", "patch"]
276
277---
278
279apiVersion: rbac.authorization.k8s.io/v1
280kind: ClusterRoleBinding
281metadata:
282 name: {{ template "cert-manager.fullname" . }}-controller-issuers
283 labels:
284 app: {{ include "cert-manager.name" . }}
285 app.kubernetes.io/name: {{ include "cert-manager.name" . }}
286 app.kubernetes.io/instance: {{ .Release.Name }}
287 app.kubernetes.io/component: "controller"
288 {{- include "labels" . | nindent 4 }}
289roleRef:
290 apiGroup: rbac.authorization.k8s.io
291 kind: ClusterRole
292 name: {{ template "cert-manager.fullname" . }}-controller-issuers
293subjects:
294 - name: {{ template "cert-manager.serviceAccountName" . }}
295 namespace: {{ include "cert-manager.namespace" . }}
296 kind: ServiceAccount
297
298---
299
300apiVersion: rbac.authorization.k8s.io/v1
301kind: ClusterRoleBinding
302metadata:
303 name: {{ template "cert-manager.fullname" . }}-controller-clusterissuers
304 labels:
305 app: {{ include "cert-manager.name" . }}
306 app.kubernetes.io/name: {{ include "cert-manager.name" . }}
307 app.kubernetes.io/instance: {{ .Release.Name }}
308 app.kubernetes.io/component: "controller"
309 {{- include "labels" . | nindent 4 }}
310roleRef:
311 apiGroup: rbac.authorization.k8s.io
312 kind: ClusterRole
313 name: {{ template "cert-manager.fullname" . }}-controller-clusterissuers
314subjects:
315 - name: {{ template "cert-manager.serviceAccountName" . }}
316 namespace: {{ include "cert-manager.namespace" . }}
317 kind: ServiceAccount
318
319---
320
321apiVersion: rbac.authorization.k8s.io/v1
322kind: ClusterRoleBinding
323metadata:
324 name: {{ template "cert-manager.fullname" . }}-controller-certificates
325 labels:
326 app: {{ include "cert-manager.name" . }}
327 app.kubernetes.io/name: {{ include "cert-manager.name" . }}
328 app.kubernetes.io/instance: {{ .Release.Name }}
329 app.kubernetes.io/component: "controller"
330 {{- include "labels" . | nindent 4 }}
331roleRef:
332 apiGroup: rbac.authorization.k8s.io
333 kind: ClusterRole
334 name: {{ template "cert-manager.fullname" . }}-controller-certificates
335subjects:
336 - name: {{ template "cert-manager.serviceAccountName" . }}
337 namespace: {{ include "cert-manager.namespace" . }}
338 kind: ServiceAccount
339
340---
341
342apiVersion: rbac.authorization.k8s.io/v1
343kind: ClusterRoleBinding
344metadata:
345 name: {{ template "cert-manager.fullname" . }}-controller-orders
346 labels:
347 app: {{ include "cert-manager.name" . }}
348 app.kubernetes.io/name: {{ include "cert-manager.name" . }}
349 app.kubernetes.io/instance: {{ .Release.Name }}
350 app.kubernetes.io/component: "controller"
351 {{- include "labels" . | nindent 4 }}
352roleRef:
353 apiGroup: rbac.authorization.k8s.io
354 kind: ClusterRole
355 name: {{ template "cert-manager.fullname" . }}-controller-orders
356subjects:
357 - name: {{ template "cert-manager.serviceAccountName" . }}
358 namespace: {{ include "cert-manager.namespace" . }}
359 kind: ServiceAccount
360
361---
362
363apiVersion: rbac.authorization.k8s.io/v1
364kind: ClusterRoleBinding
365metadata:
366 name: {{ template "cert-manager.fullname" . }}-controller-challenges
367 labels:
368 app: {{ include "cert-manager.name" . }}
369 app.kubernetes.io/name: {{ include "cert-manager.name" . }}
370 app.kubernetes.io/instance: {{ .Release.Name }}
371 app.kubernetes.io/component: "controller"
372 {{- include "labels" . | nindent 4 }}
373roleRef:
374 apiGroup: rbac.authorization.k8s.io
375 kind: ClusterRole
376 name: {{ template "cert-manager.fullname" . }}-controller-challenges
377subjects:
378 - name: {{ template "cert-manager.serviceAccountName" . }}
379 namespace: {{ include "cert-manager.namespace" . }}
380 kind: ServiceAccount
381
382---
383
384apiVersion: rbac.authorization.k8s.io/v1
385kind: ClusterRoleBinding
386metadata:
387 name: {{ template "cert-manager.fullname" . }}-controller-ingress-shim
388 labels:
389 app: {{ include "cert-manager.name" . }}
390 app.kubernetes.io/name: {{ include "cert-manager.name" . }}
391 app.kubernetes.io/instance: {{ .Release.Name }}
392 app.kubernetes.io/component: "controller"
393 {{- include "labels" . | nindent 4 }}
394roleRef:
395 apiGroup: rbac.authorization.k8s.io
396 kind: ClusterRole
397 name: {{ template "cert-manager.fullname" . }}-controller-ingress-shim
398subjects:
399 - name: {{ template "cert-manager.serviceAccountName" . }}
400 namespace: {{ include "cert-manager.namespace" . }}
401 kind: ServiceAccount
402
gio33d62932026-07-23 16:39:35 +0400403{{- if .Values.global.rbac.aggregateClusterRoles }}
404---
405
406apiVersion: rbac.authorization.k8s.io/v1
407kind: ClusterRole
408metadata:
409 name: {{ template "cert-manager.fullname" . }}-cluster-view
410 labels:
411 app: {{ include "cert-manager.name" . }}
412 app.kubernetes.io/name: {{ include "cert-manager.name" . }}
413 app.kubernetes.io/instance: {{ .Release.Name }}
414 app.kubernetes.io/component: "controller"
415 {{- include "labels" . | nindent 4 }}
416 rbac.authorization.k8s.io/aggregate-to-cluster-reader: "true"
417rules:
418 - apiGroups: ["cert-manager.io"]
419 resources: ["clusterissuers"]
420 verbs: ["get", "list", "watch"]
421
422{{- end }}
Giorgi Lekveishvilid1234c12023-06-19 10:37:06 +0400423---
424
425apiVersion: rbac.authorization.k8s.io/v1
426kind: ClusterRole
427metadata:
428 name: {{ template "cert-manager.fullname" . }}-view
429 labels:
430 app: {{ include "cert-manager.name" . }}
431 app.kubernetes.io/name: {{ include "cert-manager.name" . }}
432 app.kubernetes.io/instance: {{ .Release.Name }}
433 app.kubernetes.io/component: "controller"
434 {{- include "labels" . | nindent 4 }}
435 {{- if .Values.global.rbac.aggregateClusterRoles }}
436 rbac.authorization.k8s.io/aggregate-to-view: "true"
437 rbac.authorization.k8s.io/aggregate-to-edit: "true"
438 rbac.authorization.k8s.io/aggregate-to-admin: "true"
gio33d62932026-07-23 16:39:35 +0400439 rbac.authorization.k8s.io/aggregate-to-cluster-reader: "true"
Giorgi Lekveishvilid1234c12023-06-19 10:37:06 +0400440 {{- end }}
441rules:
442 - apiGroups: ["cert-manager.io"]
443 resources: ["certificates", "certificaterequests", "issuers"]
444 verbs: ["get", "list", "watch"]
445 - apiGroups: ["acme.cert-manager.io"]
446 resources: ["challenges", "orders"]
447 verbs: ["get", "list", "watch"]
448
449
450---
451
452apiVersion: rbac.authorization.k8s.io/v1
453kind: ClusterRole
454metadata:
455 name: {{ template "cert-manager.fullname" . }}-edit
456 labels:
457 app: {{ include "cert-manager.name" . }}
458 app.kubernetes.io/name: {{ include "cert-manager.name" . }}
459 app.kubernetes.io/instance: {{ .Release.Name }}
460 app.kubernetes.io/component: "controller"
461 {{- include "labels" . | nindent 4 }}
462 {{- if .Values.global.rbac.aggregateClusterRoles }}
463 rbac.authorization.k8s.io/aggregate-to-edit: "true"
464 rbac.authorization.k8s.io/aggregate-to-admin: "true"
465 {{- end }}
466rules:
467 - apiGroups: ["cert-manager.io"]
468 resources: ["certificates", "certificaterequests", "issuers"]
469 verbs: ["create", "delete", "deletecollection", "patch", "update"]
470 - apiGroups: ["cert-manager.io"]
471 resources: ["certificates/status"]
472 verbs: ["update"]
giod55d03a2026-07-23 16:57:48 +0400473 {{- /*
gioc895c1d2026-07-23 17:18:25 +0400474 Challenge and Order resources are not intended to be created by users
475 (GHSA-8rvj-mm4h-c258).
giod55d03a2026-07-23 16:57:48 +0400476
gioc895c1d2026-07-23 17:18:25 +0400477 Challenges: "create" is excluded because a user-created Challenge with
478 attacker-controlled spec.solver can exfiltrate ClusterIssuer credentials
479 cross-namespace. "patch" and "update" are retained because spec is
480 immutable after creation (ValidateChallengeUpdate) so they cannot change
481 solver config, and because users need them to remove stuck finalizers
giod55d03a2026-07-23 16:57:48 +0400482 (see cert-manager/cert-manager#3851, cert-manager/cert-manager#3870).
483
gioc895c1d2026-07-23 17:18:25 +0400484 Orders: "create", "patch", and "update" are excluded because a user
485 who can update an Order can change spec.issuerRef to reference a
486 different ClusterIssuer, then delete the Challenge; the Orders
487 controller recreates the Challenge with the attacker-chosen Issuer's
488 solver config, exfiltrating its credentials.
giod55d03a2026-07-23 16:57:48 +0400489 */}}
Giorgi Lekveishvilid1234c12023-06-19 10:37:06 +0400490 - apiGroups: ["acme.cert-manager.io"]
giod55d03a2026-07-23 16:57:48 +0400491 resources: ["challenges"]
492 verbs: ["delete", "deletecollection", "patch", "update"]
493 - apiGroups: ["acme.cert-manager.io"]
494 resources: ["orders"]
495 verbs: ["delete", "deletecollection"]
Giorgi Lekveishvilid1234c12023-06-19 10:37:06 +0400496
497---
498
gio33d62932026-07-23 16:39:35 +0400499{{- if not .Values.disableAutoApproval -}}
500
Giorgi Lekveishvilid1234c12023-06-19 10:37:06 +0400501# Permission to approve CertificateRequests referencing cert-manager.io Issuers and ClusterIssuers
502apiVersion: rbac.authorization.k8s.io/v1
503kind: ClusterRole
504metadata:
505 name: {{ template "cert-manager.fullname" . }}-controller-approve:cert-manager-io
506 labels:
507 app: {{ include "cert-manager.name" . }}
508 app.kubernetes.io/name: {{ include "cert-manager.name" . }}
509 app.kubernetes.io/instance: {{ .Release.Name }}
510 app.kubernetes.io/component: "cert-manager"
511 {{- include "labels" . | nindent 4 }}
512rules:
513 - apiGroups: ["cert-manager.io"]
514 resources: ["signers"]
515 verbs: ["approve"]
gio33d62932026-07-23 16:39:35 +0400516 {{- with .Values.approveSignerNames }}
517 resourceNames:
518 {{- range . }}
519 - {{ . | quote }}
520 {{- end }}
521 {{- end }}
Giorgi Lekveishvilid1234c12023-06-19 10:37:06 +0400522
523---
524
525apiVersion: rbac.authorization.k8s.io/v1
526kind: ClusterRoleBinding
527metadata:
528 name: {{ template "cert-manager.fullname" . }}-controller-approve:cert-manager-io
529 labels:
530 app: {{ include "cert-manager.name" . }}
531 app.kubernetes.io/name: {{ include "cert-manager.name" . }}
532 app.kubernetes.io/instance: {{ .Release.Name }}
533 app.kubernetes.io/component: "cert-manager"
534 {{- include "labels" . | nindent 4 }}
535roleRef:
536 apiGroup: rbac.authorization.k8s.io
537 kind: ClusterRole
538 name: {{ template "cert-manager.fullname" . }}-controller-approve:cert-manager-io
539subjects:
540 - name: {{ template "cert-manager.serviceAccountName" . }}
541 namespace: {{ include "cert-manager.namespace" . }}
542 kind: ServiceAccount
543
544---
545
gio33d62932026-07-23 16:39:35 +0400546{{- end -}}
547
Giorgi Lekveishvilid1234c12023-06-19 10:37:06 +0400548# Permission to:
gio33d62932026-07-23 16:39:35 +0400549# - Update and sign CertificateSigningRequests referencing cert-manager.io Issuers and ClusterIssuers
Giorgi Lekveishvilid1234c12023-06-19 10:37:06 +0400550# - Perform SubjectAccessReviews to test whether users are able to reference Namespaced Issuers
551apiVersion: rbac.authorization.k8s.io/v1
552kind: ClusterRole
553metadata:
554 name: {{ template "cert-manager.fullname" . }}-controller-certificatesigningrequests
555 labels:
556 app: {{ include "cert-manager.name" . }}
557 app.kubernetes.io/name: {{ include "cert-manager.name" . }}
558 app.kubernetes.io/instance: {{ .Release.Name }}
559 app.kubernetes.io/component: "cert-manager"
560 {{- include "labels" . | nindent 4 }}
561rules:
562 - apiGroups: ["certificates.k8s.io"]
563 resources: ["certificatesigningrequests"]
564 verbs: ["get", "list", "watch", "update"]
565 - apiGroups: ["certificates.k8s.io"]
566 resources: ["certificatesigningrequests/status"]
567 verbs: ["update", "patch"]
568 - apiGroups: ["certificates.k8s.io"]
569 resources: ["signers"]
570 resourceNames: ["issuers.cert-manager.io/*", "clusterissuers.cert-manager.io/*"]
571 verbs: ["sign"]
572 - apiGroups: ["authorization.k8s.io"]
573 resources: ["subjectaccessreviews"]
574 verbs: ["create"]
575
576---
577
578apiVersion: rbac.authorization.k8s.io/v1
579kind: ClusterRoleBinding
580metadata:
581 name: {{ template "cert-manager.fullname" . }}-controller-certificatesigningrequests
582 labels:
583 app: {{ include "cert-manager.name" . }}
584 app.kubernetes.io/name: {{ include "cert-manager.name" . }}
585 app.kubernetes.io/instance: {{ .Release.Name }}
586 app.kubernetes.io/component: "cert-manager"
587 {{- include "labels" . | nindent 4 }}
588roleRef:
589 apiGroup: rbac.authorization.k8s.io
590 kind: ClusterRole
591 name: {{ template "cert-manager.fullname" . }}-controller-certificatesigningrequests
592subjects:
593 - name: {{ template "cert-manager.serviceAccountName" . }}
594 namespace: {{ include "cert-manager.namespace" . }}
595 kind: ServiceAccount
596{{- end }}