Skip to content

Implement Enterprise Runtime Configuration Management #673

@aaronlippold

Description

@aaronlippold

Enterprise Runtime Configuration Management Implementation

Overview

Implement dynamic runtime configuration management to match enterprise tools like Heimdall2, enabling administrators to modify settings, manage users, and perform bulk operations without application restarts.

Research Summary

Current State

  • ✅ Comprehensive environment variable documentation (ENVIRONMENT_VARIABLES.md)
  • ✅ OIDC auto-discovery reducing configuration complexity
  • ❌ All configuration requires application restart
  • ❌ No web-based administration interface
  • ❌ Limited bulk operation capabilities

Enterprise Requirements (from #654)

Based on user feedback comparing to Heimdall2 capabilities:

  • Runtime configuration changes without restarts
  • Web-based administration interface
  • Bulk user management operations
  • STIG/SRG bulk import and update capabilities
  • Scalable configuration management

Implementation Strategy

Recommended Technology Stack

Proven Rails gems for rapid implementation:

  1. rails-settings-cached - Database-backed configuration with automatic caching
  2. ActiveAdmin - Complete admin interface framework
  3. Flipper - Feature flags and A/B testing capabilities
  4. Flipper-UI - Web interface for feature management

Architecture Approach

Security Boundaries

# Keep as environment variables (security-critical):
- Database connections (DATABASE_URL)
- OIDC client secrets (VULCAN_OIDC_CLIENT_SECRET) 
- Encryption keys
- LDAP bind credentials

# Move to database-backed (administrative):
- Welcome text and UI customizations
- Session timeout settings
- Email templates and contact information
- Feature flags for experimental features
- User registration and project creation permissions

Technical Implementation

# Database-backed settings with validation
class Setting < RailsSettingsCached::Base
  field :welcome_text, type: :string, default: "Welcome to Vulcan"
  field :session_timeout_minutes, type: :integer, default: 60
  field :contact_email, type: :string, default: "admin@vulcan.local"
  
  validates :session_timeout_minutes, 
    inclusion: { in: 15..480, message: "must be between 15 minutes and 8 hours" }
end

# Runtime usage throughout application
# Before: ENV['VULCAN_WELCOME_TEXT'] || 'Welcome to Vulcan'  
# After:  Setting.welcome_text

Implementation Phases

Phase 1: Foundation (4-6 hours)

Dependencies: Ruby 3.2+, Rails 7+, Modern asset pipeline
Deliverables:

  • Install and configure rails-settings-cached
  • Install and configure ActiveAdmin
  • Create admin authentication and authorization
  • Migrate 5-10 safe settings to database-backed configuration
  • Basic admin interface for settings management

Settings to migrate first:

  • Welcome text and contact information
  • Session timeout (with validation limits)
  • User registration enablement
  • Project creation permissions
  • Email template customizations

Phase 2: User Management (2-3 hours)

Deliverables:

  • Complete admin interface for user management
  • Batch operations (bulk admin assignment, account confirmation)
  • User search and filtering capabilities
  • Audit logging for administrative actions

Phase 3: Feature Flags (1-2 hours)

Deliverables:

  • Install and configure Flipper with web UI
  • Implement feature flags for experimental features
  • A/B testing capabilities for UI improvements
  • Gradual feature rollout mechanisms

Phase 4: Bulk Operations (2-4 hours)

Deliverables:

  • STIG/SRG bulk import operations
  • Component batch management
  • Automated maintenance task scheduling
  • Background job monitoring interface

Benefits Analysis

Enterprise Administration Capabilities

Zero-restart configuration changes
Web-based administrative interface
Scalable user management with batch operations
Feature toggles for safe deployments
Bulk STIG/SRG management operations
Audit trails for configuration changes

Implementation Advantages

  • Rapid Development: 8-12 hours total using proven gems vs. weeks of custom development
  • Battle-Tested: ActiveAdmin powers thousands of Rails applications
  • Maintainable: Standard Rails patterns, extensive documentation
  • Secure: Maintains separation between security-critical and administrative settings
  • Scalable: Database-backed with automatic caching

Dependencies

Prerequisites

Technical Requirements

  • Ruby 3.2+ (for gem compatibility)
  • Rails 7+ (current: 7.0.8.7)
  • PostgreSQL (current setup)
  • Redis/Memcached (for settings caching)

Success Criteria

Functional Requirements

  • Administrators can modify UI settings without restarts
  • Bulk user operations (admin assignment, confirmation, etc.)
  • Feature flags enable safe experimental feature deployment
  • STIG/SRG bulk import and management capabilities
  • All changes include audit logging

Performance Requirements

  • Settings cached automatically (< 10ms retrieval)
  • Admin interface responsive (< 2s page loads)
  • Bulk operations process in background jobs
  • Zero downtime for configuration changes

Security Requirements

  • Admin interface requires authentication and authorization
  • Security-critical settings remain environment variable based
  • All administrative actions logged with user attribution
  • Settings validation prevents invalid configurations

Timeline Estimate

Total Implementation: 8-12 hours over 2-3 sprints

Sprint 1 (Post-Webpacker Migration):

  • Phase 1: Foundation (4-6 hours)

Sprint 2:

  • Phase 2: User Management (2-3 hours)
  • Phase 3: Feature Flags (1-2 hours)

Sprint 3:

  • Phase 4: Bulk Operations (2-4 hours)
  • Documentation and testing

Related Issues

References


Priority: Medium (after infrastructure upgrades)
Labels: enhancement, enterprise, administration, configuration
Estimated LOE: 8-12 hours across 2-3 sprints

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementPull requests that add a new feature

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions