Version: 1.0 Last Updated: 2025-01-12 Target Audience: System Administrators
- Introduction
- Access Requirements
- Admin Features Overview
- Module Management
- Compliance Framework Management
- License Management
- User & Access Management
- System Monitoring
- Data Management
- Best Practices
- Troubleshooting
The Little ISMS Helper Admin Panel provides comprehensive system administration capabilities for managing modules, compliance frameworks, licenses, users, system health, and data backups.
- Module Management: Activate/deactivate functional modules with dependency tracking
- Compliance Management: Load and manage compliance frameworks (ISO 27001, NIST, etc.)
- License Management: Track third-party licenses and ensure compliance
- User Management: Manage users, roles, permissions, and MFA tokens
- System Monitoring: Monitor system health, performance, and errors
- Data Management: Create backups, export/import data
- User account with
ROLE_ADMINpermission - Authenticated session
- Modern web browser (Chrome, Firefox, Edge, Safari)
Admin features are available through the main navigation sidebar when logged in with admin privileges:
Navigation > [Admin Section]
- Users
- Module Management
- Compliance Management
- License Management
The admin panel integrates seamlessly into the main application navigation:
| Menu Item | Route | Description |
|---|---|---|
| Module Management | /admin/modules |
Manage system modules |
| Compliance Management | /admin/compliance |
Manage compliance frameworks |
| License Management | /admin/licensing |
View license information |
| User Management | /admin/users |
Manage users and roles |
| System Monitoring | /admin/monitoring |
System health dashboard |
| Data Management | /admin/data/backup |
Backup and data operations |
The Module Management interface allows administrators to activate/deactivate functional modules and manage their dependencies.
- Total Modules: All available modules in the system
- Active Modules: Currently enabled modules
- Inactive Modules: Disabled modules
- Required Modules: Core modules that cannot be deactivated
- Navigate to Module Management (
/admin/modules) - Locate the desired module in the "Inactive Modules" section
- Review module dependencies (if any)
- Click Activate button
- System will automatically activate required dependencies
- Confirmation message will appear
Note: Some modules may require sample data import after activation.
- Navigate to Module Management (
/admin/modules) - Locate the module in the "Active Modules" section
- Click Deactivate button (disabled for required modules)
- Confirm deactivation
- System will prevent deactivation if other modules depend on it
Click Details on any module to view:
- Module description and entities
- Dependency graph (required and dependent modules)
- Available sample data for import
- Export functionality for module data
View the complete module dependency structure:
- Click Dependency Graph button
- Review table showing:
- Module status (Active/Inactive)
- Module type (Required/Optional)
- Dependencies (modules it needs)
- Dependents (modules that need it)
Manage compliance frameworks including ISO 27001, NIST CSF, BSI IT-Grundschutz, and custom frameworks.
- Total Available: All loadable frameworks
- Loaded: Currently active frameworks
- Not Loaded: Available but not activated
- Mandatory Missing: Required frameworks not yet loaded
- Navigate to Compliance Management (
/admin/compliance) - Locate framework in the available frameworks list
- Review framework details:
- Version
- Industry (General, Healthcare, Finance, etc.)
- Regulatory body
- Mandatory status
- Click Load Framework button
- Wait for loading confirmation
- Framework requirements will be imported into database
- Locate loaded framework
- Click Delete Framework button
- Confirm deletion in dialog
- Framework and all related data will be removed
- Navigate to Compliance Statistics (
/admin/compliance/statistics) - Review compliance metrics:
- Total requirements per framework
- Assessed requirements count
- Compliant requirements count
- Compliance percentage
- Progress bar visualization
Compliance Calculation:
- Assessed: Requirements with at least one mapping
- Compliant: Requirements with at least one "implemented" mapping
- Compliance Rate: (Compliant / Total) × 100%
Track and manage third-party open-source licenses used in the project.
Navigate to License Management (/admin/licensing) to view:
- Project license information
- Third-party dependency notices (NOTICE.md)
- License compliance status
- Navigate to License Report or License Summary
- If report doesn't exist, click Generate Report
- System will analyze composer dependencies
- Report includes:
- License type classification (Allowed, Restricted, Copyleft)
- Package counts per license
- Compliance recommendations
| Category | Description | Examples |
|---|---|---|
| Allowed | Permissive licenses | MIT, Apache-2.0, BSD |
| Restricted | Conditional use | MPL-2.0, EPL-2.0 |
| Copyleft | Requires source distribution | GPL, LGPL |
| Not Allowed | Incompatible with project | AGPL (depends on policy) |
| Unknown | Unrecognized licenses | Custom, proprietary |
Comprehensive user administration features:
-
Create User
- Set username, email, password
- Assign roles
- Configure MFA settings
-
Edit User
- Update user information
- Modify role assignments
- Enable/disable account
-
Bulk Actions
- Select multiple users
- Bulk enable/disable
- Bulk role assignment
- Bulk delete
-
CSV Import/Export
- Export user list to CSV
- Import users from CSV template
Track user activity including:
- Last login times
- Failed login attempts
- Active sessions
- Action history
Manage Multi-Factor Authentication tokens:
- View all MFA tokens per user
- Token types: TOTP, WebAuthn, SMS, Hardware, Backup
- Reset MFA tokens for locked-out users
- Monitor token usage and last use
Admin feature: Impersonate users for troubleshooting:
- Navigate to user details
- Click Impersonate button
- Session switches to target user
- Exit impersonation using
/_switch_userlink
Security Note: All impersonation actions are logged in audit log.
Manage role hierarchy and permissions:
-
Create Role
- Define role name
- Assign permissions
- Set role hierarchy
-
Role Templates
- Auditor: Read-only access to compliance data
- Risk Manager: Risk assessment and mitigation
- Compliance Manager: Compliance frameworks and assessments
- Security Officer: Security controls and incidents
- Administrator: Full system access
- Viewer: Read-only system access
-
Role Comparison
- Compare permissions across roles
- Identify permission gaps
- Optimize role structure
View and manage system permissions:
- Grouped by category (user, risk, asset, etc.)
- Permission details showing usage in roles
- Permission statistics
Monitor active user sessions:
- Session tracking based on login events
- User activity timeline
- Session termination (requires database session storage)
Access at /admin/monitoring/health
| Check | Description | Thresholds |
|---|---|---|
| Database | Connection status and response time | < 100ms: Good, < 500ms: Warning, >= 500ms: Critical |
| Disk Space | Available disk space | > 20%: Good, > 10%: Warning, <= 10%: Critical |
| PHP | Version and required extensions | PHP 8.4+, All extensions loaded |
| Symfony | Framework version | 7.4+ |
| Cache | Cache directory writable | Writable: Good |
| Logs | Log directory writable | Writable: Good |
View performance metrics:
- Request processing time averages
- Memory usage statistics
- Cache hit/miss ratios
- Database query performance
Access recent errors at /admin/monitoring/errors:
- Log level filtering (error, critical, warning)
- Log source filtering (app, request, security)
- Timestamp and message details
- Stack trace viewing
View comprehensive audit trail:
- User actions and changes
- Timestamp and user identification
- IP address tracking
- Entity modifications
Create and manage PostgreSQL backups:
- Navigate to Data Management > Backup (
/admin/data/backup) - Click Create Backup button
- System creates backup using
pg_dump - Backup stored in
var/backups/directory - Filename format:
backup_YYYY-MM-DD_HH-MM-SS.sql
- Automatic: System keeps last 7 backups
- Manual cleanup: Delete individual backups via UI
- Locate backup in backup list
- Click Download button
- Save
.sqlfile to local machine
# Download backup file
# Access PostgreSQL server with admin privileges
# Drop existing database (optional)
DROP DATABASE your_database;
# Create new database
CREATE DATABASE your_database;
# Restore backup
psql -U postgres -d your_database -f backup_YYYY-MM-DD_HH-MM-SS.sqlExport application data in JSON or CSV format:
- Navigate to Data Export (
/admin/data/export) - Select export format:
- JSON: Preserves data types, recommended for re-import
- CSV: Compatible with spreadsheet applications
- Select entities to export (checkboxes)
- Click Export Selected Entities
- Download generated file
Note: JSON export maintains entity relationships; CSV does not.
Status: Preview mode only (execution not implemented)
- Navigate to Data Import (
/admin/data/import) - Upload JSON export file
- Preview import data and statistics
- Review entity breakdown
- Execute Import button currently disabled
Future Implementation: Full import validation and execution planned.
-
Access Control
- Limit
ROLE_ADMINassignment to trusted users - Regularly review admin user list
- Enable MFA for all admin accounts
- Limit
-
Audit Logging
- Regularly review audit logs for suspicious activity
- Monitor failed login attempts
- Track user impersonation events
-
Data Protection
- Create backups before major system changes
- Store backups securely (encrypted, off-site)
- Test backup restoration periodically
-
Dependencies
- Review dependency graph before deactivating modules
- Test functionality after module activation
- Import sample data for testing new modules
-
Sample Data
- Use sample data only in development/testing environments
- Do not import sample data in production
- Review sample data content before import
-
Framework Selection
- Load only relevant frameworks for your organization
- Prioritize mandatory frameworks first
- Review framework requirements before loading
-
Assessment Workflow
- Complete compliance assessments regularly
- Update mappings when controls change
- Monitor compliance statistics dashboard
-
Monitoring
- Check system health daily
- Address warnings promptly
- Monitor disk space usage
-
Optimization
- Clear cache periodically
- Rotate log files
- Archive old audit log entries
Symptoms: Error message when activating module
Causes:
- Missing dependencies
- Database migration required
- Insufficient permissions
Solutions:
- Check dependency requirements
- Run
php bin/console doctrine:migrations:migrate - Verify file permissions
Symptoms: Framework doesn't appear as loaded after clicking "Load Framework"
Causes:
- Database connection error
- Framework command class not found
- Duplicate framework code
Solutions:
- Check database connection in
.env - Verify framework command exists in
src/Command/ - Review error logs for details
Symptoms: Error creating database backup
Causes:
- PostgreSQL
pg_dumpnot accessible - Insufficient disk space
- Database connection parameters incorrect
Solutions:
- Verify
pg_dumpin system PATH - Check available disk space
- Verify
DATABASE_URLin.env
Symptoms: "License report not found" or generation error
Causes:
license-report.shscript not found- Composer not installed
- Script permissions
Solutions:
- Verify
license-report.shexists atscripts/tools/license-report.sh - Run
composer install - Make script executable:
chmod +x scripts/tools/license-report.sh
Symptoms: User still cannot login after MFA reset
Causes:
- Browser cache
- Session not cleared
- Token deletion failed
Solutions:
- Clear browser cache and cookies
- User should try incognito/private mode
- Verify tokens deleted in database:
SELECT * FROM mfa_token WHERE user_id = X;
-
Check Logs
- Application logs:
var/log/dev.logorvar/log/prod.log - Web server logs:
/var/log/nginx/error.logor/var/log/apache2/error.log
- Application logs:
-
Error Details
- Enable debug mode (development only):
APP_DEBUG=1 - Check Symfony profiler toolbar for detailed error traces
- Enable debug mode (development only):
-
Database Verification
# Check database connection php bin/console doctrine:query:sql "SELECT 1" # Verify migrations php bin/console doctrine:migrations:status
-
Clear Cache
php bin/console cache:clear
Currently no keyboard shortcuts implemented. Navigate using mouse/trackpad.
Admin API endpoints (require ROLE_ADMIN):
| Endpoint | Method | Description |
|---|---|---|
/admin/compliance/frameworks/available |
GET | List available frameworks |
/admin/compliance/frameworks/load/{code} |
POST | Load compliance framework |
/admin/compliance/frameworks/delete/{code} |
POST | Delete compliance framework |
/admin/licensing/generate |
POST | Generate license report |
Authentication: Session-based (cookie) CSRF Protection: Required for POST requests
| Purpose | Path |
|---|---|
| Backups | var/backups/ |
| Logs | var/log/ |
| Cache | var/cache/ |
| License Report | docs/reports/license-report.md |
| Module Config | config/modules.yaml |
Nach composer install / git pull ohne Container-Neustart kann das Schema
gegenüber den Entity-Definitionen veralten und einen 500-Fehler produzieren
(TableNotFoundException, Unknown column …, MappingException). Statt
500 leitet die App auf /quick-fix — eine standalone Seite mit einem Button
"Migrationen jetzt anwenden". Funktioniert ohne Login.
| Szenario | Hauptlösung | Quick-Fix-Rolle |
|---|---|---|
Docker / Self-Host (docker compose up -d) |
Entrypoint init-mysql.sh ruft migrate beim Start auf |
Nicht nötig — Safety-Net |
| VPS mit SSH | php bin/console doctrine:migrations:migrate nach Code-Update |
Safety-Net falls vergessen |
| Shared Hosting / FTP-only | Quick-Fix-UI ist die einzige Lösung | Hauptlösung — Token-Mode empfohlen |
Admin-Settings unter /admin/quick-fix-settings:
| Setting | Default | Bedeutung |
|---|---|---|
fallback_ui_enabled |
true | Master-Schalter. Off = 500er wie zuvor (audit-kritische Prod) |
require_installer_token |
false | Token aus var/setup-token muss übergeben werden |
allow_in_dev_only |
false | Nur erreichbar wenn APP_ENV=dev |
ip_allowlist |
leer | Komma-Liste erlaubter Client-IPs |
Token wird beim composer install automatisch in var/setup-token (mode 0640)
geschrieben. Per FTP/SFTP auslesbar. Cookie-Persist nach erstem Aufruf via
?token=…, sodass POST-Apply nicht erneut den Token braucht.
Nur Migrationen aus dem aktuellen Build (migrations/ Verzeichnis) werden
ausgeführt — kein manueller SQL, keine Schema-Reconcile (das verlangt
weiterhin app:schema:reconcile per CLI durch einen Admin).
- Initial admin guide creation
- Documented all Phase 6L features
- Added troubleshooting section
- Best practices guidelines
- Added Quick-Fix fallback section (composer-deployment scenario)
Document Maintainer: Little ISMS Helper Development Team Feedback: Create an issue on GitHub for guide improvements
