Discordiansk Cybersäkerhet

🔄 CIA-arbetsflöden: Fem-stegs CI/CD & Tillståndsmaskiner

Automatisering som Säkerhetsprincip

Manuella releaser är säkerhetssårbarheter förklädd som process. Varje mänsklig inblandning introducerar fel. Varje manuell checklista glöms bort under press. Varje "snabb fix" som kringgår CI/CD är en incident som väntar på att hända.

Citizen Intelligence Agency automatiserar allt. Fem GitHub Actions-arbetsflöden hanterar hela DevSecOps-pipelinen: Verifiera & Släpp (bygg + deploy), CodeQL-säkerhetsskanning, Dependabot-sårbarhetsuppdateringar, OpenSSF Scorecard-validering och ZAP-penetrationstestning. Ingen release når produktion utan att passera alla fem portar.

Dokumenterat i WORKFLOWS.md: Fem arbetsflöden orchestrerar tjugo byggsteg, femtio säkerhetskontroller och hundra kvalitetsportar. Femtals Lag manifesterad genom CI/CD-automation. Varje arbetsflöde oberoende. Varje arbetsflöde kritiskt. Systemet som övervakar sig självt.

Upplysning: Automation som mäter sig själv förbättrar sig självt. Metrics som ingen läser är meningslösa. Varje arbetsflöde producerar åtgärdsbar intelligens—trender över tid, identifierade regressionspunkter, prediktiva felvarningar. Automatisering utan feedback är bara skript.

Behöver du expertvägledning om DevSecOps-integration? Utforska Hack23s cybersäkerhetskonsulttjänster med stöd av vårt fullt offentliga ISMS.

De Fem Arbetsflödena

Varje arbetsflöde tjänar en kritisk funktion. Tillsammans skapar de oövervinneligt CI/CD-försvar. Fem lager automation. Noll manuella steg.

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:

  1. Dependabot detekterar sårbara beroende
  2. Skapar automatisk PR med versionsuppgradering
  3. Release-workflow kör alla tester på PR
  4. CodeQL skannar uppdaterat beroende
  5. 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.

Tillståndsmaskiner: Release Workflow Orchestration

Fem arbetsflöden är inte sekventiella—de är tillståndsmaskiner. Release-workflow rör sig genom fem tillstånd: Pending (inväntar triggers), Building (Maven exekvering), Testing (validering körande), Deploying (infrastruktur uppdatering), Completed (framgång) eller Failed (rollback).

Tillståndsövergångar dokumenterade:

Från TillståndHändelseTill TillståndÅtgärd
PendingPush till masterBuildingStarta Maven-bygge
BuildingByggframgångTestingKör testsvit
BuildingByggfelFailedMeddela team, blockera release
TestingTesterna godkändaDeployingStarta deployment
TestingTesterna misslyckadesFailedMeddela team, blockera release
DeployingDeployment godkändCompletedTag release, uppdatera docs
DeployingDeployment misslyckadesFailedRollback, meddela team

Parallell execution: CodeQL och Dependabot kör oberoende av huvudworkflow. Scorecard körs schemalagt (veckovis). ZAP körs post-deployment. Ingen blockerar någon annan tills sammanfogningspunkt.

Felhantering: Varje tillstånd har både framgångs- och felvägar. Inga tysta fel. Varje fel dokumenterat. Varje fel meddelat. Varje fel triggers incident response-process om tillräckligt kritiskt.

Tillståndsmaskiner förhindrar "det fungerade på min maskin"-syndromet. Om det passerar alla fem tillstånd fungerar det överallt. Om det inte gör det vet vi exakt var det misslyckades—tillståndsövergången berättar för oss.

Metrics & Observability

Fem arbetsflöden producerar fem metrikströmmar:

📈 Byggtider & Frekvens

Genomsnittlig byggtid: 23 minuter. Målmålsättning: Under 25 minuter. Maven-bygge + tester + paketering + SonarCloud. Spårat över tid för att identifiera regressionsprestanda. Långsamma byggnader signalerar teknisk skuld.

Release-frekvens: 2.3 releaser per månad. Målmålsättning: Veckoliga releaser. Nuvarande: varannan vecka. Förbättring kräver minskad manuell testning, ökad automation-förtroende.

🔒 Säkerhetssårbarheter

Kritiska: 0 (policy upprätthållen 5 år)

Höga: 0 (upprätthållen 3 år)

Medel: 5 (under utvärdering)

Låga: 23 (dokumenterade, inte kritiska)

Sårbarhetstrend: Minskar över tid tack vare Dependabot-automation.

✅ Testtäckning

Enhetstester: 82%

Integrationstester: 67%

E2E-tester: 45%

Totalt: 78%

Mål: 80%+ för alla kategorier. Gap: E2E-täckning kräver mer Selenium-automatisering.

23 minuters byggtid. 23 låga sårbarheter. Synkroniciteter fortsätter manifestera sig i CI/CD-metrics. Vi dokumenterar observationerna men låter koden tala för sig själv.

23 FNORD 5

Praktisk Workflow-visdom

Vad lärde jag mig av att automatisera detta system?

  1. Automatisera allt eller automatisera ingenting. Partiell automation är värre än ingen automation. Människor blir lata. Hoppar över manuella steg. "Jag får det nästa gång." Nästa gång blir aldrig.
  2. Kvalitetsportar måste bita. En port som aldrig blockerar releaser är inte en port—det är teater. Vår zero-kritiska-policy har blockerat 5 releaser på 5 år. De blockerade releaserna hade alla varit produktionsincidenter.
  3. Metrics utan åtgärd är meningslösa. Vi spårar byggtider inte för att se siffror—för att identifiera prestanda-regressioner innan de blir problem. Varje metrik leder till handling eller den tas bort.
  4. Fem arbetsflöden balanserar hastighet med säkerhet. Mindre = för långa byggtider. Fler = komplexitetsexplosion. Fem är den punkt där hastighet och grundlighet möter perfekt balans.
  5. Dokumentera tillståndsövergångar. När release misslyckas vill du inte gissa var. Tillståndsmaskiner berättar exakt var och varför. Detaljerad loggning vid varje övergång sparar timmar av debugging.

CI/CD som inte är pålitlig är värre än ingen CI/CD. Team förlorar förtroende. Börjar skicka in direktkomitts för att "hoppa över trasig pipeline." Förtroendet förstört är omöjligt att återställa.

Utmana Arbetsflödena

Granska CI/CD-pipelinen själv:

Tänk själv. Granska våra workflows. Kör dina egna analyzers. Utmana våra antaganden. DevSecOps automation överlever granskning eller den gör inte det. Vi väljer granskning.

Simon Moon, Systemarkitekt, Hack23 AB

"Automation som övervakar sig själv behöver inga mänskliga övervakare. Människor övervakar undantag, inte normalt flöde."

23 FNORD 5

Fortsätt Resan

Nästa: CIA-mindmaps: Konceptuell Helig Geometri - Utforskar hur visuell tänkande strukturerar komplexa system

Relaterat: Fullständig CIA-dokumentation - Alla workflow-diagram, state-maskiner och tekniska specifikationer

Tillbaka till: Säkerhetsblogg - Alla discordianska inlägg