Toimitusketju
CI/CD-tietoturva
CI/CD-tietoturva tarkoittaa niiden putkien suojaamista, jotka rakentavat, testaavat ja toimittavat ohjelmistosi. Putki ajaa koodia monista lähteistä, sisältää tuotannon salaisuuksia ja tuottaa sen, minkä asiakkaasi asentavat. Siksi se on yksi yrityksesi arvokkaimmista kohteista ja usein yksi vähiten valvotuista.
Päivitetty
Miksi putket ovat kohde
- Niillä on avaimet. Pilvipalveluiden tunnukset, rekisterien tokenit ja allekirjoitusavaimet kulkevat kaikki CI:n kautta.
- Ne ajavat muiden koodia. Jokainen riippuvuus, asennusskripti ja kolmannen osapuolen action suoritetaan runnerilla.
- Ne ulottuvat tuotantoon. Kaikkeen, mitä putkesta tulee ulos, luotetaan, se allekirjoitetaan ja toimitetaan. Buildiin päässyt hyökkääjä tavoittaa kaikki asiakkaat kerralla.
- Harva valvoo niitä. Työnkulkutiedostot muuttuvat harvoin ja saavat vähemmän katselmointia kuin sovelluskoodi.
Sekä tj-actionsin kaappaus että Shai-Hulud-npm-mato kohdistuivat CI:n salaisuuksiin. Katso mikä on toimitusketjuhyökkäys, niin näet, miten nämä hyökkäykset etenevät.
CI/CD-tietoturvan suurimmat riskit
OWASP Top 10 CI/CD Security Risks on vakiintunut viitelista. Ryhmiteltynä sen mukaan, mikä menee pieleen:
| Alue | OWASP-riskit | Miltä se näyttää |
|---|---|---|
| Kuka voi muuttaa mitä | Riittämätön muutosvirran hallinta, puutteellinen identiteetin- ja käyttöoikeuksien hallinta | Koodi päätyy tuotantoon ilman katselmointia, tai vanhat tilit säilyttävät käyttöoikeutensa |
| Mitä putkessa ajetaan | Riippuvuusketjun väärinkäyttö, myrkytetyn putken suoritus (poisoned pipeline execution) | Haitallinen paketti tai muutettu työnkulku ajetaan jobin käyttöoikeuksilla |
| Mihin jobi ylettyy | Riittämättömät putkikohtaiset käyttöoikeudet, puutteellinen tunnusten hygienia | Yksi jobi voi lukea jokaisen salaisuuden, ja tokenit ovat voimassa vuosia |
| Miten se on määritetty | Turvaton järjestelmäkonfiguraatio, hallitsematon kolmansien osapuolten palveluiden käyttö | Paikkaamattomat runnerit ja integraatiot, joilla on enemmän oikeuksia kuin ne tarvitsevat |
| Mitä pystyt todistamaan | Puutteellinen artefaktien eheyden tarkistus, riittämätön lokitus ja näkyvyys | Kukaan ei osaa sanoa, mitä julkaisuun meni tai mihin jobi otti yhteyttä |
Jokaisen riskin vastaavuudet runnerien kontrolleihin näet sivulta runnerien tietoturva vertailussa.
CI/CD-tietoturvan parhaat käytännöt
- Kohtele putkien määrityksiä tuotantokoodina. Vaadi katselmointi työnkulkutiedostoille ja pidä epäluotettavat pull requestit erossa salaisuuksista.
- Rajoita, mitä kukin jobi voi tehdä. Anna tokeneille vain tarvittavat vähimmäisoikeudet ja suosi lyhytikäisiä tunnuksia tallennettujen salaisuuksien sijaan.
- Kiinnitä kolmansien osapuolten actionit commit-tiivisteeseen. Tagit voi siirtää osoittamaan muuhun koodiin.
- Eristä jobit. Aja jokainen jobi puhtaassa ympäristössä, jotta mitään ei siirry seuraavaan.
- Hallitse lähtevää liikennettä. Buildi tarvitsee tunnetut lähteet ja tunnetut kohteet. Kaiken muun estäminen pysäyttää varastettujen salaisuuksien vuotamisen. Katso GitHub Actionsin egress-käytäntö.
- Tallenna, mitä tapahtui. Säilytä jokaisesta buildista SBOM ja loki sen verkkoliikenteestä, jotta voit vastata kysymyksiin jälkikäteen.
Vaihe vaiheelta etenevän version löydät CI/CD-putken tietoturvan tarkistuslistasta.
CI/CD-tietoturvatyökalujen tyypit
| Tyyppi | Mitä se tekee | Esimerkkejä |
|---|---|---|
| Runnerien tietoturva | Eristää jobit ja hallitsee, mihin ne ylettyvät ajon aikana | CRACI, StepSecurity |
| Tietoturva-asetusten hallinta | Löytää riskialttiit putkien ja repositorioiden asetukset | Legit Security, Cycode, Apiiro, OX Security |
| Koodin ja riippuvuuksien skannaus | Tarkistaa koodin, riippuvuudet ja salaisuudet jokaisen muutoksen yhteydessä | GitHub Advanced Security, Snyk, Semgrep |
| SBOM ja näyttö | Tallentaa, mitä kuhunkin julkaisuun meni | CRACI, Syft, Anchore |
Nämä toimivat eri vaiheissa, joten useimmat tiimit yhdistävät niitä. Skanneri tarkastelee tiedostoja ennen buildia, asetusten hallinnan työkalut tarkastelevat asetuksia, ja runnerien tietoturva toimii jobin ajon aikana, jolloin haitallinen paketti toimii. Katso ohjelmistotoimitusketjun tietoturvatyökalut vertailussa ja DevSecOps-työkalut vertailussa.
Mihin CRACI sopii
CRACI suojaa buildin sen ajon aikana. Se korvaa GitHubin ylläpitämät runnerisi nopeammilla ja edullisemmilla: jokainen jobi ajetaan omassa eristetyssä virtuaalikoneessaan, egress-käytäntö estää yhteydet, joita buildi ei tarvitse, ja jokainen paketti, jonka jobi hakee, päätyy SBOM:iin. Koska käytäntö sallii vain sen, mitä buildi tarvitsee, se suojaa sinua myös hyökkäykseltä, jota kukaan ei ole ennen nähnyt.
CRACI ei tarkista työnkulkujesi konfiguraatiota, skannaa lähdekoodia tai salaisuuksia eikä allekirjoita alkuperätietoja, joten pidä tai ota käyttöön työkalut niitä varten. GitHub Actions on tällä hetkellä tuettu CI-järjestelmä, ja muut CI-järjestelmät ovat tiekartalla.
CI/CD-tietoturva: usein kysytyt kysymykset
Mitä CI/CD-tietoturva on?
Se tarkoittaa niiden putkien suojaamista, jotka rakentavat, testaavat ja toimittavat ohjelmistoja, mukaan lukien niiden tunnukset, niiden ajama koodi ja niiden tuottamat artefaktit.
Mitkä ovat CI/CD-tietoturvan suurimmat riskit?
Haitalliset riippuvuudet ja kolmansien osapuolten actionit, myrkytetyt putket, liian laajoilla oikeuksilla varustetut tokenit ja pitkäikäiset salaisuudet sekä näkyvyyden puute siihen, mitä buildi teki. OWASP Top 10 CI/CD Security Risks on vakiintunut lista.
Mitä on poisoned pipeline execution?
Hyökkääjä muuttaa sitä, mitä putki ajaa, esimerkiksi muokkaamalla pull requestin kautta työnkulkutiedostoa tai sen kutsumaa skriptiä, jotta hänen koodinsa ajetaan putken käyttöoikeuksilla.
Miten CI/CD-putki suojataan?
Katselmoi putkien muutokset, anna kullekin jobille vain tarvittavat vähimmäisoikeudet, kiinnitä kolmansien osapuolten actionit commit-tiivisteeseen, eristä jobit, rajoita lähtevää liikennettä ja tallenna, mitä kukin buildi teki.
Mitä eroa on CI/CD-tietoturvalla ja DevSecOpsilla?
DevSecOps on laajempi käytäntö, jossa tietoturva rakennetaan osaksi ohjelmistokehitystä. CI/CD-tietoturva keskittyy itse putkeen, josta myös DevSecOps-työkalut ovat riippuvaisia.
Tarvitseeko GitHub Actions lisäsuojausta?
GitHub tarjoaa kontrolleja, kuten tokenien oikeudet ja salaisuuksien skannauksen, mutta ne on määritettävä itse, eivätkä hostatut runnerit rajoita lähtevää liikennettä oletuksena. Useimmat tiimit lisäävät kiinnityksen, katselmointisäännöt ja runnerien kontrollit.
Suojaa buildi sen ajon aikana
Siirrä GitHub Actions -työnkulku CRACI:lle ja saat eristetyt jobit, lähtevän liikenteen hallinnan ja SBOM:n jokaisesta buildista.
Varaa demo