Skip to content

Commit cc53644

Browse files
authored
[occm] Reduce ClusterRole scope (#3165)
* [occm] Limit verbs for node access OCCM does not need to create or delete nodes Signed-off-by: Stephen Finucane <stephenfin@redhat.com> * [occm] Prevent access to PVs OCCM does not need this access. Signed-off-by: Stephen Finucane <stephenfin@redhat.com> * [occm] Add new Role for secrets OCCM does not query Kubernetes secrets via the Kubernetes API in any of its controllers. The only secret is needs access to is the 'cloud-config' secret mounted as a volume into the container. This exists in the 'kube-system' namespace for standard manifests and the release namespace when deployed via Helm. Therefore it's unnecessary to grand cluster-wide get, list and watch access to all secrets via the system:cloud-controller-manager ClusterRole. Fix this by introducing a new 'system:cloud-controller-manager:secret-reader' Role in the standard manifests and a '{{ .Values.clusterRoleName }}:secret-reader' Role in the Helm charts. Signed-off-by: Stephen Finucane <stephenfin@redhat.com> * occm: Bump openstack-cloud-controller-manager chart to 2.36.2 Signed-off-by: Stephen Finucane <stephenfin@redhat.com> --------- Signed-off-by: Stephen Finucane <stephenfin@redhat.com>
1 parent 788e9a8 commit cc53644

6 files changed

Lines changed: 76 additions & 24 deletions

File tree

charts/openstack-cloud-controller-manager/Chart.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ description: Openstack Cloud Controller Manager Helm Chart
44
icon: https://object-storage-ca-ymq-1.vexxhost.net/swift/v1/6e4619c416ff4bd19e1c087f27a43eea/www-images-prod/openstack-logo/OpenStack-Logo-Vertical.png
55
home: https://github.com/kubernetes/cloud-provider-openstack
66
name: openstack-cloud-controller-manager
7-
version: 2.36.1
7+
version: 2.36.2
88
maintainers:
99
- name: eumel8
1010
email: f.kloeker@telekom.de

charts/openstack-cloud-controller-manager/templates/clusterrole.yaml

Lines changed: 5 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,11 @@ rules:
2929
resources:
3030
- nodes
3131
verbs:
32-
- '*'
32+
- get
33+
- list
34+
- watch
35+
- patch
36+
- update
3337
- apiGroups:
3438
- ""
3539
resources:
@@ -64,12 +68,6 @@ rules:
6468
verbs:
6569
- create
6670
- get
67-
- apiGroups:
68-
- ""
69-
resources:
70-
- persistentvolumes
71-
verbs:
72-
- '*'
7371
- apiGroups:
7472
- ""
7573
resources:
@@ -88,11 +86,3 @@ rules:
8886
- get
8987
- list
9088
- watch
91-
- apiGroups:
92-
- ""
93-
resources:
94-
- secrets
95-
verbs:
96-
- list
97-
- get
98-
- watch
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
{{- if .Values.secret.enabled }}
2+
apiVersion: rbac.authorization.k8s.io/v1
3+
kind: Role
4+
metadata:
5+
name: {{ .Values.clusterRoleName }}:secret-reader
6+
namespace: {{ .Release.Namespace }}
7+
labels: {{- include "common.labels.standard" . | nindent 4 }}
8+
annotations:
9+
{{- with .Values.commonAnnotations }}
10+
{{- toYaml . | nindent 4 }}
11+
{{- end }}
12+
rules:
13+
- apiGroups:
14+
- ""
15+
resources:
16+
- secrets
17+
resourceNames:
18+
- {{ .Values.secret.name | default "cloud-config" }}
19+
verbs:
20+
- get
21+
- list
22+
- watch
23+
{{- end }}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
{{- if .Values.secret.enabled }}
2+
apiVersion: rbac.authorization.k8s.io/v1
3+
kind: RoleBinding
4+
metadata:
5+
name: {{ .Values.clusterRoleName }}:secret-reader
6+
namespace: {{ .Release.Namespace }}
7+
labels: {{- include "common.labels.standard" . | nindent 4 }}
8+
annotations:
9+
{{- with .Values.commonAnnotations }}
10+
{{- toYaml . | nindent 4 }}
11+
{{- end }}
12+
roleRef:
13+
apiGroup: rbac.authorization.k8s.io
14+
kind: Role
15+
name: {{ .Values.clusterRoleName }}:secret-reader
16+
subjects:
17+
- kind: ServiceAccount
18+
name: {{ .Values.serviceAccountName }}
19+
namespace: {{ .Release.Namespace }}
20+
{{- end }}

manifests/controller-manager/cloud-controller-manager-role-bindings.yaml

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,5 +24,18 @@ items:
2424
- kind: ServiceAccount
2525
name: cloud-controller-manager
2626
namespace: kube-system
27+
- apiVersion: rbac.authorization.k8s.io/v1
28+
kind: RoleBinding
29+
metadata:
30+
name: system:cloud-controller-manager:secret-reader
31+
namespace: kube-system
32+
roleRef:
33+
apiGroup: rbac.authorization.k8s.io
34+
kind: Role
35+
name: system:cloud-controller-manager:secret-reader
36+
subjects:
37+
- kind: ServiceAccount
38+
name: cloud-controller-manager
39+
namespace: kube-system
2740
kind: List
2841
metadata: {}

manifests/controller-manager/cloud-controller-manager-roles.yaml

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,11 @@ items:
2626
resources:
2727
- nodes
2828
verbs:
29-
- '*'
29+
- get
30+
- list
31+
- watch
32+
- patch
33+
- update
3034
- apiGroups:
3135
- ""
3236
resources:
@@ -61,12 +65,6 @@ items:
6165
- serviceaccounts/token
6266
verbs:
6367
- create
64-
- apiGroups:
65-
- ""
66-
resources:
67-
- persistentvolumes
68-
verbs:
69-
- '*'
7068
- apiGroups:
7169
- ""
7270
resources:
@@ -85,13 +83,21 @@ items:
8583
- get
8684
- list
8785
- watch
86+
- apiVersion: rbac.authorization.k8s.io/v1
87+
kind: Role
88+
metadata:
89+
name: system:cloud-controller-manager:secret-reader
90+
namespace: kube-system
91+
rules:
8892
- apiGroups:
8993
- ""
9094
resources:
9195
- secrets
96+
resourceNames:
97+
- cloud-config
9298
verbs:
93-
- list
9499
- get
100+
- list
95101
- watch
96102
- apiVersion: rbac.authorization.k8s.io/v1
97103
kind: ClusterRole

0 commit comments

Comments
 (0)