Skip to content

Image Security, SBOM & Cryptographic Signing (The Imperial Seal)

Gubernator features a native Image Security & Supply Chain Subsystem (The Imperial Seal / The Armory / Armamentarium) providing automated CVE vulnerability scanning, Software Bill of Materials (SBOM) generation in CycloneDX and SPDX formats, Cosign ECDSA image signing and verification, and pre-deployment Gatekeeper admission control.


πŸ› Architecture & Security Pipeline

                                [ Stack Deploy / Container Run Request ]
                                                 β”‚
                                                 β–Ό
                        β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                        β”‚    GUBERNATOR ADMISSION GATEKEEPER (Port 4000)   β”‚
                        β”‚    - Evaluates Cluster & Stack Security Policy  β”‚
                        β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                                                β”‚
                 β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                 β–Ό                                                             β–Ό
    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”                                β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
    β”‚ πŸ” 1. Check de Firma     β”‚                                β”‚ πŸ” 2. Check de CVEs       β”‚
    β”‚    (Cosign / Sigstore)   β”‚                                β”‚    (Trivy / Grype)        β”‚
    β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€                                β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
    β”‚ ΒΏEstΓ‘ la imagen firmada  β”‚                                β”‚ ΒΏTiene la imagen CVEs     β”‚
    β”‚ por una clave de confianza?                               β”‚ CRITICAL o HIGH?          β”‚
    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                                β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                 β”‚                                                            β”‚
                 β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€ ❌ No firmada / Firma invΓ‘lida                    β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€ ❌ Supera umbral de severidad
                 β”‚          (Si polΓ­tica = 'ENFORCE')                         β”‚          (Si polΓ­tica = 'BLOCK_CRITICAL')
                 β”‚                                                            β”‚
                 β–Ό                                                            β–Ό
    ╔══════════════════════════╗                                 ╔═══════════════════════════╗
    β•‘  β›” DESPLIEGUE RECHAZADO β•‘                                 β•‘   β›” DESPLIEGUE BLOQUEADO β•‘
    β•‘ "Image signature missing"β•‘                                 β•‘ "Found 2 Critical CVEs"   β•‘
    β•šβ•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•                                 β•šβ•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•
                 β”‚                                                            β”‚
                 β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                                         β”‚ βœ… Pasa todas las polΓ­ticas activas
                                         β–Ό
                        ╔═════════════════════════════════╗
                        β•‘ πŸš€ Despliegue Permitido en Nodosβ•‘
                        β•šβ•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•

🎨 Web UI Visualization Suite

Access Image Security & SBOM in the Web Dashboard (Port 4001) to interact with 4 specialized tabs:

1. πŸ” Vulnerabilities (CVE Scanner)

  • Image Catalog: Discovers all images deployed across Legions/Stacks.
  • Severity Breakdown: Color-coded badges for CRITICAL, HIGH, MEDIUM, and LOW CVE counts.
  • CVE Inspection: Detailed dialog displaying CVE IDs, CVSS scores, affected packages, fixed versions, descriptions, and direct links to NIST / NVD.
  • 1-Click Scan: Trigger on-demand security scans for any container image tag.

2. πŸ“¦ SBOM Explorer (Software Bill of Materials)

  • Dependency Tree: Inspects base OS packages (musl, busybox, libssl, glibc) and language runtime libraries.
  • License Compliance: Highlights software licenses (MIT, Apache-2.0, BSD, GPL) for legal audit compliance.
  • 1-Click Export: Export the full SBOM in CycloneDX JSON or SPDX JSON format.

3. πŸ” Image Signatures & Keys (Cosign)

  • Keypair Management: Generate ECDSA P-256 Cosign-compatible keypairs directly in-cluster or import external public keys.
  • Verification Status: Displays whether images are 🟒 Verified or 🟑 Unsigned.
  • 1-Click Signing: Sign container images with private keys stored or entered securely.

4. πŸ“œ Gatekeeper Policies (Admission Controller)

  • Signature Enforcement:
  • Disabled: Allow any container image.
  • Audit / Warn Only: Allow unsigned images but flag with warning badges in the dashboard.
  • Strict Enforcement: β›” Reject container deployments if the image is not cryptographically signed by a trusted key.
  • CVE Severity Admission Gate:
  • Allow All: No vulnerability blocking.
  • Block on CRITICAL: β›” Block deployment if the image contains known Critical CVEs.
  • Block on HIGH and CRITICAL: β›” Strict compliance blocking High and Critical CVEs.
  • Unfixed CVE Allowance: Toggle whether to allow images if no official patch/fix is available yet.

πŸš€ Docker Compose Security Labels Reference

Stacks can declare custom security rules in docker-compose.yml:

version: '3.8'

services:
  payment-api:
    image: company/payment-api:2.1.0
    deploy:
      labels:
        # Require valid Cosign signature before allowing deployment
        - gbnt.security.require-signature=true
        # Reject deployment if image contains CRITICAL vulnerabilities
        - gbnt.security.max-cve-severity=critical
        # Reject deployment even if no upstream fix is available yet
        - gbnt.security.allow-unfixed=false

πŸ’» CLI Command Reference

Scan Images

# List all scanned images and severity metrics
gbnt scan

# Scan a specific image
gbnt scan postgres:16-alpine

Export SBOM

# Export in CycloneDX JSON
gbnt sbom postgres:16-alpine --format cyclonedx-json

# Export in SPDX JSON
gbnt sbom postgres:16-alpine --format spdx-json

Sign & Verify Images

# Generate a new Cosign signing keypair
gbnt security key generate --name "production-key"

# Sign an image
gbnt image sign company/app:1.0 --key /path/to/cosign.key

# Verify image signature against trusted keys
gbnt image verify company/app:1.0

Manage Gatekeeper Policies

# View current policy
gbnt security policy

# List trusted public keys
gbnt security key ls

πŸ“‘ REST API Reference

Endpoint Method Role Description
/v1/security/scans GET all List all image vulnerability scans and summary metrics
/v1/security/scans/:id GET all Get detailed scan report with all CVEs
/v1/security/scans/trigger POST operator Trigger immediate vulnerability scan
/v1/security/sbom?image=... GET all Retrieve or export image SBOM (CycloneDX / SPDX)
/v1/security/keys GET all List trusted public signing keys
/v1/security/keys/generate POST admin Generate new Cosign ECDSA keypair
/v1/security/keys POST admin Import trusted public key
/v1/security/keys/:id DELETE admin Delete trusted key
/v1/security/sign POST operator Cryptographically sign image digest
/v1/security/policy GET all Get active cluster admission policy
/v1/security/policy POST admin Update cluster admission policy
/v1/security/evaluate POST all Evaluate image admission against policies