Enota 10 / 11

Upravljanje varnosti in skrivnosti: DevSecOps in umetna inteligenca

Dobički:

  • Sposobnost razumevanja DevSecOps in zlatih pravil upravljanja skrivnosti (ne vnaša kode, se hrani v trezorju, se vbrizga med izvajanjem, se vrne, najmanj privilegijev)
  • Sposobnost uporabe umetne inteligence za določanje prednosti izhodov varnostnega skeniranja (SCA, SAST, slika, IaC, skrivnost) in revizijske kode za obrambne namene
  • Vedeti, da je prvi korak pri uhajanju skrivnosti preklic/razveljavitev in uporaba umetne inteligence samo v pooblaščenih sistemih, za obrambne namene, v zakonskih omejitvah

Kako hitro je sistem uveden, ne pomeni ničesar na dan, ko je ogrožen. Medtem ko se DevOps osredotoča na hitrost, je varnost včasih prepuščena do konca – varnosti, prepuščene do konca, pa pogosto sploh ni. DevSecOps je pristop, ki postavlja varnost na začetek in na vsak korak toka DevOps: "premik varnosti v levo" — to je lovljenje ranljivosti v cevovodu, medtem ko se koda piše, in ne v izdelku. Za strokovnjaka DevSecOps varnost ni naloga ločene ekipe, ampak je del vsake objave, vsake slike, vsakega manifesta.

V tej enoti sta dve glavni osi. Prvi je upravljanje skrivnosti: varno ustvarjanje, shranjevanje, distribucija in rotacija zaupnih informacij, kot so gesla, ključi, certifikati. Drugo je varnostno skeniranje in utrjevanje: iskanje ranljivosti v odvisnostih, slikah, konfiguracijah. Umetna inteligenca je močan pomočnik pri obeh — razkriva ranljivosti, daje prednost rezultatom skeniranja in priporoča popravke. Toda tukaj velja najbolj kritično opozorilo: AI je za obrambo; Nepooblaščen dostop do sistema nekoga drugega, nepooblaščeno skeniranje ali ustvarjanje orodja za napad je nezakonito in je stroga omejitev te platforme.

Zlata pravila upravljanja skrivnosti

  1. Secret nikoli ne pride v izvorno kodo. Ne Dockerfile, ne YAML, ne skript, ne Git. Ko enkrat vnesete v Git, skrivnost ostane v preteklosti.
  2. Skrivnosti se hranijo v osrednjem trezorju. HashiCorp Vault, AWS Secrets Manager, Azure Key Vault, GCP Secret Manager — te shranjujejo skrivnosti šifrirano, nadzorujejo dostop in jim sledijo.
  3. Injicira se med operacijo. Aplikacija med delovanjem pridobi skrivnost iz trezorja ali spremenljivke okolja, ne z diska.
  4. Redno se vrti. Dlje ko skrivnost živi, ​​večja je nevarnost uhajanja. Samodejno vrtenje je idealno.
  5. Minimalna avtoriteta. Do vsake skrivnosti lahko dostopa samo storitev, ki jo potrebuje.
Namig: Edini najučinkovitejši protiukrep je, da v cevovod vključite skrivni skener (kot so git-secrets, gitleaks, trufflehog): ustavi objavo, če se skrivnost nehote poskuša potrditi. To ustavi puščanje pri izvoru. AI pomaga pri pisanju cevovodne integracije teh brskalnikov.

Korak za korakom: odziv na uhajanje skrivnosti

Če skrivnost uhaja, brez panike, vrstni red je pomemben:

  1. Prekliči in takoj zavrti. Razveljavite razkriti ključ, ustvarite novega. Samo brisanje ni dovolj - ostaja v preteklosti.
  2. Ocenite učinek. Kje je ta ključ dostopal? Je bilo zlorabljeno? Preglejte dnevnike.
  3. Izklopite vir. Kako je puščalo? Jasna koda, zgodovina; Vendar ne pozabite: preklic je pred obračunom.
  4. Preprečiti. Dodajte tajni brskalnik v cevovod, da se ne ponavlja.
