User Roles and Permissions - Overview
Last Updated: February 18, 2026
Welcome to the GetApp Roles and Permissions documentation. This guide will help you understand and manage user access control in the GetApp system.
π Documentation Structureβ
This documentation is organized into three parts:
- This Overview - Introduction to roles, composite roles, and key concepts
- Setup and Management Guide - Configuration, user management, and creating custom roles
- Roles Reference - Complete role listings, examples, and troubleshooting
Table of Contentsβ
- What are Roles?
- Understanding Composite Roles
- The Special
permissions-enabledRole - Pre-configured Composite Roles
- Quick Start
- Next Steps
What are Roles?β
Roles are permissions that control what users can do in the GetApp system. Think of a role as a key that unlocks specific features or actions.
Examples:β
view-project- Allows you to see project detailscreate-project- Allows you to create new projectsupdate-release- Allows you to modify existing releasesdeploy-production- Allows you to deploy to production
Each role represents a specific action or access level in the system. Users can have multiple roles, giving them access to different features.
How Roles Workβ
When a user attempts to perform an action (such as creating a project), the system performs the following checks:
- Is permission enforcing enabled? - Verifies whether the permission enforcement is active.
- Does the user have the required role? - Confirms that the user possesses the appropriate role for this action.
- Authorization decision - If permissions are enabled and the user has the correct role, the action is allowed. Otherwise, the request is blocked (unless permission enforcement is disabled).
Special Cases: Agent Authentication and Project Tokensβ
Agent Routes: Routes used by agents do not require role-based authorization. If an agent has authenticated successfully, it can perform its designated operations without role checks.
Project Tokens: When a valid project token is provided, the system grants access to specific project-scoped operations without requiring individual user roles. The following actions are automatically permitted for the project associated with the token:
- Project Management: View, update, delete, and list projects
- Release Management: Create, view, update, edit imported releases, delete, publish, and list releases
- Artifact Management: Upload, download, view, delete, and list artifacts
This token-based access ensures that automated workflows and integrations can interact with specific projects securely without requiring user-level role assignments.
Understanding Composite Rolesβ
Composite roles are like "bundles" of individual roles. Instead of assigning 10 separate roles to a user, you can assign one composite role that includes all of them.
Why Use Composite Roles?β
- Easier Management: Assign one role instead of many
- Consistency: All users in the same role have the same permissions
- Flexibility: Change permissions for all users by updating the composite role
Example: Contributor Roleβ
The contributor composite role includes:
- Creating, viewing, updating, and deleting projects
- Creating, viewing, updating, and publishing releases
- Uploading, viewing, and downloading artifacts
- Managing policies (release-associated rules)
- Viewing analytics, logs, and metrics
When you assign someone the contributor role, they automatically get all these permissions.
The Special permissions-enabled Roleβ
What is permissions-enabled?β
permissions-enabled is a special "stamp" role that is added to the JWT that is genrated for autehticated users, and it activates permissions checking for this user, if it wasn't enabled the the environemnt varible ENABLE_PERMISSIONS. It doesn't grant any permissions by itselfβit only turns on the enforcement of permissions.
How It Worksβ
The GetApp system has two ways to control permission checking:
π Global Control (Everyone)β
- Set
ENABLE_PERMISSIONS=trueβ All users have permissions checked - Set
ENABLE_PERMISSIONS=falseβ No one has permissions checked (everyone can access everything)
π€ Individual Control (Specific Users)β
- When
ENABLE_PERMISSIONS=false(global disable), you can still enforce permissions for specific users by giving them thepermissions-enabledrole - Users with
permissions-enabled: Permission checking is activeβthey must have required roles β - Users without
permissions-enabled: No permission checkingβthey can access everything β οΈ
Why Use permissions-enabled?β
Gradual Rollout: Test the permissions system with a few users before enabling it for everyone.
Example Scenario:
- You have 100 users, but want to test permissions with just 5 people first
- Keep
ENABLE_PERMISSIONS=false(global disable) - Give the
permissions-enabledrole to 5 test users - Only those 5 users will have permission checking active
- Once testing is successful, set
ENABLE_PERMISSIONS=trueto enable for everyone
Quick Reference Tableβ
| Global Setting | User Has permissions-enabled? | Result |
|---|---|---|
ENABLE_PERMISSIONS=true | Doesn't matter | Permissions checked β |
ENABLE_PERMISSIONS=false | Yes | Permissions checked β |
ENABLE_PERMISSIONS=false | No | No checking, full access β οΈ |
Pre-configured Composite Rolesβ
The system comes with two main composite roles that cover most use cases:
1. Contributorβ
Who it's for: Team members who work on projectsβdevelopers, product managers, QA engineers
What they can do:
- β Manage projects (create, view, update, delete, list)
- β Manage releases (create, view, update, publish, list)
- β Manage artifacts (upload, download, view, list)
- β Manage policies (release-associated rules)
- β View discovery services, offerings, users
- β View analytics, logs, metrics, and configuration
- β Cannot deploy to devices or manage system settings
- β Cannot manage restrictions (device-associated rules)
- β Cannot manage users or system configuration
Use case: Give this role to anyone who needs to contribute to projects but doesn't need deployment or administrative access.
2. System Administratorβ
Who it's for: DevOps engineers, IT staff, system administrators
What they can do:
- β Everything contributors can do
- β Deploy applications to devices
- β Manage discovery services and devices
- β Link projects to device types
- β Manage offerings (create, update, delete)
- β Manage users
- β Manage system configuration
- β Manage restrictions (device-associated rules)
- β Full access to analytics, logs, and metrics
Use case: Give this role to people who need to deploy applications, manage the infrastructure, and configure the system.
Key Differencesβ
| Capability | Contributor | System Administrator |
|---|---|---|
| Create/manage projects | β | β |
| Upload/manage artifacts | β | β |
| Publish releases | β | β |
| Manage policies | β | β |
| Deploy to devices | β | β |
| Manage restrictions | β | β |
| Manage users | β | β |
| Manage system config | β | β |
Quick Startβ
For New Users: Getting Accessβ
Scenario: You need access to work on projects
What you need: Ask your administrator to add you to the "Contributors" group in Keycloak
Result: You'll be able to create projects, upload artifacts, and manage releases
For Administrators: Setting Up a New Userβ
Scenario: You hired a new developer, Sarah
Steps:
- Create Sarah's user account in Keycloak (or use SSO/LDAP)
- Go to Users β Find Sarah β Groups tab
- Click "Join Group" β Select "Contributors"
- Click "Join"
Result: Sarah can now contribute to projects immediately
Time to complete: 2 minutes
For Administrators: Enabling Permissionsβ
Choose one approach:
Option A: Enable for Everyone (Recommended for Production)β
ENABLE_PERMISSIONS=true
All users must have appropriate roles to access features.
Option B: Enable for Specific Users (Recommended for Testing)β
- Keep
ENABLE_PERMISSIONS=false - Assign the
permissions-enabledrole to test users in Keycloak - Only those users will have permission checking enforced
Groups and Role Assignmentβ
Pre-configured Groupsβ
The system automatically creates these groups:
Contributors Groupβ
- Automatic Role:
contributorcomposite role - Members Get: All contributor permissions automatically
- Who should be here: Developers, product managers, QA engineers, designers
System Administrators Groupβ
- Automatic Role:
system-administratorcomposite role - Members Get: Full system management permissions
- Who should be here: DevOps engineers, system administrators, IT staff
Best Practicesβ
β Use groups instead of assigning roles directly to users
β Use composite roles for common permission sets
β Document your custom roles and groups
β Review permissions regularly (quarterly)
β Keep at least 2 system administrators at all times
β Don't assign hundreds of individual roles to users
β Don't give everyone admin access
How Roles are Set Upβ
Good news! You don't need to manually create roles. The system automatically sets up all roles when it starts.
What Happens Automaticallyβ
- System Startup: GetApp API connects to Keycloak
- Role Creation: System creates any missing roles
- Composite Role Setup: Configures
contributorandsystem-administratorroles - Group Creation: Creates Contributors and System Administrators groups
- Synchronization: Updates any changes from code
You'll See Log Messages Likeβ
π Starting OIDC Role Synchronization
β
Created: create-project
β
Created: view-release
β
Synced composite role: 'contributor' (24 child roles)
β
Synced group: 'Contributors'
π Synchronization Complete!
No manual work needed! Just start the system and everything is configured.
Note: Auto-sync is enabled by default. To disable it and manage roles manually, set
KEYCLOAK_AUTO_SYNC_ROLES=false.
Role Categories at a Glanceβ
Here's a quick overview of the types of roles available:
π Project Managementβ
create-project, view-project, update-project, delete-project, list-projects
π Release Managementβ
create-release, view-release, update-release, edit-imported-release, delete-release, publish-release, push-release, list-releases
π¦ Artifact Managementβ
upload-artifact, download-artifact, view-artifact, delete-artifact, list-artifacts
π’ Deploymentβ
deploy-dev, deploy-staging, deploy-production
π Discovery & Devicesβ
view-discovery, manage-discovery, view-offering, create-offering, update-offering, delete-offering, manage-devices, link-project-device-type
π Policies & Restrictionsβ
Policies (Release rules - managed by contributors):
create-policy, view-policy, update-policy, delete-policy, list-policies
Restrictions (Device rules - managed by admins only):
create-restriction, view-restriction, update-restriction, delete-restriction, list-restrictions
π₯ User Managementβ
view-user, manage-users
π Analytics & Monitoringβ
view-analytics, view-logs, view-metrics
βοΈ Configurationβ
view-config, manage-config
Next Stepsβ
Now that you understand the basics:
π Learn Moreβ
-
Setup and Management Guide - Configure environment variables, manage users and groups, create custom composite roles
-
Roles Reference and Scenarios - Complete role descriptions, real-world examples, and troubleshooting
π Take Actionβ
For Administrators:
- Review your environment configuration
- Add users to appropriate groups
- Consider creating custom roles for your organization
For Users:
- Contact your administrator to request access
- Specify what you need to do (contribute to projects, deploy, etc.)
- They'll add you to the appropriate group
Getting Helpβ
Common Questionsβ
Q: How do I give someone access?
- A: Add them to the "Contributors" or "System Administrators" group in Keycloak
Q: How do I enable permissions?
- A: Set
ENABLE_PERMISSIONS=truein your environment variables
Q: What's the difference between policies and restrictions?
- A: Policies are rules on releases (managed by contributors), restrictions are rules on devices (managed by admins only)
Q: What does permissions-enabled do?
- A: It activates permission checking for specific users when global permissions are disabled. See the detailed explanation above.
Need More Information?β
- Check the Setup and Management Guide for detailed instructions
- Review the Roles Reference for complete role listings and examples
- Check application logs for detailed permission checking information
- Review Keycloak admin console to verify user and group settings
Ready to dive deeper? Continue to the Setup and Management Guide