1. 🚀 Verificer & Frigiv: Huvudpipeline
Huvudarbetsflöde som hanterar hela releasecykeln. Dokumenterat i release.yml. Utlöses vid push till master eller manuellt via workflow_dispatch. Orkestrerar Maven-bygget, kör enhetstester, integrationstester og E2E-tester, genererar SBOM og SLSA Level 3-attestering, og deployer till miljöer.
Byggsteg i sekvens:
- Checkout källkod og konfiguration
- Java 17 setup med Maven-cache
- Maven verify (kompilera + test + paket)
- SonarCloud kvalitetsanalys
- SBOM-generering (CycloneDX format)
- Docker image build & push
- SLSA provenance attestation
- AWS deployment (via CloudFormation)
Kvalitetsportar: 80% testtäckning krävs. Security hotspot-trösklar upprätthålls. Alla kritiska sårbarheter blockerar release. Zero-kritiska-policy upprätthålls.
Releasepipelinen har 23 individuella steg från källkod till produktion. 23 kontrollpunkter. 23 möjligheter for system att säga "nej". När alla säger "ja" vet du att releasen är säker.
2. 🔍 CodeQL: Säker Kodanalys
GitHub-native SAST-integration. Definierad i codeql.yml. Skannar Java-källkod for sikkerhedssårbarheter, kodkvalitetsproblem og anti-mönster. Körs på varje pull request og schemalagd veckoscankning.
Språk som analyseras: Java (primär), JavaScript (frontend-komponenter). CodeQL databaser byggda från varje commit. Inkrementell analys identifierar nya sårbarheter. Sikkerhedsrådgivningar automatiskt länkade.
Sårbarhetskategorier: SQL-injektion, XSS, SSRF, Path Traversal, Kryptografiska svagheter, Osäker deserialisering, Sessionshanteringsproblem, Autentiseringsbrister. Varje detektion kartlagd till CWE-ID. Varje sårbarhet prioriterad (kritisk/hög/medel/låg).
Workflow-integration: Blockerar pull request-sammanslagning vid höga/kritiska fynd. Sikkerhedsfliken visar alla öppna problem. Automatiska PR:er skapade for fixar där möjligt. Genomsnittlig tid till fix: 2.3 dagar (23 timmar × 2.4 arbetsdagar/vecka).
CodeQL hittar vad människor missar. Utmattningstestare overser sårbarheter klockan 23:00 på fredag. CodeQL kör lika ihärdigt klockan 03:00 på söndag som måndag morgon. Konsekvent. Outtröttlig. Tyst vaktmästare.
3. 🔐 Dependabot: Supply Chain-skydd
Automatiserad beroendevulnerabilitethantering. Konfigurerad i dependabot.yml. Övervakar Maven (Java), npm (JavaScript), GitHub Actions, Docker-baser. Dagliga sårbarhetsgennemsökningar mot GitHub Advisory Database.
Automatiserad uppdateringsprocess:
- Dependabot detekterar sårbara beroende
- Skapar automatisk PR med versionsuppgradering
- Release-workflow kör alla tester på PR
- CodeQL skannar uppdaterat beroende
- Manuell granskning → sammanfogning → deploy
Sikkerhedspolicy: Kritiska sårbarheter åtgärdade inom 24 timmar. Höga sårbarheter inom 7 dagar. Medelstora sårbarheter inom 30 dagar. Låga sårbarheter vid nästa stora release. Policy dokumenterad i SECURITY.md.
Supply chain-transparens: SBOM genererad varje release. FOSSA-licenskontroller. SLSA Level 3-provenance. OpenSSF Scorecard-mått. Fullständig beroendekedja spårbar.
Dependabot PRs kommer alltid i multiplar av fem när stora sårbarhetsavslöjanden händer. Log4Shell: 15 PRs. Spring4Shell: 10 PRs. Universum som bekräftar Femtals Lag gennem sikkerhedskriser.
4. 📊 Scorecard: Supply Chain-metrics
OpenSSF Scorecard automatiserad validering. Definierad i scorecards.yml. Körs veckovis for att mäta supply chain-sikkerhedshygien. Offentlig badge visar aktuell poäng: 7.2/10.
Metrikserier som mäts:
- Binary-Artifacts: Säkerställer ingen forbyggd binär i repo
- Branch-Protection: Verifierar masterskydd är aktiverat
- CI-Tests: Bekräftar testkörs på alla commits
- Code-Review: Kontrollerar PR-granskningar krävs
- Dangerous-Workflow: Söker efter osäkra GitHub Actions-mönster
- Dependency-Update-Tool: Bekräftar Dependabot är konfigurerad
- Maintained: Kontrollerar recent commit-aktivitet
- Pinned-Dependencies: Verifierar specifika versioner, inte "senaste"
- SAST: Bekräftar CodeQL är aktiv
- Signed-Releases: Säkerställer SLSA attestation
Poängspårning over tid: Startpoäng 5.8/10 (år 1). Nuvarande poäng 7.2/10 (år 5). Målpoäng 8.0/10 (år 6). Varje 0.5 poäng forbättring kräver månaders arbete. Långsam framsteg = hållbar framsteg.
Scorecard-poäng forbättras inte linjärt. 5 → 6 är lätt. 6 → 7 är svårare. 7 → 8 kräver fundamental process omdesign. 8 → 9 kräver organisation transformation. 9 → 10 är nästan omöjligt.
5. 🛡️ ZAP: Dynamisk Sikkerhedsskanning
OWASP ZAP penetrationstestning. Integrerat i huvudreleasearbetsflöde. Kör efter deployment for att verifiera körande applikationssakerhet. Hittar runtime-sårbarheter som statisk analys missar.
Skanningstyper:
- Baseline-skanning: Snabb passiv analys (5 minuter)
- Full-skanning: Djup aktiv testning (30 minuter)
- API-skanning: REST endpoint-specifik testning
- Autentiserad skanning: Testning av skyddade resurser
Sårbarhetsdetektering: OWASP Top 10 täckning. Injektionsflaws (SQL, LDAP, XPath). Brutna autentisering/sessioner. XSS (Reflected, Stored, DOM). Osäkra direktobjektreferenser. Sikkerhedsfel konfiguration. Exponering av känslig data.
Rapportintegration: Resultat publicerade som GitHub Actions-artefakter. ZAP-varningsrapport i HTML/Markdown. Jämforelse med tidigare skanningar. Regressionsdetektering. Varningstrends spårade over releaser.
Målmätrik: Noll höga/kritiska ZAP-varningar vid produktion. Medelstora varningar utvärderade case-by-case. Låga varningar dokumenterade for framtida åtgärdande.
ZAP hittar vad CodeQL inte kan—runtime-beteendeproblem, konfigurationsbrister, miljöspecifika sårbarheter. Statisk + dynamisk analys = fullständig täckning. Någon saknas = blinda fläckar.