feat: break-glass security reset
Implement dual-registry container publishing to both GHCR and Docker Hub
for maximum distribution reach. Add emergency security reset endpoint
("break-glass" mechanism) to recover from ACL lockout situations.
Key changes:
Docker Hub + GHCR dual publishing with Cosign signing and SBOM
Emergency reset endpoint POST /api/v1/emergency/security-reset
Token-based authentication bypasses Cerberus middleware
Rate limited (5/hour) with audit logging
30 new security enforcement E2E tests covering ACL, WAF, CrowdSec,
Rate Limiting, Security Headers, and Combined scenarios
Fixed container startup permission issue (tmpfs directory ownership)
Playwright config updated with testIgnore for browser projects
Security: Token via CHARON_EMERGENCY_TOKEN env var (32+ chars recommended)
Tests: 689 passed, 86% backend coverage, 85% frontend coverage
This commit is contained in:
@@ -101,6 +101,12 @@ func Register(router *gin.Engine, db *gorm.DB, cfg config.Config) error {
|
||||
promhttp.HandlerFor(reg, promhttp.HandlerOpts{}).ServeHTTP(c.Writer, c.Request)
|
||||
})
|
||||
|
||||
// Emergency endpoint - MUST be registered BEFORE Cerberus middleware
|
||||
// This endpoint bypasses all security checks for lockout recovery
|
||||
// Requires CHARON_EMERGENCY_TOKEN env var to be configured
|
||||
emergencyHandler := handlers.NewEmergencyHandler(db)
|
||||
router.POST("/api/v1/emergency/security-reset", emergencyHandler.SecurityReset)
|
||||
|
||||
api := router.Group("/api/v1")
|
||||
|
||||
// Cerberus middleware applies the optional security suite checks (WAF, ACL, CrowdSec)
|
||||
|
||||
Reference in New Issue
Block a user