CI/CD-pipelines möjliggör snabbare och tätare programvaruutveckling, från design till driftsättning. Men när de först gjorde entré på teknikscenen saknade de ofta en viktig länk: säkerhet.
Det är ett problem, särskilt med tanke på sådan statistik som denna: ungefär en av fem organisationer rapporterade en säkerhetsincident i sin CI/CD-pipeline under det föregående året, enligt en nyligen genomförd undersökning av Techstrong Research.
I takt med att CI/CD-pipelines har blivit allt vanligare har de också förändrat hotbilden för programvaruteam. Som projektet Open Worldwide för applikationssäkerhet (OWASP) påpekar: “Med tanke på deras betydelse och popularitet är CI/CD-pipelines också ett attraktivt mål för illasinnade hackare, och deras säkerhet kan inte ignoreras.”
I den här artikeln går vi igenom de specifika riskerna – samt effektiva principer och metoder för att minska dessa risker och säkerställa CI/CD-pipeline-säkerhet.
Vad är en CI/CD-pipeline?
Låt oss först se till att vi har samma utgångspunkt: Vad är CI/CD? CI/CD är en förkortning för kontinuerlig integrering och kontinuerlig leverans och syftar på en uppsättning processer och verktyg som moderna programvaruteam använder för att utforma, bygga och slutligen distribuera programvara – med automatisering som en av de centrala möjliggörarna för snabbare och tätare leverans och uppdatering av kod.
Så här definierade vi det i vår tidigare artikel, “Översikt över CI/CD-pipelines: Därför bör du känna till dem”: “En CI/CD-pipeline är en transparent, automatiserad och tillförlitlig process för utveckling och leverans av programvara.”
Målet är vanligtvis inte bara att leverera snabbare och oftare – det handlar också om att förbättra kvalitet, tillförlitlighet och – förutsatt att du ger det rätt prioritet – säkerhet.
Vanliga säkerhetsrisker i CI/CD: 5 fokusområden
Grunden till många säkerhetsrisker i CI/CD bör åtminstone låta något bekant för en teknikexpert. Sådant som åtkomstkontroll och överdrivna behörigheter, otillräcklig övervakning och loggning samt okontrollerade beroenden och programvaruförsörjningskedjor bidrar alla till ökade risker när de inte hanteras korrekt.
OWASP har publicerat en lista över de 10 främsta säkerhetsriskerna i CI/CD som kan vara värd att använda som riktmärke. Den är en vidareutveckling av organisationens välkända OWASP:s topp 10 över säkerhetsrisker i webbapplikationer, som är en allmänt accepterad branschstandard för säkerhet i webbapplikationer.
Risker i CI/CD-pipelines kan både introduceras och förvärras av automatisering. Många av riskerna introduceras automatiskt – eller distribueras automatiskt till produktion – i CI/CD-pipelines. Något ironiskt kan automatisering av säkerheten i dessa pipelines med verktyg för infrastruktur som kod (IaC) eller annan automatisering på samma sätt introducera eller förstärka risker om du inte är uppmärksam, påpekar Derek Ashmore, huvudansvarig för applikationstransformation på Asperitas.
Enligt Ashmore är följande fem viktiga riskområden sådana som bör beaktas när du säkrar dina CI/CD-pipelines:
- Åtkomstkontroll: ”Åtkomstkontrollen är ofta överdimensionerad av bekvämlighetsskäl och följer inte principerna om minsta möjliga behörighet och dubbel kontroll”, säger Ashmore. I allmänhet bör principen om minsta möjliga behörighet gälla här – ge inte personer eller maskiner åtkomst till data eller system som de faktiskt inte behöver för att utföra sina arbetsuppgifter.
- Ej validerade beroenden: Dagens programvara – och därmed även CI/CD-pipelines – förlitar sig ofta på bibliotek från tredje part och andra externa beroenden, och dessa komponenter har ibland sårbarheter. ”Se alltid till att externa beroenden valideras och har en spårbar och granskningsbar överlämningskedja”, säger Ashmore.
- Granskning och loggning: Se till att ni har omfattande granskning och loggning på plats. Bristande insyn och granskningsbarhet kan leda till ökade säkerhetsrisker som ni annars inte skulle känna till.
- Behörighetseskalering: Automatisering – av det slag som är inneboende i CI/CD och CI/CD-säkerhet – kan ibland utvecklas i separata silor, vilket leder till oavsiktliga luckor där behörigheter kan höjas genom att en oavsiktlig automatiseringssekvens körs. ”För att minska denna risk bör ni se till att principen om minsta möjliga behörighet tillämpas och att testfall implementeras för automatiseringens arbetsflöden samt enskilda uppgifter eller pipelines”, säger Ashmore.
- Otillräcklig automatiserad testning: Automatiserad testning är avgörande inte bara för en stark CI/CD-pipelinesäkerhet – tänk till exempel på automatiserade sårbarhetsskanningar av containeravbildningar – utan även för en övergripande välfungerande pipeline. ”Pipelinefel kan skapa oönskade säkerhetssårbarheter och påverka applikationens utvecklingsteam negativt genom att hindra dem från att utföra sina tilldelade arbetsuppgifter”, säger Ashmore.
10 Bästa CI/CD-verktygen!
Here's my pick of the 10 best software from the 10 tools reviewed.
Clicks on the links below may earn a commission, which supports our independent testing and review of software and services. Learn more about how we stay transparent.
15 bästa metoderna för starkare CI/CD-säkerhet
När du har fått en gedigen förståelse för riskerna är det dags att fokusera på lösningar. Den goda nyheten är att det finns många, delvis eftersom branschen i stort har insett vikten av att integrera säkerhet som en förstaklassmedborgare i CI/CD.
Ashmore från Asperitas gav oss en genomgång av 15 allmänt accepterade bästa metoder och taktiker för att stärka säkerheten i CI/CD-pipelines. Utan vidare:
- Använd säkra versionshanteringssystem: En av de främsta fördelarna med versionshanteringssystem som Git är att de registrerar ändringshistorik som kan behövas för att utreda säkerhetsintrång eller andra problem. ”Helst bör ingenting ändras manuellt”, säger Ashmore. Ta en titt på vår omfattande lista över källkodshanteringsverktyg för fler alternativ: ”De 20 bästa versionshanteringsverktygen – granskning”
- Tillämpa minsta möjliga behörighet: Se till att roller och behörigheter som tilldelas både mänskliga användare och sådant som infrastrukturresurser är minimala och följer principen om minsta möjliga behörighet. Om de inte behöver det ska du inte ge dem behörighet.
- Använd hantering av hemligheter: ”Undvik att hårdkoda hemligheter – lösenord, token och API-nycklar – i IaC-mallar”, säger Ashmore. Använd i stället verktyg för hantering av hemligheter, som HashiCorp Vault, AWS Secrets Manager eller Azure Key Vault. Läs vår djupgående genomgång av verktyg för hantering av hemligheter för ännu fler alternativ: ”Digitala säkerhetsförvarare: De 24 bästa verktygen för hantering av hemligheter”
- Genomför regelbunden, automatiserad säkerhetsskanning: Använd verktyg som automatiskt söker efter säkerhetssårbarheter, och gör det så tidigt som möjligt i din CI/CD-pipeline.
- Följ principen om oföränderlighet: Att minimera manuella ändringar, särskilt i infrastrukturemiljöer, är en bra strategi för att minska riskerna. ”Infrastruktur bör vara oföränderlig; när den väl har etablerats ska den inte ändras manuellt”, säger Ashmore. ”I stället bör ändringar göras genom att uppdatera IaC-koden och distribuera den på nytt. Att ta bort möjligheten att göra manuella ändringar är den säkraste vägen.”
- Använd rollbaserad åtkomstkontroll (RBAC): ”Kontrollera åtkomsten till dina IaC-verktyg och miljöer med hjälp av RBAC”, säger Ashmore. ”Endast behöriga användare ska kunna distribuera eller ändra infrastruktur.” Kubernetes är ett annat viktigt exempel här, särskilt eftersom det är en central del av många CI/CD-pipelines. Förlita dig inte enbart på standardkonfigurationer.
- Tillämpa idempotens: Nu blir det lite mer avancerat: idempotens är konceptet att kunna köra vissa operationer – eller kod, när det gäller programvaruutveckling – flera gånger utan att resultatet ändras. ”Utforma IaC [och CI/CD-pipelines] på ett idempotent sätt, vilket innebär att körning av koden flera gånger inte ska ändra infrastrukturens tillstånd om det inte uttryckligen krävs”, säger Ashmore.
- Använd parameterisering: Ashmore rekommenderar att använda variabler och parameterisering i IaC-mallar för att undvika hårdkodning av miljöspecifika värden, till exempel regioner, instansstorlekar och IP-adresser.
- Implementera övervakning och loggning: Dessa behövs för att upptäcka obehöriga eller ovanliga aktiviteter och för att felsöka grundorsaker när incidenter inträffar. ”Tjänster som AWS CloudTrail eller Azure Monitor kan hjälpa till”, säger Ashmore. Här är ytterligare två resurser: ”De 25 bästa verktygen för loggövervakning” och ”Guide till de 26 bästa verktygen för infrastrukturövervakning”
- Använd verktyg för infrastrukturtestning: ”Inför verktyg för infrastrukturtestning, som Test Kitchen, Terratest eller InSpec, för att validera att din IaC fungerar korrekt före distribution”, säger Ashmore.
- Implementera identifiering av infrastrukturavvikelser: Använd verktyg för att upptäcka infrastrukturavvikelser – det vill säga ändringar som sker utanför CI/CD-pipelinen – och återställ obehöriga ändringar när de upptäcks, rekommenderar Ashmore.
- Följ standarder för efterlevnad och säkerhet: Se till att din CI/CD-pipeline uppfyller branschens säkerhetsstandarder och ramverk för efterlevnad, såsom CIS-riktlinjer, NIST eller GDPR. OWASP:s topp 10-lista som vi delade ovan är ett annat exempel.
- Skapa återanvändbar och modulär IaC-kod: ”Dela upp IaC-koden i återanvändbara och modulära komponenter, som Terraform-moduler eller AWS CloudFormation-stackar”, säger Ashmore.
- Dokumentera din pipeline: Ashmore rekommenderar att du skapar och underhåller noggrann dokumentation av dina IaC-principer, mallar och säkerhetsrutiner samt andra komponenter i din CI/CD-pipeline.
- Uppdatera verktygen regelbundet: ”Håll dina IaC-verktyg (som Terraform, Ansible och CloudFormation) och alla relaterade beroenden uppdaterade till de senaste versionerna”, säger Ashmore. Samma råd gäller i stor utsträckning för andra verktyg och beroenden i din pipeline: föråldrade versioner löper större risk att innehålla kända (och eventuellt okända) risker.
Anslut dig för fler insikter om CI/CD
CI/CD-pipelines har blivit en självklar del av modern programvaruutveckling. Det innebär att säkerheten i CI/CD är minst lika avgörande. Innan du går vidare kan du anmäla dig till vårt nyhetsbrev för att få de senaste insikterna från ledande tänkare inom programvarubranschen.
