CI/CD-putket mahdollistavat nopeamman ja useammin tapahtuvan ohjelmistokehityksen suunnittelusta käyttöönottoon. Kun ne kuitenkin alun perin saapuivat teknologia-alalle, niistä puuttui usein yksi tärkeä lenkki: tietoturva.
Se on ongelma, etenkin kun otetaan huomioon tämänkaltaiset tilastot: noin joka viides organisaatio ilmoitti tietoturvapoikkeamasta CI/CD-putkessaan edellisen vuoden aikana tuoreen kyselyn mukaan, jonka toteutti Techstrong Research.
CI/CD-putkien yleistyessä ne ovat myös muuttaneet ohjelmistotiimien uhkaympäristöä. Kuten Open Worldwide Application Security Project (OWASP) toteaa: ”Niiden tärkeyden ja suosion vuoksi CI/CD-putket ovat myös houkutteleva kohde haitallisille hakkereille, eikä niiden tietoturvaa voida sivuuttaa.”
Tässä artikkelissa perehdymme erityisiin riskeihin sekä tehokkaisiin periaatteisiin ja käytäntöihin, joilla näitä riskejä voidaan lieventää ja varmistaa CI/CD-putkien tietoturva.
Mikä on CI/CD-putki?
Varmistetaan ensin, että olemme samalla sivulla: mitä CI/CD tarkoittaa? CI/CD on lyhenne sanoista jatkuva integraatio ja jatkuva toimitus, ja sillä viitataan prosessien ja työkalujen kokonaisuuteen, jota nykyaikaiset ohjelmistotiimit käyttävät suunnitteluun, rakentamiseen ja lopulta käyttöönottoon – automaation ollessa yksi nopeamman ja useammin tapahtuvan koodin toimituksen ja päivitysten keskeisistä mahdollistajista.
Näin määrittelimme sen aiemmassa artikkelissamme ”CI/CD-putken yleiskatsaus: miksi sinun pitäisi tietää siitä”: ”CI/CD-putki on läpinäkyvä, automatisoitu ja luotettava ohjelmistokehitys- ja toimitusprosessi.”
Tavoitteena ei yleensä ole ainoastaan julkaista nopeammin ja useammin – tarkoituksena on myös parantaa laatua, luotettavuutta ja – jos sille annetaan asianmukainen prioriteetti – tietoturvaa.
CI/CD:n yleiset tietoturvariskit: 5 painopistealuetta
Monien CI/CD:n tietoturvariskien taustalla olevien syiden pitäisi kuulostaa ainakin jossain määrin tutuilta teknologia-alan ammattilaisesta. Sellaiset tekijät kuin pääsynhallinta ja liian laajat käyttöoikeudet, riittämätön valvonta ja lokikirjaus sekä hallitsemattomat riippuvuudet ja ohjelmistojen toimitusketjut lisäävät riskejä, jos niitä ei hallita asianmukaisesti.
OWASP on julkaissut luettelon CI/CD:n kymmenestä tärkeimmästä tietoturvariskistä, johon kannattaa tutustua vertailukohtana. Se on organisaation suositun OWASP Top 10 -luettelon sovellus, joka käsittelee verkkosovellusten tietoturvariskejä ja toimii laajalti hyväksyttynä alan perustasona verkkosovellusten tietoturvalle.
Automaatio voi sekä synnyttää että pahentaa CI/CD-putkien riskejä. Monet riskit syntyvät automaattisesti – tai ne otetaan automaattisesti käyttöön tuotannossa – CI/CD-putkissa. Hieman ironisesti myös näiden putkien tietoturvan automatisointi infrastruktuuri koodina (IaC) -työkaluilla tai muulla automaatiolla voi vastaavasti synnyttää riskejä tai pahentaa niitä, jos asiaan ei kiinnitetä huomiota, toteaa Asperitaksen sovellusten muutoshankkeiden pääasiantuntija Derek Ashmore.
Ashmoren mukaan tässä on viisi keskeistä riskialuetta, jotka tulee ottaa huomioon CI/CD-putkien tietoturvaa varmistettaessa:
- Käyttöoikeuksien hallinta: ”Käyttöoikeuksia myönnetään usein käytännön helppouden vuoksi liikaa, eikä tällöin noudateta vähimpien oikeuksien ja kaksoisvalvonnan periaatteita”, Ashmore sanoo. Yleisesti ottaen vähimpien oikeuksien periaatteen tulisi olla etusijalla – ihmisille tai koneille ei pidä antaa pääsyä tietoihin tai järjestelmiin, joita ne eivät tosiasiassa tarvitse työtehtäviensä suorittamiseen.
- Vahvistamattomat riippuvuudet: Nykypäivän ohjelmistot – ja siten myös CI/CD-putket – perustuvat usein kolmansien osapuolten kirjastoihin ja muihin ulkoisiin riippuvuuksiin, ja näissä komponenteissa on toisinaan haavoittuvuuksia. ”Varmista aina, että ulkoiset riippuvuudet on vahvistettu ja että niiden säilytys- ja hallintaketju voidaan auditoida”, Ashmore sanoo.
- Auditointi ja lokitus: Varmista, että kattava auditointi ja lokitus on otettu käyttöön. Näkyvyyden ja auditoitavuuden puute voi johtaa lisääntyneisiin tietoturvariskeihin, joista et muuten olisi tietoinen.
- Käyttöoikeuksien eskalointi: CI/CD:lle ja CI/CD-tietoturvalle ominainen automaatio voidaan joskus kehittää siilomaisesti, mikä johtaa tahattomiin aukkoihin, joissa käyttöoikeuksia voidaan korottaa suorittamalla tahattomasti käynnistyvä automaatiosarja. ”Tämän riskin vähentämiseksi varmista, että vähimpien oikeuksien periaate on toteutettu ja että automaatiotyönkuluja sekä yksittäisiä tehtäviä tai putkia varten on laadittu testitapaukset”, Ashmore sanoo.
- Riittämätön automaattinen testaus: Automaattinen testaus on keskeistä paitsi vahvan CI/CD-putken tietoturvan kannalta – esimerkiksi konttikuvien automaattiset haavoittuvuustarkistukset – myös putken yleisen toimivuuden kannalta. ”Putken puutteet voivat aiheuttaa ei-toivottuja tietoturva-aukkoja ja vaikuttaa kielteisesti sovellusten kehitystiimeihin estämällä niitä suorittamasta niille määrättyjä tehtäviä”, Ashmore sanoo.
10 CI/CD-työkalujen parhaimmisto!
15 parasta käytäntöä vahvempaan CI/CD-tietoturvaan
Kun riskit ovat hyvin hallussa, on aika siirtyä ratkaisuihin. Hyvä uutinen on, että niitä on runsaasti, osittain siksi, että koko toimiala on ymmärtänyt tietoturvan integroimisen tärkeyden CI/CD:hen ensisijaisena asiana.
Asperitaksen Ashmore esitteli meille 15 yleisesti hyväksyttyä parasta käytäntöä ja taktiikkaa CI/CD-putken tietoturvan vahvistamiseksi. Sen pidemmittä puheitta:
- Käytä turvallisia versionhallintajärjestelmiä: Yksi versionhallintajärjestelmien, kuten Gitin, tärkeimmistä eduista on muutoshistorian tallentaminen, jota voidaan tarvita tietoturvaloukkausten tai muiden ongelmien tutkimiseen. ”Ihannetapauksessa mitään ei pitäisi muuttaa manuaalisesti”, Ashmore sanoo. Tutustu kattavaan lähdekoodin hallintatyökalujen luetteloomme, josta löydät lisää vaihtoehtoja: ”20 parasta versionhallintatyökalua arvioituna”
- Noudata vähimpien oikeuksien periaatetta: Varmista, että sekä ihmisille että infrastruktuuriresurssien kaltaisille asioille myönnetyt roolit ja käyttöoikeudet ovat mahdollisimman rajattuja ja noudattavat vähimpien oikeuksien periaatetta. Jos niitä ei tarvita, niitä ei pidä myöntää.
- Käytä salaisuuksien hallintaa: ”Vältä salaisuuksien – salasanojen, tunnusten ja API-avainten – kovakoodaamista IaC-malleihin”, Ashmore sanoo. Käytä sen sijaan salaisuuksien hallintatyökaluja, kuten HashiCorp Vaultia, AWS Secrets Manageria tai Azure Key Vaultia. Tutustu perusteelliseen katsaukseemme salaisuuksien hallintatyökaluista, josta löydät vielä lisää vaihtoehtoja: ”Digitaaliset turvasäilöt: 24 parasta salaisuuksien hallintatyökalua”
- Suorita säännöllisiä, automatisoituja tietoturvatarkistuksia: Käytä työkaluja, jotka etsivät tietoturva-aukkoja automaattisesti, ja tee tämä CI/CD-putkesi mahdollisimman varhaisissa vaiheissa.
- Noudata muuttumattomuuden periaatetta: Manuaalisten muutosten, erityisesti infrastruktuuriympäristöissä tehtävien muutosten, minimointi on hyvä strategia riskien vähentämiseksi. ”Infrastruktuurin pitäisi olla muuttumatonta; käyttöönoton jälkeen sitä ei pitäisi muuttaa manuaalisesti”, Ashmore sanoo. ”Sen sijaan muutokset tulisi tehdä päivittämällä IaC-koodi ja ottamalla se uudelleen käyttöön. Manuaalisten muutosten tekemisen mahdollisuuden poistaminen on turvallisin toimintatapa.”
- Käytä roolipohjaista käyttöoikeuksien hallintaa (RBAC): ”Hallitse IaC-työkalujesi ja ympäristöjesi käyttöoikeuksia RBAC:n avulla”, Ashmore sanoo. ”Vain valtuutettujen käyttäjien pitäisi voida ottaa infrastruktuuria käyttöön tai muokata sitä.” Kubernetes on toinen tärkeä esimerkki, erityisesti koska se on keskeinen osa monia CI/CD-putkia. Älä luota pelkästään oletusmäärityksiin.
- Sovella idempotenssia: Nyt siirrytään hieman edistyneempiin asioihin: idempotenssi tarkoittaa sitä, että tiettyjä toimintoja – tai ohjelmistokehityksen tapauksessa koodia – voidaan suorittaa useita kertoja lopputulosta muuttamatta. ”Suunnittele IaC [ja CI/CD-putket] idempotentilla tavalla, eli siten, että koodin suorittaminen useita kertoja ei muuta infrastruktuurin tilaa, ellei sitä nimenomaisesti vaadita”, Ashmore sanoo.
- Käytä parametrisointia: Ashmore suosittelee muuttujien ja parametrisoinnin käyttämistä IaC-malleissa ympäristökohtaisten arvojen, kuten alueiden, instanssikokojen ja IP-osoitteiden, kovakoodaamisen välttämiseksi.
- Toteuta valvonta ja lokitus: Niitä tarvitaan luvattoman tai epätavallisen toiminnan havaitsemiseen sekä perimmäisten syiden selvittämiseen, kun tapahtumia ilmenee. ”AWS CloudTrailin tai Azure Monitorin kaltaiset palvelut voivat auttaa”, Ashmore sanoo. Tässä on kaksi muuta resurssia: ”25 parasta lokien valvontaohjelmistoa” ja ”Opas: 26 parasta infrastruktuurin valvontatyökalua”
- Käytä infrastruktuurin testauksen työkaluja: ”Sisällytä infrastruktuurin testauksen työkaluja, kuten Test Kitchen, Terratest tai InSpec, varmistaaksesi IaC-koodisi oikeellisuuden ennen käyttöönottoa”, Ashmore sanoo.
- Toteuta infrastruktuurin poikkeamien havaitseminen: Ashmore neuvoo käyttämään työkaluja havaitsemaan infrastruktuurin poikkeamat – eli CI/CD-putken ulkopuolella tapahtuvat muutokset – ja palauttamaan luvattomat muutokset niiden havaitsemisen jälkeen.
- Noudata vaatimustenmukaisuus- ja tietoturvastandardeja: Varmista, että CI/CD-putkesi täyttää alan tietoturvastandardien ja vaatimustenmukaisuuskehysten, kuten CIS-vertailuarvojen, NIST:n tai GDPR:n, vaatimukset. Edellä jakamamme OWASP Top 10 -luettelo on toinen esimerkki.
- Luo uudelleenkäytettävää ja modulaarista IaC-koodia: ”Pilko IaC-koodi uudelleenkäytettäviksi ja modulaarisiksi komponenteiksi, kuten Terraform-moduuleiksi tai AWS CloudFormation -pinoiksi”, Ashmore sanoo.
- Dokumentoi putkesi: Ashmore suosittelee IaC-käytäntöjen, mallien ja tietoturvamenettelyjen sekä muiden CI/CD-putkesi komponenttien perusteellista dokumentointia ja dokumentaation ylläpitämistä.
- Päivitä työkalut säännöllisesti: ”Pidä IaC-työkalusi, kuten Terraform, Ansible ja CloudFormation, sekä kaikki niihin liittyvät riippuvuudet päivitettyinä uusimpiin versioihin”, Ashmore sanoo. Sama neuvo koskee yleisesti myös muita putkesi työkaluja ja riippuvuuksia: vanhentuneissa versioissa on todennäköisemmin tunnettuja ja mahdollisesti myös tuntemattomia riskejä.
Liity mukaan saadaksesi lisää CI/CD-näkemyksiä
CI/CD-putkista on tullut nykyaikaisen ohjelmistokehityksen vakiokalustoa. Tämä tarkoittaa, että CI/CD:n tietoturva on yhtä tärkeää kuin kaikki muukin. Ennen kuin lähdet, tilaa uutiskirjeemme saadaksesi uusimmat näkemykset ohjelmistoalan johtavilta ajattelijoilta.


