Skip to content

Commit 2d39122

Browse files
author
Matt Rogers
committed
Aggregate cluster-reader role
Turn cluster-reader into an aggregate-able role. Aggregate the view role into cluster-reader and remove duplicates from the stock cluster-reader role.
1 parent 528fc4b commit 2d39122

File tree

2 files changed

+34
-34
lines changed

2 files changed

+34
-34
lines changed

pkg/cmd/server/bootstrappolicy/constants.go

Lines changed: 17 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -53,22 +53,23 @@ const (
5353

5454
// Roles
5555
const (
56-
ClusterAdminRoleName = "cluster-admin"
57-
SudoerRoleName = "sudoer"
58-
ScopeImpersonationRoleName = "system:scope-impersonation"
59-
ClusterReaderRoleName = "cluster-reader"
60-
StorageAdminRoleName = "storage-admin"
61-
ClusterDebuggerRoleName = "cluster-debugger"
62-
AdminRoleName = "admin"
63-
EditRoleName = "edit"
64-
ViewRoleName = "view"
65-
AggregatedAdminRoleName = "system:openshift:aggregate-to-admin"
66-
AggregatedEditRoleName = "system:openshift:aggregate-to-edit"
67-
AggregatedViewRoleName = "system:openshift:aggregate-to-view"
68-
SelfProvisionerRoleName = "self-provisioner"
69-
BasicUserRoleName = "basic-user"
70-
StatusCheckerRoleName = "cluster-status"
71-
SelfAccessReviewerRoleName = "self-access-reviewer"
56+
ClusterAdminRoleName = "cluster-admin"
57+
SudoerRoleName = "sudoer"
58+
ScopeImpersonationRoleName = "system:scope-impersonation"
59+
ClusterReaderRoleName = "cluster-reader"
60+
StorageAdminRoleName = "storage-admin"
61+
ClusterDebuggerRoleName = "cluster-debugger"
62+
AdminRoleName = "admin"
63+
EditRoleName = "edit"
64+
ViewRoleName = "view"
65+
AggregatedAdminRoleName = "system:openshift:aggregate-to-admin"
66+
AggregatedEditRoleName = "system:openshift:aggregate-to-edit"
67+
AggregatedViewRoleName = "system:openshift:aggregate-to-view"
68+
AggregatedClusterReaderRoleName = "system:openshift:aggregate-to-cluster-reader"
69+
SelfProvisionerRoleName = "self-provisioner"
70+
BasicUserRoleName = "basic-user"
71+
StatusCheckerRoleName = "cluster-status"
72+
SelfAccessReviewerRoleName = "self-access-reviewer"
7273

7374
RegistryAdminRoleName = "registry-admin"
7475
RegistryViewerRoleName = "registry-viewer"

pkg/cmd/server/bootstrappolicy/policy.go

Lines changed: 17 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,12 @@ func GetOpenshiftBootstrapClusterRoles() []rbacv1.ClusterRole {
131131
ObjectMeta: metav1.ObjectMeta{
132132
Name: ClusterReaderRoleName,
133133
},
134+
AggregationRule: &rbacv1.AggregationRule{
135+
ClusterRoleSelectors: []metav1.LabelSelector{{MatchLabels: map[string]string{"rbac.authorization.k8s.io/aggregate-to-cluster-reader": "true"}}},
136+
},
137+
},
138+
{
139+
ObjectMeta: metav1.ObjectMeta{Name: AggregatedClusterReaderRoleName, Labels: map[string]string{"rbac.authorization.k8s.io/aggregate-to-cluster-reader": "true"}},
134140
Rules: []rbacv1.PolicyRule{
135141
rbacv1helpers.NewRule(read...).Groups(kapiGroup).Resources("bindings", "componentstatuses", "configmaps", "endpoints", "events", "limitranges",
136142
"namespaces", "namespaces/status", "nodes", "nodes/status", "persistentvolumeclaims", "persistentvolumeclaims/status", "persistentvolumes",
@@ -173,30 +179,23 @@ func GetOpenshiftBootstrapClusterRoles() []rbacv1.ClusterRole {
173179

174180
rbacv1helpers.NewRule(read...).Groups(authzGroup, legacyAuthzGroup).Resources("clusterroles", "clusterrolebindings", "roles", "rolebindings", "rolebindingrestrictions").RuleOrDie(),
175181

176-
rbacv1helpers.NewRule(read...).Groups(buildGroup, legacyBuildGroup).Resources("builds", "builds/details", "buildconfigs", "buildconfigs/webhooks", "builds/log").RuleOrDie(),
182+
rbacv1helpers.NewRule(read...).Groups(buildGroup, legacyBuildGroup).Resources("builds/details").RuleOrDie(),
177183

178-
rbacv1helpers.NewRule(read...).Groups(deployGroup, legacyDeployGroup).Resources("deploymentconfigs", "deploymentconfigs/scale", "deploymentconfigs/log",
179-
"deploymentconfigs/status").RuleOrDie(),
180-
181-
rbacv1helpers.NewRule(read...).Groups(imageGroup, legacyImageGroup).Resources("images", "imagesignatures", "imagestreams", "imagestreamtags", "imagestreamimages",
182-
"imagestreams/status").RuleOrDie(),
184+
rbacv1helpers.NewRule(read...).Groups(imageGroup, legacyImageGroup).Resources("images", "imagesignatures").RuleOrDie(),
183185
// pull images
184186
rbacv1helpers.NewRule("get").Groups(imageGroup, legacyImageGroup).Resources("imagestreams/layers").RuleOrDie(),
185187

186188
rbacv1helpers.NewRule(read...).Groups(oauthGroup, legacyOauthGroup).Resources("oauthclientauthorizations").RuleOrDie(),
187189

188190
rbacv1helpers.NewRule(read...).Groups(projectGroup, legacyProjectGroup).Resources("projectrequests", "projects").RuleOrDie(),
189191

190-
rbacv1helpers.NewRule(read...).Groups(quotaGroup, legacyQuotaGroup).Resources("appliedclusterresourcequotas", "clusterresourcequotas", "clusterresourcequotas/status").RuleOrDie(),
191-
192-
rbacv1helpers.NewRule(read...).Groups(routeGroup, legacyRouteGroup).Resources("routes", "routes/status").RuleOrDie(),
192+
rbacv1helpers.NewRule(read...).Groups(quotaGroup, legacyQuotaGroup).Resources("clusterresourcequotas", "clusterresourcequotas/status").RuleOrDie(),
193193

194194
rbacv1helpers.NewRule(read...).Groups(networkGroup, legacyNetworkGroup).Resources("clusternetworks", "egressnetworkpolicies", "hostsubnets", "netnamespaces").RuleOrDie(),
195195

196196
rbacv1helpers.NewRule(read...).Groups(securityGroup, legacySecurityGroup).Resources("securitycontextconstraints").RuleOrDie(),
197197
rbacv1helpers.NewRule(read...).Groups(securityGroup).Resources("rangeallocations").RuleOrDie(),
198198

199-
rbacv1helpers.NewRule(read...).Groups(templateGroup, legacyTemplateGroup).Resources("templates", "templateconfigs", "processedtemplates", "templateinstances").RuleOrDie(),
200199
rbacv1helpers.NewRule(read...).Groups(templateGroup, legacyTemplateGroup).Resources("brokertemplateinstances", "templateinstances/status").RuleOrDie(),
201200

202201
rbacv1helpers.NewRule(read...).Groups(userGroup, legacyUserGroup).Resources("groups", "identities", "useridentitymappings", "users").RuleOrDie(),
@@ -215,10 +214,6 @@ func GetOpenshiftBootstrapClusterRoles() []rbacv1.ClusterRole {
215214
rbacv1helpers.NewRule("get", "create").Groups(kapiGroup).Resources("nodes/" + NodeStatsSubresource).RuleOrDie(),
216215

217216
rbacv1helpers.NewRule("get").URLs(rbac.NonResourceAll).RuleOrDie(),
218-
219-
// backwards compatibility
220-
rbacv1helpers.NewRule(read...).Groups(buildGroup, legacyBuildGroup).Resources("buildlogs").RuleOrDie(),
221-
rbacv1helpers.NewRule(read...).Groups(kapiGroup).Resources("resourcequotausages").RuleOrDie(),
222217
},
223218
},
224219
{
@@ -363,7 +358,10 @@ func GetOpenshiftBootstrapClusterRoles() []rbacv1.ClusterRole {
363358
{
364359
// a role for namespace level viewing. It grants Read-only access to non-escalating resources in
365360
// a namespace.
366-
ObjectMeta: metav1.ObjectMeta{Name: AggregatedViewRoleName, Labels: map[string]string{"rbac.authorization.k8s.io/aggregate-to-view": "true"}},
361+
ObjectMeta: metav1.ObjectMeta{Name: AggregatedViewRoleName, Labels: map[string]string{
362+
"rbac.authorization.k8s.io/aggregate-to-view": "true",
363+
"rbac.authorization.k8s.io/aggregate-to-cluster-reader": "true",
364+
}},
367365
Rules: []rbacv1.PolicyRule{
368366
rbacv1helpers.NewRule(read...).Groups(buildGroup, legacyBuildGroup).Resources("builds", "buildconfigs", "buildconfigs/webhooks").RuleOrDie(),
369367
rbacv1helpers.NewRule(read...).Groups(buildGroup, legacyBuildGroup).Resources("builds/log").RuleOrDie(),
@@ -1010,8 +1008,9 @@ func GetBootstrapNamespaceRoleBindings() map[string][]rbacv1.RoleBinding {
10101008

10111009
func GetBootstrapClusterRolesToAggregate() map[string]string {
10121010
return map[string]string{
1013-
AdminRoleName: AggregatedAdminRoleName,
1014-
EditRoleName: AggregatedEditRoleName,
1015-
ViewRoleName: AggregatedViewRoleName,
1011+
AdminRoleName: AggregatedAdminRoleName,
1012+
EditRoleName: AggregatedEditRoleName,
1013+
ViewRoleName: AggregatedViewRoleName,
1014+
ClusterReaderRoleName: AggregatedClusterReaderRoleName,
10161015
}
10171016
}

0 commit comments

Comments
 (0)