Pozor: Najdražja stava je, da ne vrnete razkrite skrivnosti samo zato, ker je "nihče ni videl". Ključ, spuščen v javno skladišče, roboti pregledajo v nekaj sekundah. Če ste v dvomih, rotirajte – stroški rotacije so nizki, stroški uhajanja pa katastrofalni.

Vrste varnostnih pregledov

DevSecOps uporablja več plasti skeniranja; AI je v pomoč pri razlagi izhoda vsakega:

  • SCA (analiza sestave programske opreme): najde znane ranljivosti (CVE) v odprtokodnih odvisnostih, ki jih uporabljate.
  • SAST (statično testiranje varnosti aplikacij): skenira izvorno kodo za ranljivosti, ne da bi jo zagnala.
  • DAST (Dynamic Application Security Testing): Zunanje testiranje delujoče aplikacije.
  • Skeniranje slike: najde ranljivosti v sliki vsebnika (trivy, docker scout).
  • Skeniranje IaC: najde napačne konfiguracije v Terraform/manifestih (tfsec, checkov).
Pozor: skener odvrže na stotine ugotovitev; Nemogoče jih je popraviti vseh hkrati. Uporabite AI, da določite prednost ugotovitvam: katere so resnično izkoriščene, katere so očitne v teoriji, vendar nedostopne v praksi? Vendar preverite končno prednostno razvrstitev s svojim kontekstom.

Tabela rastrskih slojev

plast

Kaj skenira?

vzorčno vozilo

kdaj

SCA

Odvisnostne ranljivosti (CVE)

Dependabot, Snyk

vsaka zgradba

SAST

Ranljivosti izvorne kode

Semgrep, CodeQL

Vsak PR

skeniranje slik

Ranljivosti vsebnika

Trivy, Scout

Po gradnji

IaC skeniranje

Napačna konfiguracija

tfsec, checkov

Terraform PR

tajno skeniranje

Razkrite skrivnosti

gitleaks

Vsaka zaveza

trije mini kovčki

Primer 1 — 300 CVE, 12 dejanskih tveganj. Skeniranje slike je poročalo o 300 ranljivostih; Ekipa je bila paralizirana. Dajte rezultat skeniranja AI in vprašajte, "katere je mogoče izkoristiti na daljavo in ali so dosegljivi?" Dali so mu prednost. AI je izpostavil 12 resnično tveganih ugotovitev. Ekipa jih je najprej zaprla; Ostale je najel načrtno. Dajte prednost pred paniko.

Primer 2 — rotacija je preprečila napad. Razvijalec je pomotoma potisnil oblačni ključ v javno skladišče. Alarm se je oglasil; Ekipa je preklicala in vrnila ključ v 4 minutah. Dnevniki so pokazali, da je bil ključ že poizveden od bota - vendar je bil zdaj neveljaven. Hiter preobrat je preprečil morebitno katastrofo pri zaračunavanju in uhajanje podatkov.

Primer 3 – skeniranje IaC je zajelo odprto vedro. Skeniranje IaC s pomočjo umetne inteligence je zalotilo vedro za shranjevanje v kodi Terraform z dovoljenjem za "javno branje", ne da bi šlo v proizvodnjo. Razvijalec ga je odprl "za testiranje" in ga pozabil zapreti. Cevovod je ustavil objavo; open nikoli ni prišel do proizvodnje. Točno to je bistvo drsenja v levo.

Štiri predloge za kopiranje

1) Določite prednost izhodu skeniranja:

Spodaj dajte prednost rezultatu varnostnega pregleda. Za vsako ugotovitev: (1) ali jo je mogoče resnično izkoriščati (oddaljeno/nepreverjeno?), (2) ali je dostopna v našem kontekstu, (3) prizadevanja za sanacijo, (4) priporočena prioriteta (kritična/visoka/srednja/nizka). Označite 5 najnujnejših. Govorite jasno; kažejo, da moram potrditi vsako prioriteto s svojim kontekstom. Izhod: [SCAN]

2) Oblikovanje tajnega upravljanja:

Predlagajte pristop upravljanja skrivnosti za [APPLICATION/INFRstructure]: kateri trezor, kako vbrizgati skrivnosti med izvajanjem, kako avtomatizirati rotacijo, kako uveljaviti minimalne privilegije? Opišite konkreten tok, ki NIKOLI ne vdela skrivnosti v kodo.

