Prema podacima istraživanja koje je sproveo Verizon, impresivnih 58% kompanija je tokom prošle godine iskusilo povredu podataka, a alarmantnih 41% tih incidenata nastalo je zbog ranjivosti softvera. Ovakvi propusti mogu naneti organizacijama ogromne finansijske gubitke, u iznosu od više miliona dolara, a mogu i ozbiljno narušiti njihov ugled na tržištu.
Međutim, savremeni pristup razvoju aplikacija doneo je značajne promene. Danas, mnoge organizacije primenjuju DevOps principe i alate u procesu kreiranja aplikacija ili softvera. U DevOps metodologiji, umesto da se kompletna aplikacija isporučuje odjednom, razvoj i implementacija se odvijaju iterativno. U nekim slučajevima, izdanja se realizuju čak i svakodnevno. Pronalaženje bezbednosnih propusta u ovim čestim izdanjima predstavlja izazov. Zato je bezbednost jedan od najvažnijih faktora u DevOps procesu.
Svaki tim koji učestvuje u razvoju aplikacije, uključujući razvoj, testiranje, operacije i produkciju, ima odgovornost da preduzme neophodne bezbednosne mere kako bi se osiguralo da aplikacija ne sadrži ranjivosti koje mogu dovesti do bezbednosnih incidenata. U ovom tekstu, baviću se najboljim praksama DevOps Security, koje su ključne za bezbedan razvoj i primenu aplikacija.
Implementacija DevSecOps modela
DevSecOps je još jedan od termina koji je u trendu u DevOps domenu. To je osnovna bezbednosna praksa u razvoju koju sve više IT organizacija usvaja. Kao što i samo ime sugeriše, to je spoj razvoja, bezbednosti i operacija.
DevSecOps predstavlja metodologiju koja integriše bezbednosne alate u sve faze DevOps životnog ciklusa. To znači da bezbednost mora biti integralni deo procesa od samog početka razvoja aplikacije. Usklađivanje DevOps procesa sa bezbednosnim merama pomaže organizacijama da razvijaju sigurne aplikacije, oslobođene ranjivosti. Osim toga, ova metodologija pomaže u prevazilaženju prepreka u komunikaciji i saradnji između razvojnih, operativnih i bezbednosnih timova unutar organizacije.
U nastavku se nalazi nekoliko ključnih praksi koje bi trebalo implementirati u okviru DevSecOps modela:
- Uključite bezbednosne alate kao što su Snyk i Checkmarx u proces razvojne integracije.
- Stručnjaci za bezbednost treba da provere sve automatizovane testove.
- Timovi za razvoj i bezbednost treba da rade zajedno na kreiranju modela pretnji.
- Bezbednosni zahtevi moraju imati visok prioritet u okviru „product backlog“-a.
- Pre implementacije, sve bezbednosne politike infrastrukture moraju biti detaljno pregledane.
Pregled koda u manjim delovima
Preporučuje se da se kod pregleda u manjim delovima. Izbegavajte pregledanje ogromnih blokova koda ili cele aplikacije odjednom, jer to može dovesti do grešaka. Umesto toga, podelite kod na manje celine kako biste ga detaljno pregledali i analizirali.
Implementacija procesa upravljanja promenama
Neophodno je uspostaviti proces upravljanja promenama.
Kada dođe do promena u aplikaciji koja je već u fazi implementacije, ne bi trebalo dozvoliti programerima da proizvoljno dodaju kod, funkcije ili ih uklanjaju. Implementacija procesa upravljanja promenama je ključna u ovoj fazi.
Dakle, svaka promena koja se uvodi u aplikaciju treba da prođe kroz ovaj proces. Nakon odobrenja, programeru se može dozvoliti da izvrši izmenu.
Kontinuirana procena aplikacija u produkciji
Organizacije često zanemaruju bezbednost nakon što aplikacija postane aktivna u produkcionom okruženju.
Važno je da se redovno pregleda aplikacija. Nastavite sa analizom koda i periodičnim testiranjima bezbednosti kako biste osigurali da nisu uvedene nove ranjivosti.
Možete koristiti specijalizovani softver za kontinuiranu bezbednost, kao što su Invicti, Probely i Intruder.
Obuka razvojnog tima o bezbednosti
Važno je da se razvojni tim kontinuirano edukuje o najboljim bezbednosnim praksama i smernicama.
Na primer, ako se novi programer pridruži timu i ne poznaje koncept SQL injekcija, potrebno je da ga upoznate sa tim šta su SQL injekcije, kako funkcionišu i koju štetu mogu da nanesu aplikaciji. Nije potrebno detaljno objašnjavati sve tehničke specifičnosti, ali je neophodno osigurati da razvojni tim bude upućen u najnovije smernice i najbolje prakse u oblasti bezbednosti na opštem nivou. Postoji veliki broj dostupnih kurseva o veb bezbednosti koji vam mogu pomoći u tome.
Razvoj i implementacija bezbednosnih procesa
Bezbednost ne može funkcionisati bez definisanih procesa. Zbog toga je potrebno da vaša organizacija ima specifične bezbednosne procese, koje treba implementirati i redovno ažurirati.
Nakon implementacije, vrlo je verovatno da će biti potrebno revidirati procese, jer neke stvari možda neće funkcionisati kako se očekivalo ili će proces biti prekomplikovan. Postoji niz razloga zašto bi to moglo biti potrebno, tako da bi trebalo biti spremni za izmene ovih bezbednosnih procesa.
Bez obzira na sve, ključno je da se bezbednosni procesi nakon implementacije prate i redovno revidiraju.
Implementacija i primena upravljanja bezbednošću
Uspostavljanje i primena politike upravljanja u organizaciji je od vitalnog značaja za primenu najboljih bezbednosnih praksi u DevOps okruženju. Neophodno je kreirati ove politike, a svi timovi koji su uključeni u razvoj aplikacije, poput razvojnog, bezbednosnog i operativnog tima, moraju ih se pridržavati.
Svi zaposleni treba da jasno razumeju ove politike, pa one moraju biti transparentne i lako razumljive. Takođe je neophodno redovno pratiti da li se zaposleni u vašoj organizaciji pridržavaju ovih politika upravljanja.
Standardi bezbednog kodiranja
Programeri se često fokusiraju isključivo na izgradnju funkcionalnosti aplikacije i zanemaruju bezbednosne aspekte, jer to nije njihov prioritet. Međutim, sa sve većim sajber pretnjama, potrebno je osigurati da je vaš razvojni tim svestan najboljih bezbednosnih praksi tokom kodiranja aplikacije.
Oni bi trebali biti upoznati sa bezbednosnim alatima koji im mogu pomoći da identifikuju ranjivosti u kodu tokom razvoja, kako bi programeri mogli odmah da izmene kod i poprave te ranjivosti.
Preporučuje se da se u DevOps procesima počnu koristiti alati za automatizaciju bezbednosti kako bi se smanjilo ručno angažovanje.
Implementirajte alate za automatizaciju, tako da ne samo da možete obavljati testiranja, već i da kreirate ponovljive testove za aplikaciju. Uz automatizovane alate za analizu koda, upravljanje tajnama, upravljanje konfiguracijom i upravljanje ranjivostima, moći ćete lako da razvijate sigurne proizvode.
Sprovođenje procene ranjivosti
Potrebno je implementirati procenu ranjivosti, kako bi se identifikovale potencijalne slabosti aplikacije i eliminisale pre nego što se implementiraju u produkcionom okruženju.
Ovu procenu treba redovno sprovoditi i razvojni tim treba da radi na kodu kako bi popravio uočene ranjivosti. Dostupni su razni alati za skeniranje i upravljanje ranjivostima, koji se mogu koristiti za otkrivanje slabosti aplikacije.
Implementacija upravljanja konfiguracijom
Takođe je neophodno implementirati upravljanje konfiguracijom.
Proces upravljanja promenama, o kojem je već bilo reči, je sastavni deo upravljanja konfiguracijom. Stoga, morate da znate sa kojom konfiguracijom radite, koje promene se dešavaju u aplikaciji, ko ih autorizuje i odobrava. Sve to je deo upravljanja konfiguracijom.
Implementacija modela najmanjih privilegija
U okviru najboljih bezbednosnih praksi DevOps-a, jedno od najvažnijih pravila je korišćenje modela najmanjih privilegija. Nikada nikome ne dajte više privilegija nego što mu je zaista neophodno.
Na primer, ako programeru nije potreban ROOT ili administratorski pristup, možete mu dodeliti običan korisnički pristup kako bi mogao da radi samo na neophodnim modulima aplikacije.
Razdvajanje DevOps mreže
Potrebno je implementirati segmentaciju mreže u organizaciji.
Resursi organizacije, kao što su aplikacije, serveri i skladište, ne bi trebali da rade na istoj mreži, jer to može dovesti do problema sa jednom tačkom kvara. Ako haker upadne u mrežu vaše organizacije, može preuzeti kontrolu nad svim resursima. Zbog toga, svaka logička jedinica treba da ima zasebnu mrežu.
Na primer, razvojno i produkciono okruženje treba da rade na različitim mrežama, izolovane jedna od druge.
Možete koristiti i mrežna rešenja sa nultim poverenjem.
Korišćenje menadžera lozinki
Nemojte čuvati akreditive u Excel tabeli. Umesto toga, koristite centralizovani menadžer lozinki.
Ni u kom slučaju pojedinačne lozinke ne bi trebalo deliti među korisnicima. Najbolje je čuvati akreditive na sigurnoj i centralizovanoj lokaciji, gde samo ovlašćeni tim može da upućuje API pozive i koristi ove akreditive.
Sprovođenje revizije i pregleda
Takođe je neophodno sprovoditi redovne revizije i preglede. Redovno pregledajte kod aplikacije, bezbednosne procese i podatke koje aplikacija prikuplja.
Zaključak
Ovo su neke od kritičnih bezbednosnih praksi u DevOps-u koje organizacije moraju slediti kako bi razvile sigurne aplikacije i softver. Implementacija bezbednosnih praksi u okviru DevOps procesa može doneti značajne uštede za organizaciju. Stoga, počnite sa primenom bezbednosnih praksi spomenutih u ovom članku, kako biste obezbedili sigurnija i brža izdanja aplikacija.