Skip to content

Permissions

Rack Gateway uses a structured permission system based on scopes, resources, and actions.

Every permission follows a three-part format:

{scope}:{resource}:{action}

Examples:

  • convox:app:list - List Convox applications
  • convox:process:exec - Execute commands in containers
  • gateway:user:create - Create gateway users
  • gateway:deploy_approval_request:read - View deploy approval requests

Permissions are organized into four scopes:

ScopeDescription
convoxOperations passed through to the Convox API
gatewayOperations implemented within the gateway itself
authAuthentication-related operations
securitySecurity-specific operations

Resources that map to Convox API operations:

ResourceDescription
appApplications
buildDocker image builds
certSSL/TLS certificates
deployDeployment operations
envEnvironment variables
instanceEC2/container instances
logApplication logs
objectBuild artifacts and objects
processRunning processes/containers
rackRack configuration
registryDocker registries
releaseApplication releases
resourceConvox resources (databases, etc.)

Resources specific to the gateway:

ResourceDescription
api_tokenAPI tokens for automation
deploy_approval_requestDeploy approval requests
integrationThird-party integrations
jobBackground jobs
secretGateway secrets
settingGateway configuration settings
userGateway users

Authentication and MFA resources:

ResourceDescription
authAuthentication sessions
mfa_backup_codesMFA recovery codes
mfa_methodMFA methods (TOTP, WebAuthn)
mfa_preferencesMFA preferences
mfa_verificationMFA verification challenges
trusted_deviceTrusted device tokens
ActionDescription
addAdd item to a collection
approveApprove a request
createCreate a new resource
deleteDelete a resource
deploy_with_approvalDeploy requiring prior approval
execExecute commands
generateGenerate credentials/codes
importImport external resources
keyrollRotate keys/credentials
listList resources
manageGeneral management operations
promotePromote a release
readRead/view a resource
removeRemove item from collection
restartRestart a service
setSet a value
startStart a resource
stopStop a resource
terminateTerminate a resource
unsetRemove a value
updateUpdate a resource
update_nameUpdate only the name
PermissionDescriptionRoles
convox:app:listList all applicationsviewer, ops, deployer, cicd, admin
convox:app:readView application detailsviewer, ops, deployer, cicd, admin
convox:app:createCreate new applicationadmin
convox:app:updateUpdate application settingsdeployer, admin
convox:app:deleteDelete applicationadmin
convox:app:restartRestart applicationops, deployer, admin
PermissionDescriptionRoles
gateway:user:listList all usersadmin
gateway:user:readView user detailsadmin
gateway:user:createCreate new useradmin
gateway:user:updateUpdate user (roles, status)admin
gateway:user:deleteDelete useradmin

These permissions control MFA and authentication operations:

PermissionDescriptionNotes
auth:mfa_method:createEnroll new MFA methodSelf-service
auth:mfa_method:updateUpdate MFA methodSelf-service
auth:mfa_method:deleteRemove MFA methodSelf-service
auth:mfa_backup_codes:generateGenerate backup codesSelf-service
auth:mfa_verification:createInitiate MFA challengeSystem
auth:trusted_device:createTrust a deviceSelf-service
auth:trusted_device:deleteRemove trusted deviceSelf-service

Admin role uses wildcard permissions:

PermissionMatches
convox:*:*All Convox operations
gateway:*:*All Gateway operations

Wildcards match any value in that position:

  • convox:app:* would match all app actions
  • convox:*:read would match all read actions

When a request arrives, the gateway:

  1. Identifies the user from session or API token
  2. Maps the endpoint to a permission (e.g., DELETE /apps/myappconvox:app:delete)
  3. Checks role against the required permission
  4. Logs the decision to audit trail

Common API endpoints and their required permissions:

EndpointMethodPermission
/api/v1/rack-proxy/appsGETconvox:app:list
/api/v1/rack-proxy/apps/:nameGETconvox:app:read
/api/v1/rack-proxy/apps/:nameDELETEconvox:app:delete
/api/v1/rack-proxy/apps/:name/buildsPOSTconvox:build:create
/api/v1/rack-proxy/apps/:name/processesGETconvox:process:list
/api/v1/rack-proxy/apps/:name/processes/:id/execPOSTconvox:process:exec
/api/v1/apps/:app/envGETconvox:env:read
/api/v1/apps/:app/envPUTconvox:env:set
/api/v1/rack-proxy/apps/:name/releases/:id/promotePOSTconvox:release:promote