Overview
Risk Legion implements Role-Based Access Control (RBAC) at multiple layers: API middleware, database Row-Level Security (RLS), and frontend route protection. This multi-layer approach ensures comprehensive security.Role Hierarchy
User Roles
Super Admin
| Aspect | Description |
|---|---|
| Scope | Platform-wide |
| Purpose | Platform operations and enterprise management |
| Data Access | Enterprise metadata only, no business data |
| Stored In | super_admins table |
Client Admin
| Aspect | Description |
|---|---|
| Scope | Single enterprise |
| Purpose | Enterprise administration and BRA approval |
| Data Access | All data within their enterprise |
| Stored In | enterprise_users (role = ‘admin’) |
Assessor
| Aspect | Description |
|---|---|
| Scope | Assigned entities within enterprise |
| Purpose | Create and conduct BRAs |
| Data Access | Assigned Legal Entities/Business Units only |
| Stored In | enterprise_users (role = ‘assessor’) + user_entity_roles |
Reviewer
| Aspect | Description |
|---|---|
| Scope | Assigned entities within enterprise |
| Purpose | Read-only review and audit |
| Data Access | Assigned Legal Entities/Business Units only (read-only) |
| Stored In | enterprise_users (role = ‘reviewer’) + user_entity_roles |
Permission Matrix
BRA Operations
| Operation | Super Admin | Client Admin | Assessor | Reviewer |
|---|---|---|---|---|
| List BRAs | ❌ | ✅ All | ✅ Assigned | ✅ Assigned |
| View BRA | ❌ | ✅ | ✅ Assigned | ✅ Assigned |
| Create BRA | ❌ | ✅ | ✅ | ❌ |
| Edit BRA | ❌ | ✅ | ✅ Own | ❌ |
| Approve BRA | ❌ | ✅ | ❌ | ❌ |
| Cancel BRA | ❌ | ✅ | ❌ | ❌ |
Governance Operations
| Operation | Super Admin | Client Admin | Assessor | Reviewer |
|---|---|---|---|---|
| View Legal Entities | ❌ | ✅ | ✅ Assigned | ✅ Assigned |
| Create Legal Entities | ❌ | ✅ | ❌ | ❌ |
| Manage Risk Library | ❌ | ✅ | ❌ | ❌ |
| Configure Risk Appetite | ❌ | ✅ | ❌ | ❌ |
Admin Operations
| Operation | Super Admin | Client Admin | Assessor | Reviewer |
|---|---|---|---|---|
| Create Enterprise | ✅ | ❌ | ❌ | ❌ |
| View All Enterprises | ✅ | ❌ | ❌ | ❌ |
| Create Client Admin | ✅ | ❌ | ❌ | ❌ |
| Create Assessor/Reviewer | ❌ | ✅ | ❌ | ❌ |
| View Audit Logs | ❌ | ✅ | ❌ | ✅ |
RBAC Implementation Layers
Layer 1: API Middleware
Layer 2: Database RLS
Layer 3: Frontend Route Protection
Entity Assignment
Assigning Entities to Users
Checking User Access
Role Resolution
Getting User Role
Applying Role to Queries
Audit Logging
All permission checks are logged:Best Practices
Principle of Least Privilege
Principle of Least Privilege
- Grant minimum necessary permissions
- Use specific entity assignments
- Regularly review access
- Remove access promptly when roles change
Defense in Depth
Defense in Depth
- Implement RBAC at all layers
- Don’t trust frontend-only validation
- Use database RLS as final guard
- Log all access attempts
Role Management
Role Management
- Document role responsibilities
- Train users on their permissions
- Audit role assignments regularly
- Use clear role naming
Testing
Testing
- Test each role’s access paths
- Verify denial cases
- Test entity-level isolation
- Regular security reviews
Related Documentation
- Authentication - How users authenticate
- Database Schema - Tables and RLS policies
- User Roles - Detailed role documentation