@ -6,7 +6,23 @@ import (
)
var (
role = accesscontrol . RoleRegistration {
ActionApikeyList = "apikey:list"
ActionApikeyAdd = "apikey:add"
ActionApikeyRemove = "apikey:remove"
ActionApikeyAddAdditional = "apikey:addadditional"
apikeyWriter = "fixed:apikey:writer"
apikeyReader = "fixed:apikey:reader"
//API key actions
ActionApikeyListEv = accesscontrol . EvalPermission ( ActionApikeyList )
ActionApikeyAddEv = accesscontrol . EvalPermission ( ActionApikeyAdd )
ActionApikeyRemoveEv = accesscontrol . EvalPermission ( ActionApikeyRemove ) //Improvement:Check here or in database layer that user has permissiono modify the service account attached to this api key
ActionApikeyAddAdditionalEv = accesscontrol . EvalPermission ( ActionApikeyAddAdditional )
)
func RegisterRoles ( ac accesscontrol . AccessControl ) error {
role := accesscontrol . RoleRegistration {
Role : accesscontrol . RoleDTO {
Version : 3 ,
Name : "fixed:serviceaccounts:writer" ,
@ -29,4 +45,54 @@ var (
} ,
Grants : [ ] string { "Admin" } ,
}
)
if err := ac . DeclareFixedRoles ( role ) ; err != nil {
return err
}
apikeyAdminReadRole := accesscontrol . RoleRegistration {
Role : accesscontrol . RoleDTO {
Version : 1 ,
Name : apikeyReader ,
DisplayName : "Apikeys reader" ,
Description : "Gives access to list apikeys." ,
Group : "Service accounts" ,
Permissions : [ ] accesscontrol . Permission {
{
Action : ActionApikeyList ,
Scope : accesscontrol . ScopeUsersAll ,
} ,
} ,
} ,
Grants : [ ] string { "Admin" } ,
}
if err := ac . DeclareFixedRoles ( apikeyAdminReadRole ) ; err != nil {
return err
}
apikeyAdminEditRole := accesscontrol . RoleRegistration {
Role : accesscontrol . RoleDTO {
Version : 1 ,
Name : apikeyWriter ,
DisplayName : "Apikeys writer" ,
Description : "Gives access to add and delete api keys." ,
Group : "Service accounts" ,
Permissions : accesscontrol . ConcatPermissions ( apikeyAdminReadRole . Role . Permissions , [ ] accesscontrol . Permission {
{
Action : ActionApikeyAdd ,
Scope : accesscontrol . ScopeUsersAll ,
} ,
{
Action : ActionApikeyRemove ,
Scope : accesscontrol . ScopeUsersAll ,
} ,
} ) ,
} ,
Grants : [ ] string { "Admin" } ,
}
if err := ac . DeclareFixedRoles ( apikeyAdminEditRole ) ; err != nil {
return err
}
return nil
}