Dobici:
- Sposobnost izrade IaC (Terraform, Ansible) koda s umjetnom inteligencijom s najužim dozvolama i sigurnim zadanim postavkama i razumijevanje deklarativnog pristupa
- Sposobnost sprječavanja gubitka podataka čitanjem i hvatanjem linija za brisanje i zamjenu prije primjene izlaza plana/provjere
- Sposobnost sprječavanja tajnog curenja čuvanjem datoteke stanja šifriranom, zaključanom, u udaljenoj pozadini i razbijanjem promjena u male, reverzibilne korake
Upravljanje infrastrukturom kao kod (IaC): Terraform, Ansible i Plan Control with AI
U prošlosti, postavljanje servera se obavljalo ručnim klikovima, komandama i ličnim napomenama; Rezultat su bili neponovljivi serveri "pahulja" koje niko nije znao tačno kako da postavi. Infrastruktura kao kod (IaC) je pristup koji okončava ovaj haos: serveri, mreže, sigurnosna pravila nisu definisana ručno, već pomoću tekstualnih datoteka (koda) koje se mogu verzijama. Kada pokrenete ovaj kod, infrastruktura je postavljena tačno onako kako ste je napisali — ista, dokumentovana i ponovljiva svaki put. Najčešći alati su Terraform i CloudFormation za infrastrukturu oblaka i Ansible za konfiguraciju servera. Ovdje je AI vrlo vješt u pisanju, objašnjavanju i pregledu ovog IaC koda. Ali moć IaC-a je i njegova opasnost: jedna pogrešna linija može izbrisati cijelu infrastrukturu; tako da AI piše kod, vi pročitate "plan", odobrite ga i izvršite.
U ovoj cjelini ćemo razgovarati o deklarativnom pristupu, razlikovanju plan/primjeni, državnoj sigurnosti i nemoći; Naučit ćete generaciju IaC-a uz AI i najkritičniju vještinu, "kontrolu planiranja".
Razmišljajući deklarativno: "šta ako", a ne "kako učiniti"
Većina IaC alata je deklarativno: opišete konačno stanje sistema ("recimo 3 web servera, 1 balansator opterećenja"), alat sam izračunava kako doći do tog stanja. Ovo se razlikuje od pisanja skripte ("uradi ovo, pa uradi ono" korak po korak). Velika prednost deklarativnog pristupa je idempotencija: čak i ako pokrenete kod deset puta, rezultat je isti, jer alat provjerava da li željeno stanje već postoji, a ako postoji, ne dotiče ga. Zapamtite ovu razliku kada pišete IaC u AI: tjerate da kaže "pusti ovu infrastrukturu u stanje", a ne "pokreni ove komande".
Planirajte/primijenite: najvažnija sigurnosna ograda
Funkcija IaC-a koja spašava živote je planski korak. U Terraform-u, terraform plan, u Ansible-u, --check mod proizvodi pregled "šta će se promijeniti ako to primijenim" prije pokretanja koda: "2 resursa će biti dodana, 1 će se promijeniti, 0 će biti izbrisano". Ovo je jedini način da uporedite svoju namjeru sa stvarnošću prije implementacije. Kritično pravilo: nikada se ne primjenjujte bez čitanja plana. Potražite posebno linije "uništiti"; Ako vidite "12 će biti izbrisano" umjesto "1 će biti promijenjeno" zbog greške u kucanju, plan vas je spasio od katastrofe. Nakon odštampanja koda u AI, neka kaže "pregledajte izlaz plana red po red sa mnom, označite svaki red koji sadrži brisanje/rekreaciju."
Oprez: Neke promjene u Terraformu "uništavaju i ponovo stvaraju" resurs umjesto da se "ažuriraju na mjestu". To znači gubitak podataka za bazu podataka. Ignoriranje -/+ ili "zamjena sila" u izlazu plana jedna je od najskupljih grešaka.
Državni dosije: zapis tajni i istine
Alati poput Terraforma čuvaju trenutno stanje infrastrukture kojom upravljaju u datoteci stanja. Ovaj fajl je kritičan iz dva razloga. Prvo, može sadržavati tajne (lozinke baze podataka, ključevi mogu pasti u stanje u otvorenom tekstu); Stoga, nikada nemojte lijepiti stanje u javno spremište ili AI, čuvajte ga u šifriranom udaljenom backend-u s ograničenim pristupom. Drugo, ako je država korumpirana ili izgubljena, vozilo gubi vezu između stvarne infrastrukture i zamišljene infrastrukture; Stoga su rezervna kopija stanja i mehanizam za zaključavanje (brava koja sprječava da je dvoje ljudi razbiju u isto vrijeme) neophodni.
Korak po korak: Osigurajte IaC pomoću AI
- Državna namjera i provajder. “2 servera na AWS-u, sa Terraformom, u ovoj regiji, ove veličine i sigurnosne grupe.” Ako su oblak, alat i verzija jasni, AI proizvodi ispravnu sintaksu.
- Zatražite sigurnosne postavke. "Otvorite sigurnosnu grupu, omogućite šifriranje, izdvojite tajne u varijablu, odobrite javni pristup." AI može generirati labave uzorke prema zadanim postavkama.
- Pročitajte i razumite kod. Razumjeti svaki resurs, svaku dozvolu, red po red. Nemojte primjenjivati dozvolu koju ne razumijete.
- Nabavite plan i izvršite reviziju. Pokreni plan/--provjeru, ispitaj izlaz sa AI, označi redove za brisanje i ponovno izgradi.
- Nanesite malo i reverzibilno. Provedite veliku promjenu u malim dijelovima, a ne sve odjednom. Znajte put nazad na svakom koraku.
- Zaštitite državu. Koristite udaljenu, šifrovanu pozadinu i zaključavanje; Nikada ne curi stanje.
tri mini kofera
Slučaj 1 — Plan je obnovio bazu podataka. Inženjer je želio povećati veličinu baze podataka Terraform kodom koji je proizveo pomoću AI. Dok je očekivao da će se "1 promijeniti" u izlazu plana terraforme, vidio je "1 za uništavanje, 1 za dodavanje" — parametar koji je odabrao je pokretao ponovnu izgradnju, a ne ažuriranje na mjestu, što znači da će svi podaci biti izbrisani. Kontrola plana zaustavila je nepovratni gubitak podataka prije nego što je implementiran.
Slučaj 2 — Povratak iz labavih zadanih vrijednosti. Tim je od AI tražio šifru zaštitnog zida. Da bi pokrenuo primjer, AI je generirao jednostavno pravilo 0.0.0.0/0, što znači "javno na internetu". Inženjer je to primetio dok je čitao kod i suzio pristup samo na IP opseg preduzeća. Da se implementira bez revizije, baza podataka bi bila otvorena za cijeli internet.
Slučaj 3 — Spriječeno curenje. Mlađi član se spremao da zalijepi datoteku terraform.tfstate netaknutu u javni alat za rješavanje problema s Terraformom. Viši inženjer zaustavljen: stanje je sadržavalo lozinku baze podataka otvorenog teksta. Umjesto toga, podijeljen je dešifrirani sažetak koji opisuje problem i stanje je premješteno na udaljenu šifriranu pozadinu.
Četiri šablona za kopiranje
1) IaC generiranje resursa (sigurno zadano):
Vaša uloga: viši inženjer infrastrukture oblaka. [Oblak, npr. AWS] za[alat, npr. Terraform] generira kod. Svrha: [svrha].Sigurnosna pravila: javni (0.0.0.0/0) pristup OTVORENI;počnite s najužom dozvolom; uključiti šifriranje; izdvajajte tajne u varijable, nemojte ih ugrađivati u kod; Provjerite postavke koje mogu dovesti do brisanja/rekreacije. Objasnite svaki izvor kratkim komentarom.
2) Planirajte reviziju rezultata:
Ispod je izlaz [Terraform plan / Ansible check]. Recite mi: (1) koliko resursa će biti dodano/promijenjeno/obrisano, (2) također označite linije "uništiti" ili "prisilno zamijeniti" koje predstavljaju rizik od gubitka podataka, (3) navedite sve promjene koje se čine neočekivanim ili opasnim. Izlaz: [plan]
3) Sigurnosni pregled IaC koda:
Ispitajte sljedeći IaC kod radi sigurnosti: (1) da li postoje previše široki pristup/dozvole, (2) da li je šifriranje isključeno, (3) da li su tajne ugrađene u kod, (4) da li postoje javno dostupni resursi? Predložite ispravku za svaki nalaz. Šifra: [maskirani kod]
4) Podijelite kusur na sigurne dijelove:
Ne želim da implementiram ovu veliku infrastrukturnu promjenu [objašnjenje] odjednom. Podijelite ga na male, nezavisne korake na koje se lako vratiti. Za svaki korak: koje promjene, na šta trebam obratiti pažnju u planu, kako to poništiti ako ima problema?
Slaba prompt / Jaka prompt
Slab upit:
Napišite Terraform kod koji kreira server na AWS-u.
Regija, veličina, sigurnost, mreža, enkripcija nisu jasni. AI proizvodi najlabavije, najeksplicitnije zadane postavke za rad - ako se stavi u proizvodnju, to bi bila ranjivost.
Snažan upit:
Vaša uloga: viši inženjer infrastrukture oblaka. Definišite web server sa Terraformom na AWS eu-central-1: t3.small, samo iz korporativnog IP opsega (daću ga sa promenljivom), port 443 je otvoren, disk je šifrovan, nema javnog pristupa, oznake su obavezne. Tajne se otkrivaju varijabli. Nakon koda: Prije implementacije, recite mi 3 vrste linija na koje treba da obratim pažnju u planu i objasnite povratnu putanju.
Stage
Rizik
sigurnosna ograda
pisanje koda
Labavo zadano (javno)
Najuža dozvola + čitanje
planirati/provjeriti
Brisanje bez svesti
Planirajte inspekciju, uništite oznake
Prijavite se
Velika jednokratna promjena
Mali, reverzibilni koraci
državna uprava
Curenje glazure, izobličenje
Daljinski šifrirani backend + zaključavanje
Uobičajene greške
- Prijava bez čitanja plana. Plan predviđa brisanje i rekonstrukciju; Ako se preskoči, gubitak podataka je neizbježan.
- Ne primjećujući labave zadane vrijednosti. AI instance često proizvode 0.0.0.0/0; Ako se premjesti u proizvodnju, to znači otvoreni kod za cijeli internet.
- Leaking State. Izvoz datoteke stanja u AI ili otvoreno spremište otkriva tajne otvorenog teksta.
- Ugrađivanje tajni u kod. Upisivanje lozinke u IaC kod je stalno curenje u istoriji verzija koda.
- Zamijenili ste rekonstrukciju za ažuriranje. Zanemarivanje linije zamjene sila će rezultirati gubitkom podataka u bazama podataka.
Savjet: Čak i kada dajete izlaz plana AI-u na pregled, konačnu odluku zasnivajte na vlastitom znanju, a ne tekstu plana. AI sažima plan i označava rizične linije; ali odgovor na pitanje "da li je ovo brisanje prihvatljivo" zavisi od vašeg poslovnog konteksta.
Ukratko
IaC donosi ponovljivost i dokumentaciju upravljanjem infrastrukturom pomoću koda koji se može verzijama, a ne ručnim klikovima. AI je moćan partner u pisanju ovog koda, njegovom opisivanju i pregledu radi sigurnosti. Ali moć IaC-a je njegova opasnost: jedna linija može izbrisati cijelu infrastrukturu. Razmišljajte deklarativno, počnite s najužom dozvolom, popravite labave zadane postavke, čuvajte tajne izvan koda i stanja. Najvažnija zaštitna ograda je korak planiranja/provjere: nikada ne izvršavajte bez čitanja redova za brisanje i ponovnu izgradnju. Držite stanje šifrirano, zaključano i udaljeno. Šifra je AI, odluka je vaša.
Zadatak aplikacije
Odaberite mali cilj infrastrukture (na primjer, jednu virtualnu mašinu i sigurnosno pravilo). Uz gornji predložak „generiranje IaC resursa“, zatražite od AI kod sa sigurnim zadanim postavkama. Dvaput provjerite kod pomoću predloška "IaC code security review" i pokušajte pronaći barem jednu labavu postavku. Ako je moguće, pokrenite plan/--check na probnom računu i pregledajte izlaz pomoću šablona "Provjera izlaza plana"; Pogledajte da li postoji linija za brisanje ili ponovno kreiranje. Zapišite svoje nalaze i kako ćete osigurati državu u 6 tačaka.
kontrolna lista
- [ ] Da li sam naveo oblak, alat i verziju za AI i zatražio kod sa najužim dozvolama?
- [ ] Jesam li provjerio kod kod labavih zadanih postavki (0.0.0.0/0, zatvorena enkripcija)?
- [ ] Jesam li izdvojio tajne u varijablu umjesto da ih ugrađujem u kod?
- [ ] Da li sam pročitao izlaz plana/provjere i označio redove za brisanje prije primjene?
- [ ] Jesam li procijenio utjecaj na gubitak podataka "zamjena snaga" / ponovne izgradnje linija?
- Nisam li zadržao [ ] State fajl šifriran, zaključan, u udaljenom backendu i procurio ga?