CI/CD-pipelines er kraftige drivkrefter for raskere og hyppigere programvareutvikling, fra design til utrulling. Men da de først dukket opp på teknologiscenen, manglet de ofte et viktig ledd: sikkerhet.
Det er et problem, særlig med tanke på statistikk som denne: omtrent én av fem organisasjoner rapporterte en sikkerhetshendelse i CI/CD-pipelinen sin i løpet av det foregående året, ifølge en nylig undersøkelse utført av Techstrong Research.
Etter hvert som CI/CD-pipelines har blitt stadig vanligere, har de også endret trussellandskapet for programvareteam. Som Open Worldwide Application Security Project (OWASP) påpeker: «På grunn av sin betydning og popularitet er CI/CD-pipelines også et attraktivt mål for ondsinnede hackere, og sikkerheten deres kan ikke ignoreres.»
I denne artikkelen skal vi se nærmere på de spesifikke risikoene – samt effektive prinsipper og praksiser for å redusere disse risikoene og sørge for sikkerhet i CI/CD-pipelines.
Hva er en CI/CD-pipeline?
La oss først sørge for at vi er på samme side: Hva er CI/CD? CI/CD er en forkortelse for Kontinuerlig integrasjon og Kontinuerlig levering, og viser til et sett med prosesser og verktøy som moderne programvareteam bruker til å utforme, bygge og til slutt rulle ut programvare – med automatisering som en av de viktigste faktorene for raskere og hyppigere levering og oppdatering av kode.
Slik definerte vi det i den forrige artikkelen vår, «Oversikt over CI/CD-pipelines: Hvorfor du bør kjenne til dem»: «En CI/CD-pipeline er en transparent, automatisert og pålitelig prosess for programvareutvikling og -levering.»
Målet er vanligvis ikke bare å levere raskere og hyppigere – det handler også om å forbedre kvalitet, pålitelighet og – forutsatt at du gir det riktig prioritet – sikkerhet.
Vanlige sikkerhetsrisikoer i CI/CD: 5 fokusområder
Opprinnelsen til mange sikkerhetsrisikoer i CI/CD bør høres i det minste litt kjent ut for en teknologiekspert. Ting som tilgangskontroll og for omfattende privilegier, utilstrekkelig overvåking og logging, samt ustyrte avhengigheter og programvareleverandørkjeder, bidrar alle til økt risiko når de ikke håndteres på riktig måte.
OWASP har publisert en liste over de 10 største sikkerhetsrisikoene i CI/CD som er verdt å undersøke som en referanse. Den er en videreføring av organisasjonens populære OWASP Top 10 for sikkerhetsrisikoer i webapplikasjoner, som er en bredt akseptert bransjestandard for sikkerhet i webapplikasjoner.
Risikoer i CI/CD-pipelines kan både introduseres og forsterkes av automatisering. Mange av risikoene introduseres automatisk – eller rulles automatisk ut til produksjon – i CI/CD-pipelines. Litt ironisk kan automatisering av sikkerheten i disse pipelinene ved hjelp av verktøy for infrastruktur som kode (IaC) eller annen automatisering på samme måte introdusere eller forsterke risikoer hvis du ikke følger godt nok med, påpeker Derek Ashmore, leder for applikasjonstransformasjon hos Asperitas.
Her er fem viktige risikoområder du bør vurdere når du sikrer CI/CD-pipelinene dine, ifølge Ashmore:
- Tilgangskontroll: «Tilgangskontroll er ofte overdimensjonert av bekvemmelighetshensyn og følger ikke prinsippene om minste privilegium og totrinnskontroll», sier Ashmore. Generelt bør prinsippet om minste privilegium gjelde her – ikke gi personer eller maskiner tilgang til data eller systemer de faktisk ikke trenger for å utføre arbeidet sitt.
- Ikke-validerte avhengigheter: Dagens programvare – og dermed CI/CD-pipelines – er ofte avhengig av tredjepartsbiblioteker og andre eksterne avhengigheter, og disse komponentene har noen ganger sårbarheter. «Sørg alltid for at eksterne avhengigheter er validert og har en etterprøvbar forvaltningskjede», sier Ashmore.
- Revisjon og logging: Sørg for at du har omfattende revisjon og logging på plass. Manglende synlighet og etterprøvbarhet kan føre til økt sikkerhetseksponering som du ellers ikke ville vært klar over.
- Eskalering av privilegier: Automatisering – av den typen som er innebygd i CI/CD og CI/CD-sikkerhet – kan noen ganger utvikles i separate siloer som fører til utilsiktede hull, der privilegier kan heves ved å kjøre en utilsiktet automatiseringssekvens. «For å redusere denne risikoen må du sørge for at minste privilegium er implementert, og at det er implementert testtilfeller for automatiseringsarbeidsflyter og individuelle oppgaver eller pipelines», sier Ashmore.
- Utilstrekkelig automatisert testing: Automatisert testing er avgjørende, ikke bare for sterk CI/CD-pipelinesikkerhet – for eksempel automatiserte sårbarhetsskanninger av containerbilder – men også for en sunn pipeline generelt. «Feil i pipelinen kan skape uønskede sikkerhetssårbarheter og påvirke utviklingsteam negativt ved å hindre dem i å utføre det tildelte arbeidet», sier Ashmore.
10 Toppverktøy for CI/CD!
15 beste praksiser for sterkere CI/CD-sikkerhet
Når du har fått en solid forståelse av risikoene, er det på tide å se nærmere på løsningene. Den gode nyheten er at det finnes mange av dem, blant annet fordi bransjen som helhet har innsett hvor viktig det er å integrere sikkerhet som en førsteklasses komponent i CI/CD.
Ashmore fra Asperitas ga oss en gjennomgang av 15 allment aksepterte beste praksiser og taktikker for å styrke sikkerheten i CI/CD-pipelinen. Uten videre om og men:
- Bruk sikre versjonskontrollsystemer: En av de viktigste fordelene med versjonskontrollsystemer som Git er at de lagrer endringshistorikk som kan være nødvendig for å undersøke sikkerhetsbrudd eller andre problemer. «Ideelt sett bør ingenting endres manuelt», sier Ashmore. Se vår omfattende liste over kildekontrollverktøy for flere alternativer: «De 20 beste versjonskontrollverktøyene – vurdert»
- Håndhev minste privilegium: Sørg for at roller og tillatelser som gis til både menneskelige brukere og ting som infrastrukturressurser, er minimale og følger prinsippet om minste privilegium. Hvis de ikke trenger det, skal du ikke gi dem tilgang.
- Bruk hemmelighetshåndtering: «Unngå å hardkode hemmeligheter – passord, token-er og API-nøkler – i IaC-maler», sier Ashmore. Bruk i stedet verktøy for hemmelighetshåndtering som HashiCorp Vault, AWS Secrets Manager eller Azure Key Vault. Se vår grundige gjennomgang av verktøy for hemmelighetshåndtering for enda flere alternativer: «Digitale sikkerhetsforvaltere: De 24 beste verktøyene for hemmelighetshåndtering»
- Gjennomfør regelmessig, automatisert sikkerhetsskanning: Bruk verktøy som automatisk skanner etter sikkerhetssårbarheter, og gjør dette så tidlig som mulig i CI/CD-pipelinen.
- Følg prinsippet om uforanderlighet: Å minimere manuelle endringer, spesielt i infrastrukturrmiljøer, er en god strategi for å redusere risiko. «Infrastrukturen bør være uforanderlig; når den først er klargjort, bør den ikke endres manuelt», sier Ashmore. «I stedet bør endringer gjøres ved å oppdatere IaC-koden og distribuere på nytt. Å fjerne muligheten til å gjøre manuelle endringer er den sikreste veien.»
- Bruk rollebasert tilgangskontroll (RBAC): «Kontroller tilgangen til IaC-verktøyene og miljøene dine ved hjelp av RBAC», sier Ashmore. «Bare autoriserte brukere skal kunne distribuere eller endre infrastruktur.» Kubernetes er et annet viktig eksempel her, særlig fordi det er en sentral del av mange CI/CD-pipeliner. Ikke stol bare på konfigurasjoner som følger med som standard.
- Bruk idempotens: Nå blir det avansert: Idempotens er konseptet som innebærer at visse operasjoner – eller kode, innen programvareutvikling – kan kjøres flere ganger uten at resultatet endres. «Utform IaC [og CI/CD-pipeliner] på en idempotent måte, noe som betyr at kjøring av koden flere ganger ikke skal endre tilstanden til infrastrukturen med mindre det er uttrykkelig nødvendig», sier Ashmore.
- Bruk parameterisering: Ashmore anbefaler å bruke variabler og parameterisering i IaC-maler for å unngå hardkoding av miljøspesifikke verdier, som regioner, instansstørrelser og IP-adresser.
- Implementer overvåking og logging: Dette er nødvendig for å oppdage uautoriserte eller uvanlige aktiviteter og for å feilsøke grunnårsaker når hendelser oppstår. «Tjenester som AWS CloudTrail eller Azure Monitor kan være til hjelp», sier Ashmore. Her er to ressurser til: «De 25 beste løsningene for loggovervåking» og «Veiledning til de 26 beste verktøyene for infrastrukturovervåking»
- Bruk verktøy for infrastrukturtesting: «Inkluder verktøy for infrastrukturtesting, som Test Kitchen, Terratest eller InSpec, for å validere at IaC-en er korrekt før distribusjon», sier Ashmore.
- Implementer oppdagelse av infrastrukturavvik: Bruk verktøy til å oppdage infrastrukturavvik – det vil si endringer som skjer utenfor CI/CD-pipelinen – og tilbakestill uautoriserte endringer når de oppdages, anbefaler Ashmore.
- Følg standarder for samsvar og sikkerhet: Sørg for at CI/CD-pipelinen oppfyller kravene i bransjens sikkerhetsstandarder og rammeverk for samsvar, som CIS-referanseverdier, NIST eller GDPR. OWASP Top 10-listen vi delte ovenfor, er et annet eksempel.
- Opprett gjenbrukbar og modulær IaC-kode: «Del opp IaC-koden i gjenbrukbare og modulære komponenter, som Terraform-moduler eller AWS CloudFormation-stakker», sier Ashmore.
- Dokumenter pipelinen: Ashmore anbefaler å opprette og vedlikeholde grundig dokumentasjon av IaC-retningslinjer, maler og sikkerhetsprosedyrer, samt andre komponenter i CI/CD-pipelinen.
- Oppdater verktøyene regelmessig: «Hold IaC-verktøyene dine (som Terraform, Ansible og CloudFormation) og eventuelle relaterte avhengigheter oppdatert til de nyeste versjonene», sier Ashmore. Det samme rådet gjelder i stor grad andre verktøy og avhengigheter i pipelinen: utdaterte versjoner har større sannsynlighet for å inneholde kjente (og muligens ukjente) risikoer.
Bli med for flere CI/CD-innsikter
CI/CD-pipeliner har blitt en fast bestanddel av moderne programvareutvikling. Det betyr at sikkerhet i CI/CD er minst like avgjørende. Før du går, meld deg på nyhetsbrevet vårt for å få de nyeste innsiktene fra ledende tenkere i programvarebransjen.



