RBAC Configuration Guide π‘ BETA
This guide covers how to configure Role-Based Access Control (RBAC) in General Bots, including role management, group setup, permission assignment, and best practices for enterprise deployments.
Overview
General Bots RBAC provides:
- Hierarchical Roles: Roles inherit permissions from parent roles
- Group-based Access: Organize users into groups for easier management
- Permission Inheritance: Permissions flow down through the hierarchy
- Resource-level Control: Fine-grained access to bots, apps, and knowledge bases
Default Roles
General Bots includes predefined system roles that cannot be deleted:
| Role | Hierarchy Level | Description |
|---|---|---|
| Owner | 100 | Full organization control, including deletion |
| Admin | 90 | Manage all resources except organization deletion |
| Manager | 70 | Create and manage bots, KB, and apps |
| Member | 50 | Standard access to organization resources |
| Viewer | 30 | Read-only access to bots and knowledge bases |
| Guest | 10 | Limited public access only |
Role Hierarchy
Higher-level roles automatically inherit permissions from lower-level roles:
Owner (100)
βββ Admin (90)
βββ Manager (70)
βββ Member (50)
βββ Viewer (30)
βββ Guest (10)
An Admin can manage any role below them (Manager, Member, Viewer, Guest) but cannot modify Owner permissions.
Configuring Roles
Creating a Custom Role
Custom roles can extend the default hierarchy:
- Navigate to Settings β Access Control β Roles
- Click Create Role
- Configure:
- Name: Internal identifier (lowercase, no spaces)
- Display Name: Human-readable name
- Hierarchy Level: Position in hierarchy (1-99)
- Parent Roles: Roles to inherit from
- Permissions: Additional permissions
Permission Format
Permissions use a colon-separated format:
resource:action
resource:action:scope
Examples:
| Permission | Description |
|---|---|
bot:create | Create new bots |
bot:view | View bot details |
bot:edit | Edit bot configuration |
bot:delete | Delete bots |
bot:* | All bot permissions |
kb:read | Read knowledge base content |
kb:write | Write to knowledge bases |
kb:admin | Administer KB settings |
app:create | Create apps (Forms, Sites) |
app:view | View apps |
app:edit | Edit apps |
org:manage | Manage organization settings |
org:billing | Access billing information |
org:members | Manage organization members |
* | Wildcard - all permissions |
Role Configuration Example
name: content_editor
display_name: Content Editor
hierarchy_level: 55
parent_roles:
- member
permissions:
- kb:read
- kb:write
- bot:view
- app:view
- app:edit
Configuring Groups
Groups provide an additional layer of organization for users.
Default Groups
| Group | Description |
|---|---|
| everyone | All authenticated users |
| developers | Users who create bots and apps |
| content_managers | Users who manage knowledge bases |
| support | Support team with analytics access |
Creating Groups
- Navigate to Settings β Access Control β Groups
- Click Create Group
- Configure:
- Name: Internal identifier
- Display Name: Human-readable name
- Parent Group: Optional hierarchy
- Permissions: Group-specific permissions
Group Hierarchy
Groups can have parent-child relationships:
everyone
βββ developers
β βββ senior_developers
βββ content_managers
β βββ kb_admins
βββ support
βββ tier2_support
Child groups inherit permissions from parent groups.
Assigning Permissions
To Users
Assign roles directly to users:
User: john@company.com
Roles: manager, content_editor
Groups: developers, content_managers
To Bots
Control who can access each bot:
bot_id: my-support-bot
visibility: organization
allowed_roles:
- member
- viewer
allowed_groups:
- support
denied_users: []
To Apps
Control app access (Forms, Sites, Dashboards):
app_id: customer-feedback-form
app_type: form
visibility: public
allowed_roles: []
submission_requires_auth: false
To Knowledge Base Folders
See KB Permissions Guide for detailed folder configuration.
Permission Inheritance Resolution
When checking if a user has permission, the system evaluates:
- Direct User Permissions: Explicitly assigned to the user
- Role Permissions: From all assigned roles (including inherited)
- Group Permissions: From all group memberships (including inherited)
Resolution Example
User: alice@company.com
Direct Permissions: analytics:export
Roles: manager (inherits from member, viewer)
Groups: content_managers (inherits from everyone)
Effective Permissions:
βββ analytics:export (direct)
βββ org:members:view (from manager)
βββ bot:create (from manager)
βββ bot:edit (from manager)
βββ bot:view (from member, inherited by manager)
βββ kb:read (from member)
βββ kb:write (from content_managers)
βββ kb:admin (from content_managers)
βββ basic:access (from everyone)
Wildcard Permissions
Use wildcards for broad access:
| Pattern | Matches |
|---|---|
* | All permissions |
bot:* | All bot permissions |
kb:* | All knowledge base permissions |
app:* | All app permissions |
org:* | All organization permissions |
Configuration via API
List Roles
GET /api/settings/rbac/roles
Authorization: Bearer <token>
Create Role
POST /api/settings/rbac/roles
Authorization: Bearer <token>
Content-Type: application/json
{
"name": "custom_role",
"display_name": "Custom Role",
"description": "A custom role for specific needs",
"hierarchy_level": 45,
"parent_roles": ["member"],
"permissions": ["kb:read", "kb:write"]
}
Assign Role to User
POST /api/settings/rbac/users/{user_id}/roles/{role_id}
Authorization: Bearer <token>
Content-Type: application/json
{
"expires_at": "2025-12-31T23:59:59Z"
}
Add User to Group
POST /api/settings/rbac/users/{user_id}/groups/{group_id}
Authorization: Bearer <token>
Get Effective Permissions
GET /api/settings/rbac/users/{user_id}/permissions
Authorization: Bearer <token>
Response:
{
"user_id": "550e8400-e29b-41d4-a716-446655440000",
"permissions": [
"bot:view",
"bot:create",
"kb:read",
"kb:write"
],
"sources": [
{
"permission": "bot:view",
"source_type": "role",
"source_name": "member"
},
{
"permission": "kb:write",
"source_type": "group",
"source_name": "content_managers"
}
]
}
Audit Logging
All permission changes are logged for compliance:
| Event | Logged Data |
|---|---|
| Role Assignment | Actor, target user, role, timestamp |
| Role Revocation | Actor, target user, role, timestamp |
| Group Addition | Actor, target user, group, timestamp |
| Group Removal | Actor, target user, group, timestamp |
| Permission Grant | Actor, target, permission, timestamp |
| Access Denied | Actor, resource, required permission |
Access audit logs at Settings β Security β Audit Log.
Best Practices
1. Use Groups Over Direct Assignment
Instead of assigning roles to individual users, create groups:
β Create "Sales Team" group with viewer + CRM permissions
β Add users to the group
β Assign roles individually to 50 users
2. Follow Least Privilege
Start with minimal permissions and add as needed:
β New users get "viewer" role by default
β Promote to "member" after onboarding
β Give everyone "admin" for convenience
3. Use Role Expiration
For temporary access, set expiration dates:
POST /api/settings/rbac/users/{user_id}/roles/{role_id}
{
"expires_at": "2025-03-01T00:00:00Z"
}
4. Regular Permission Reviews
Schedule quarterly reviews:
- Export current permissions
- Review access patterns in audit logs
- Remove unused permissions
- Update role definitions as needed
5. Document Custom Roles
Maintain documentation for custom roles:
## Custom Role: Project Lead
**Purpose**: Lead project teams with limited admin access
**Permissions**:
- All member permissions
- bot:create, bot:edit
- app:create, app:edit
- org:members:view
**Assigned To**: Project leads and tech leads
**Created**: 2025-01-15
**Last Review**: 2025-01-21
Troubleshooting
User Cannot Access Resource
-
Check userβs effective permissions:
GET /api/settings/rbac/users/{user_id}/permissions -
Verify resource permissions:
GET /api/bots/{bot_id}/access -
Check audit log for denied access attempts
Permission Not Working After Assignment
- Clear userβs session cache
- User may need to log out and back in
- Check if permission is blocked by a deny rule
Role Changes Not Reflected
- Permission cache has 5-minute TTL
- Force refresh: User logs out/in
- Check if role assignment has expiration date