3) Iskanje ranljivosti v kodi (obramba):

Preverite mojo LASTNO kodo spodaj za varnost (imam dovoljenje): ali obstaja kakšna injekcija, vdelana skrivnost, nevarna privzeta vrednost, nepreverjen vnos? Vsaki ugotovitvi dajte njen pomen in popravek. Namen je obramba in utrjevanje. Koda: [CODE]

4) Tajni načrt odziva na uhajanje:

[SECRET TYPE] se je morda pomotoma infiltriral v [LOCATION]. Povejte mi korak za korakom nalog intervencije: kaj naj naredim najprej (preklic/vračilo), kako oceniti učinek, kako preprečiti ponovitev? Pojasnite tudi, zakaj samo brisanje ni dovolj.

Šibek poziv/močan poziv

Šibko: "Kako vdrem v ta sistem/izkoristim to ranljivost?"

Ta zahteva je neetična in strogo izven meja te platforme. Uporaba AI za napad je nezakonita.

Strong: "Avtoriziraj kodo moje lastne aplikacije za varnost: poišči vdelane skrivnosti, tveganja vbrizgavanja in nevarne privzete vrednosti, popravi vsako od njih. Cilj je utrditi sistem."

Razlika: druga zahteva je v obrambne namene, v mejah pooblastil in za utrjevanje. To je pravilna uporaba AI v DevSecOps.

Pogoste napake

  • Vdelava skrivnosti v kodo/zgodovino. Najpogostejša in vztrajna ranljivost.
  • Ne vrne razkrite skrivnosti. "Nihče ni videl" je najdražja stava.
  • Videti vse ugotovitve presejalnega pregleda kot enake. Biti paraliziran zaradi dajanja prednosti ali spregledanja resničnega tveganja.
  • Varnost naj traja. Vrzel v proizvodnji je velikokrat dražja od vrzeli v cevovodu.
  • Mimo minimalne avtoritete. Skrivnost/vloga, ki ima dostop do vsega, naredi eno samo uhajanje katastrofo.
  • Poskuša uporabiti AI za napad. Nezakonito in zunaj platforme.

Če povzamem

DevSecOps postavlja varnost na začetek in na vsakem koraku toka DevOps – lovi ranljivosti v kodi in cevovodu, ne v izdelavi. Zlata pravila upravljanja skrivnosti: skrivnost ne vstopi v kodo, hrani se v osrednjem trezorju, vnese se med izvajanjem, se redno vrača in dostopa do nje z minimalnimi privilegiji. Prvi korak pri uhajanju je vedno prekinitev/vrnitev. Umetna inteligenca je zmogljiva pri določanju prednosti izhoda skeniranja, oblikovanju tajnih tokov in obrambnem pregledovanju kode – vendar se uporablja le obrambno in v okviru zakonskih omejitev v sistemih, ki jih imate.

Aplikacijska naloga

Lotite se lastnega projekta (za katerega imate pooblastila). (1) Preverite vdelane skrivne in nevarne privzete nastavitve s predlogo »Iskanje ranljivosti v kodi«. (2) Razvrstite izhod varnostnega pregleda (dejanskega ali vzorčnega) po predlogi »triaža« in identificirajte 3 najnujnejše ugotovitve. (3) Izdelajte osnutek poteka za svoj projekt s predlogo »zasnova upravljanja skrivnosti«, ki popolnoma odstrani skrivnost iz kode.

kontrolni seznam

  • [ ] Preveril sem, da v moji kodi, sliki in manifestih ni nobenih vdelanih skrivnosti.
  • [ ] Skrivnosti hranim v osrednjem trezorju in jih vbrizgam med izvajanjem.
  • [ ] Vem, da je prvi korak v scenariju uhajanja prekinitev/vrnitev.
  • [ ] Ugotovitve skeniranja sem dal po prednosti na podlagi možnosti izkoriščanja in svojega konteksta.
  • [ ] Varnostne preglede sem premaknil v zgodnje korake cevovoda (na levo).
  • [ ] Umetno inteligenco sem uporabljal samo za obrambne namene v sistemih, v katerih imam avtoriteto.