diff --git a/plugin/pkg/auth/authorizer/rbac/bootstrappolicy/policy.go b/plugin/pkg/auth/authorizer/rbac/bootstrappolicy/policy.go index 2540d3b59f5..592b5f8668f 100644 --- a/plugin/pkg/auth/authorizer/rbac/bootstrappolicy/policy.go +++ b/plugin/pkg/auth/authorizer/rbac/bootstrappolicy/policy.go @@ -32,11 +32,19 @@ var ( func ClusterRoles() []rbac.ClusterRole { return []rbac.ClusterRole{ { + // a "root" role which can do absolutely anything ObjectMeta: api.ObjectMeta{Name: "cluster-admin"}, Rules: []rbac.PolicyRule{ rbac.NewRule("*").Groups("*").Resources("*").RuleOrDie(), rbac.NewRule("*").URLs("*").RuleOrDie(), }, }, + { + // a role which provides just enough power to discovery API versions for negotiation + ObjectMeta: api.ObjectMeta{Name: "system:discovery"}, + Rules: []rbac.PolicyRule{ + rbac.NewRule("get").URLs("/version", "/api", "/api/*", "/apis", "/apis/*").RuleOrDie(), + }, + }, } }