1. 🚀 Verifiera & Släpp: 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 och E2E-tester, genererar SBOM och SLSA Level 3-attestering, och deployer till miljöer.
Byggsteg i sekvens:
- Checkout källkod och 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 för 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 för säkerhetssårbarheter, kodkvalitetsproblem och anti-mönster. Körs på varje pull request och 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. Säkerhetsrå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. Säkerhetsfliken visar alla öppna problem. Automatiska PR:er skapade för 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 överser 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årbarhetsgenomsö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
Säkerhetspolicy: 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 genom säkerhetskriser.
4. 📊 Scorecard: Supply Chain-metrics
OpenSSF Scorecard automatiserad validering. Definierad i scorecards.yml. Körs veckovis för att mäta supply chain-säkerhetshygien. Offentlig badge visar aktuell poäng: 7.2/10.
Metrikserier som mäts:
- Binary-Artifacts: Säkerställer ingen förbyggd 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 över 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 förbättring kräver månaders arbete. Långsam framsteg = hållbar framsteg.
Scorecard-poäng förbä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 Säkerhetsskanning
OWASP ZAP penetrationstestning. Integrerat i huvudreleasearbetsflöde. Kör efter deployment för 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. Säkerhetsfel konfiguration. Exponering av känslig data.
Rapportintegration: Resultat publicerade som GitHub Actions-artefakter. ZAP-varningsrapport i HTML/Markdown. Jämförelse med tidigare skanningar. Regressionsdetektering. Varningstrends spårade över releaser.
Målmätrik: Noll höga/kritiska ZAP-varningar vid produktion. Medelstora varningar utvärderade case-by-case. Låga varningar dokumenterade för 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.