acl: gate ACL role write and delete RPC usage on v1.4.0 or greater. (#14908)
This commit is contained in:
parent
9923f9e6f3
commit
8e25048f3d
|
@ -0,0 +1,3 @@
|
|||
```release-note:bug
|
||||
acl: Ensure all federated servers meet v.1.4.0 minimum before ACL roles can be written
|
||||
```
|
|
@ -1097,6 +1097,13 @@ func (a *ACL) UpsertRoles(
|
|||
}
|
||||
defer metrics.MeasureSince([]string{"nomad", "acl", "upsert_roles"}, time.Now())
|
||||
|
||||
// ACL roles can only be used once all servers, in all federated regions
|
||||
// have been upgraded to 1.4.0 or greater.
|
||||
if !ServersMeetMinimumVersion(a.srv.Members(), AllRegions, minACLRoleVersion, false) {
|
||||
return fmt.Errorf("all servers should be running version %v or later to use ACL roles",
|
||||
minACLRoleVersion)
|
||||
}
|
||||
|
||||
// Only tokens with management level permissions can create ACL roles.
|
||||
if acl, err := a.srv.ResolveToken(args.AuthToken); err != nil {
|
||||
return err
|
||||
|
@ -1233,6 +1240,13 @@ func (a *ACL) DeleteRolesByID(
|
|||
}
|
||||
defer metrics.MeasureSince([]string{"nomad", "acl", "delete_roles"}, time.Now())
|
||||
|
||||
// ACL roles can only be used once all servers, in all federated regions
|
||||
// have been upgraded to 1.4.0 or greater.
|
||||
if !ServersMeetMinimumVersion(a.srv.Members(), AllRegions, minACLRoleVersion, false) {
|
||||
return fmt.Errorf("all servers should be running version %v or later to use ACL roles",
|
||||
minACLRoleVersion)
|
||||
}
|
||||
|
||||
// Only tokens with management level permissions can create ACL roles.
|
||||
if acl, err := a.srv.ResolveToken(args.AuthToken); err != nil {
|
||||
return err
|
||||
|
|
|
@ -49,6 +49,11 @@ var minJobRegisterAtomicEvalVersion = version.Must(version.NewVersion("0.12.1"))
|
|||
|
||||
var minOneTimeAuthenticationTokenVersion = version.Must(version.NewVersion("1.1.0"))
|
||||
|
||||
// minACLRoleVersion is the Nomad version at which the ACL role table was
|
||||
// introduced. It forms the minimum version all federated servers must meet
|
||||
// before the feature can be used.
|
||||
var minACLRoleVersion = version.Must(version.NewVersion("1.4.0"))
|
||||
|
||||
// minNomadServiceRegistrationVersion is the Nomad version at which the service
|
||||
// registrations table was introduced. It forms the minimum version all local
|
||||
// servers must meet before the feature can be used.
|
||||
|
|
Loading…
Reference in New Issue