@@ -108,6 +108,83 @@ func addClusterRoleBindingLabel(rolebindings []rbacv1.ClusterRoleBinding) {
108
108
return
109
109
}
110
110
111
+ func viewRules () []rbacv1.PolicyRule {
112
+ rules := []rbacv1.PolicyRule {
113
+ rbacv1helpers .NewRule (Read ... ).Groups (legacyGroup ).Resources ("pods" , "replicationcontrollers" , "replicationcontrollers/scale" , "serviceaccounts" ,
114
+ "services" , "services/status" , "endpoints" , "persistentvolumeclaims" , "persistentvolumeclaims/status" , "configmaps" ).RuleOrDie (),
115
+ rbacv1helpers .NewRule (Read ... ).Groups (legacyGroup ).Resources ("limitranges" , "resourcequotas" , "bindings" , "events" ,
116
+ "pods/status" , "resourcequotas/status" , "namespaces/status" , "replicationcontrollers/status" , "pods/log" ).RuleOrDie (),
117
+ // read access to namespaces at the namespace scope means you can read *this* namespace. This can be used as an
118
+ // indicator of which namespaces you have access to.
119
+ rbacv1helpers .NewRule (Read ... ).Groups (legacyGroup ).Resources ("namespaces" ).RuleOrDie (),
120
+
121
+ rbacv1helpers .NewRule (Read ... ).Groups (discoveryGroup ).Resources ("endpointslices" ).RuleOrDie (),
122
+
123
+ rbacv1helpers .NewRule (Read ... ).Groups (appsGroup ).Resources (
124
+ "controllerrevisions" ,
125
+ "statefulsets" , "statefulsets/status" , "statefulsets/scale" ,
126
+ "daemonsets" , "daemonsets/status" ,
127
+ "deployments" , "deployments/status" , "deployments/scale" ,
128
+ "replicasets" , "replicasets/status" , "replicasets/scale" ).RuleOrDie (),
129
+
130
+ rbacv1helpers .NewRule (Read ... ).Groups (autoscalingGroup ).Resources ("horizontalpodautoscalers" , "horizontalpodautoscalers/status" ).RuleOrDie (),
131
+
132
+ rbacv1helpers .NewRule (Read ... ).Groups (batchGroup ).Resources ("jobs" , "cronjobs" , "cronjobs/status" , "jobs/status" ).RuleOrDie (),
133
+
134
+ rbacv1helpers .NewRule (Read ... ).Groups (extensionsGroup ).Resources ("daemonsets" , "daemonsets/status" , "deployments" , "deployments/scale" , "deployments/status" ,
135
+ "ingresses" , "ingresses/status" , "replicasets" , "replicasets/scale" , "replicasets/status" , "replicationcontrollers/scale" ,
136
+ "networkpolicies" ).RuleOrDie (),
137
+
138
+ rbacv1helpers .NewRule (Read ... ).Groups (policyGroup ).Resources ("poddisruptionbudgets" , "poddisruptionbudgets/status" ).RuleOrDie (),
139
+
140
+ rbacv1helpers .NewRule (Read ... ).Groups (networkingGroup ).Resources ("networkpolicies" , "ingresses" , "ingresses/status" ).RuleOrDie (),
141
+ }
142
+
143
+ if utilfeature .DefaultFeatureGate .Enabled (features .DynamicResourceAllocation ) {
144
+ rules = append (rules , rbacv1helpers .NewRule (Read ... ).Groups (resourceGroup ).Resources ("resourceclaims" , "resourceclaims/status" , "resourceclaimtemplates" ).RuleOrDie ())
145
+ }
146
+ return rules
147
+ }
148
+
149
+ func editRules () []rbacv1.PolicyRule {
150
+ rules := []rbacv1.PolicyRule {
151
+ // Allow read on escalating resources
152
+ rbacv1helpers .NewRule (Read ... ).Groups (legacyGroup ).Resources ("pods/attach" , "pods/proxy" , "pods/exec" , "pods/portforward" , "secrets" , "services/proxy" ).RuleOrDie (),
153
+ rbacv1helpers .NewRule ("impersonate" ).Groups (legacyGroup ).Resources ("serviceaccounts" ).RuleOrDie (),
154
+
155
+ rbacv1helpers .NewRule (Write ... ).Groups (legacyGroup ).Resources ("pods" , "pods/attach" , "pods/proxy" , "pods/exec" , "pods/portforward" ).RuleOrDie (),
156
+ rbacv1helpers .NewRule ("create" ).Groups (legacyGroup ).Resources ("pods/eviction" ).RuleOrDie (),
157
+ rbacv1helpers .NewRule (Write ... ).Groups (legacyGroup ).Resources ("replicationcontrollers" , "replicationcontrollers/scale" , "serviceaccounts" ,
158
+ "services" , "services/proxy" , "persistentvolumeclaims" , "configmaps" , "secrets" , "events" ).RuleOrDie (),
159
+ rbacv1helpers .NewRule ("create" ).Groups (legacyGroup ).Resources ("serviceaccounts/token" ).RuleOrDie (),
160
+
161
+ rbacv1helpers .NewRule (Write ... ).Groups (appsGroup ).Resources (
162
+ "statefulsets" , "statefulsets/scale" ,
163
+ "daemonsets" ,
164
+ "deployments" , "deployments/scale" , "deployments/rollback" ,
165
+ "replicasets" , "replicasets/scale" ).RuleOrDie (),
166
+
167
+ rbacv1helpers .NewRule (Write ... ).Groups (autoscalingGroup ).Resources ("horizontalpodautoscalers" ).RuleOrDie (),
168
+
169
+ rbacv1helpers .NewRule (Write ... ).Groups (batchGroup ).Resources ("jobs" , "cronjobs" ).RuleOrDie (),
170
+
171
+ rbacv1helpers .NewRule (Write ... ).Groups (extensionsGroup ).Resources ("daemonsets" ,
172
+ "deployments" , "deployments/scale" , "deployments/rollback" , "ingresses" ,
173
+ "replicasets" , "replicasets/scale" , "replicationcontrollers/scale" ,
174
+ "networkpolicies" ).RuleOrDie (),
175
+
176
+ rbacv1helpers .NewRule (Write ... ).Groups (policyGroup ).Resources ("poddisruptionbudgets" ).RuleOrDie (),
177
+
178
+ rbacv1helpers .NewRule (Write ... ).Groups (networkingGroup ).Resources ("networkpolicies" , "ingresses" ).RuleOrDie (),
179
+
180
+ rbacv1helpers .NewRule (ReadWrite ... ).Groups (coordinationGroup ).Resources ("leases" ).RuleOrDie (),
181
+ }
182
+ if utilfeature .DefaultFeatureGate .Enabled (features .DynamicResourceAllocation ) {
183
+ rules = append (rules , rbacv1helpers .NewRule (Write ... ).Groups (resourceGroup ).Resources ("resourceclaims" , "resourceclaimtemplates" ).RuleOrDie ())
184
+ }
185
+ return rules
186
+ }
187
+
111
188
// NodeRules returns node policy rules, it is slice of rbacv1.PolicyRule.
112
189
func NodeRules () []rbacv1.PolicyRule {
113
190
nodePolicyRules := []rbacv1.PolicyRule {
@@ -313,73 +390,13 @@ func ClusterRoles() []rbacv1.ClusterRole {
313
390
// It does not grant powers for "privileged" resources which are domain of the system: `/status`
314
391
// subresources or `quota`/`limits` which are used to control namespaces
315
392
ObjectMeta : metav1.ObjectMeta {Name : "system:aggregate-to-edit" , Labels : map [string ]string {"rbac.authorization.k8s.io/aggregate-to-edit" : "true" }},
316
- Rules : []rbacv1.PolicyRule {
317
- // Allow read on escalating resources
318
- rbacv1helpers .NewRule (Read ... ).Groups (legacyGroup ).Resources ("pods/attach" , "pods/proxy" , "pods/exec" , "pods/portforward" , "secrets" , "services/proxy" ).RuleOrDie (),
319
- rbacv1helpers .NewRule ("impersonate" ).Groups (legacyGroup ).Resources ("serviceaccounts" ).RuleOrDie (),
320
-
321
- rbacv1helpers .NewRule (Write ... ).Groups (legacyGroup ).Resources ("pods" , "pods/attach" , "pods/proxy" , "pods/exec" , "pods/portforward" ).RuleOrDie (),
322
- rbacv1helpers .NewRule ("create" ).Groups (legacyGroup ).Resources ("pods/eviction" ).RuleOrDie (),
323
- rbacv1helpers .NewRule (Write ... ).Groups (legacyGroup ).Resources ("replicationcontrollers" , "replicationcontrollers/scale" , "serviceaccounts" ,
324
- "services" , "services/proxy" , "persistentvolumeclaims" , "configmaps" , "secrets" , "events" ).RuleOrDie (),
325
- rbacv1helpers .NewRule ("create" ).Groups (legacyGroup ).Resources ("serviceaccounts/token" ).RuleOrDie (),
326
-
327
- rbacv1helpers .NewRule (Write ... ).Groups (appsGroup ).Resources (
328
- "statefulsets" , "statefulsets/scale" ,
329
- "daemonsets" ,
330
- "deployments" , "deployments/scale" , "deployments/rollback" ,
331
- "replicasets" , "replicasets/scale" ).RuleOrDie (),
332
-
333
- rbacv1helpers .NewRule (Write ... ).Groups (autoscalingGroup ).Resources ("horizontalpodautoscalers" ).RuleOrDie (),
334
-
335
- rbacv1helpers .NewRule (Write ... ).Groups (batchGroup ).Resources ("jobs" , "cronjobs" ).RuleOrDie (),
336
-
337
- rbacv1helpers .NewRule (Write ... ).Groups (extensionsGroup ).Resources ("daemonsets" ,
338
- "deployments" , "deployments/scale" , "deployments/rollback" , "ingresses" ,
339
- "replicasets" , "replicasets/scale" , "replicationcontrollers/scale" ,
340
- "networkpolicies" ).RuleOrDie (),
341
-
342
- rbacv1helpers .NewRule (Write ... ).Groups (policyGroup ).Resources ("poddisruptionbudgets" ).RuleOrDie (),
343
-
344
- rbacv1helpers .NewRule (Write ... ).Groups (networkingGroup ).Resources ("networkpolicies" , "ingresses" ).RuleOrDie (),
345
-
346
- rbacv1helpers .NewRule (ReadWrite ... ).Groups (coordinationGroup ).Resources ("leases" ).RuleOrDie (),
347
- },
393
+ Rules : editRules (),
348
394
},
349
395
{
350
396
// a role for namespace level viewing. It grants Read-only access to non-escalating resources in
351
397
// a namespace.
352
398
ObjectMeta : metav1.ObjectMeta {Name : "system:aggregate-to-view" , Labels : map [string ]string {"rbac.authorization.k8s.io/aggregate-to-view" : "true" }},
353
- Rules : []rbacv1.PolicyRule {
354
- rbacv1helpers .NewRule (Read ... ).Groups (legacyGroup ).Resources ("pods" , "replicationcontrollers" , "replicationcontrollers/scale" , "serviceaccounts" ,
355
- "services" , "services/status" , "endpoints" , "persistentvolumeclaims" , "persistentvolumeclaims/status" , "configmaps" ).RuleOrDie (),
356
- rbacv1helpers .NewRule (Read ... ).Groups (legacyGroup ).Resources ("limitranges" , "resourcequotas" , "bindings" , "events" ,
357
- "pods/status" , "resourcequotas/status" , "namespaces/status" , "replicationcontrollers/status" , "pods/log" ).RuleOrDie (),
358
- // read access to namespaces at the namespace scope means you can read *this* namespace. This can be used as an
359
- // indicator of which namespaces you have access to.
360
- rbacv1helpers .NewRule (Read ... ).Groups (legacyGroup ).Resources ("namespaces" ).RuleOrDie (),
361
-
362
- rbacv1helpers .NewRule (Read ... ).Groups (discoveryGroup ).Resources ("endpointslices" ).RuleOrDie (),
363
-
364
- rbacv1helpers .NewRule (Read ... ).Groups (appsGroup ).Resources (
365
- "controllerrevisions" ,
366
- "statefulsets" , "statefulsets/status" , "statefulsets/scale" ,
367
- "daemonsets" , "daemonsets/status" ,
368
- "deployments" , "deployments/status" , "deployments/scale" ,
369
- "replicasets" , "replicasets/status" , "replicasets/scale" ).RuleOrDie (),
370
-
371
- rbacv1helpers .NewRule (Read ... ).Groups (autoscalingGroup ).Resources ("horizontalpodautoscalers" , "horizontalpodautoscalers/status" ).RuleOrDie (),
372
-
373
- rbacv1helpers .NewRule (Read ... ).Groups (batchGroup ).Resources ("jobs" , "cronjobs" , "cronjobs/status" , "jobs/status" ).RuleOrDie (),
374
-
375
- rbacv1helpers .NewRule (Read ... ).Groups (extensionsGroup ).Resources ("daemonsets" , "daemonsets/status" , "deployments" , "deployments/scale" , "deployments/status" ,
376
- "ingresses" , "ingresses/status" , "replicasets" , "replicasets/scale" , "replicasets/status" , "replicationcontrollers/scale" ,
377
- "networkpolicies" ).RuleOrDie (),
378
-
379
- rbacv1helpers .NewRule (Read ... ).Groups (policyGroup ).Resources ("poddisruptionbudgets" , "poddisruptionbudgets/status" ).RuleOrDie (),
380
-
381
- rbacv1helpers .NewRule (Read ... ).Groups (networkingGroup ).Resources ("networkpolicies" , "ingresses" , "ingresses/status" ).RuleOrDie (),
382
- },
399
+ Rules : viewRules (),
383
400
},
384
401
{
385
402
// a role to use for heapster's connections back to the API server
0 commit comments