Dobici:
- Sposobnost izrade IaC (Terraform, Ansible) koda s umjetnom inteligencijom s najužim dopuštenjima i sigurnim zadanim postavkama te razumijevanje deklarativnog pristupa
- Sposobnost sprječavanja gubitka podataka čitanjem i hvatanjem redaka brisanja i prisilne zamjene prije primjene izlaza plana/provjere
- Sposobnost sprječavanja curenja tajni držanjem datoteke stanja šifriranom, zaključanom, u udaljenoj pozadini i razbijanjem promjena u male, reverzibilne korake
Upravljanje infrastrukturom kao kodom (IaC): terraform, ansible i planska kontrola s AI
U prošlosti se postavljanje poslužitelja obavljalo ručnim klikovima, naredbama i osobnim bilješkama; Rezultat su bili neponovljivi serveri "pahulje" koje nitko nije znao točno postaviti. Infrastruktura kao kod (IaC) pristup je koji završava ovaj kaos: poslužitelji, mreže, sigurnosna pravila definirani su ne ručno, već tekstualnim datotekama (kod) s mogućnošću verzije. Kada pokrenete ovaj kod, infrastruktura je postavljena točno onako kako ste je napisali — ista, dokumentirana i ponovljiva svaki put. Najčešći alati su Terraform i CloudFormation za infrastrukturu oblaka i Ansible za konfiguraciju poslužitelja. Ovdje je AI vrlo vješt u pisanju, objašnjavanju i pregledu ovog IaC koda. Ali snaga IAC-a također je njegova opasnost: jedna kriva linija može uništiti cijelu infrastrukturu; tako da AI piše kod, vi čitate "plan", odobravate ga i izvršavate.
U ovoj cjelini raspravljat ćemo o deklarativnom pristupu, distinkciji planirati/primjeniti, državnoj sigurnosti i idempotenciji; Naučit ćete generirati IaC pomoću AI i najkritičniju vještinu, "kontrolu plana".
Razmišljati deklarativno: "što ako", a ne "kako učiniti"
Većina IaC alata je deklarativna: vi opisujete konačno stanje sustava ("recimo 3 web servera, 1 load balancer"), alat sam izračunava kako doći do tog stanja. Ovo se razlikuje od pisanja skripte ("uradi ovo, pa onda ono" korak po korak). Velika prednost deklarativnog pristupa je idempotencija: čak i ako deset puta pokrenete kod, rezultat je isti, jer alat provjerava postoji li željeno stanje, a ako postoji, ne dira ga. Upamtite ovu razliku kada pišete IaC u AI: kažete "neka stanje ove infrastrukture", a ne "pokreni ove naredbe".
Planirajte/primijenite: najvažnija sigurnosna ograda
Značajka IAC-a koja spašava živote je korak u planu. U Terraformu, plan terraforme, u Ansibleu, način --check proizvodi pregled "što će se promijeniti ako ga primijenim" prije pokretanja koda: "2 će se resursa dodati, 1 će se promijeniti, 0 će se izbrisati". To je jedini način da svoju namjeru usporedite sa stvarnošću prije provedbe. Kritično pravilo: nikada se ne prijavljujte bez čitanja plana. Posebno obratite pozornost na crte "uništenja"; Ako vidite "12 će biti izbrisano" umjesto "1 će biti promijenjeno" zbog tipfelera, plan vas je spasio od katastrofe. Nakon ispisa koda AI-u, neka kaže "pregledajte izlaz plana red po red sa mnom, označite svaki redak koji sadrži brisanje/ponovno stvaranje."
Oprez: Neke promjene Terraforma "uništavaju i ponovno stvaraju" resurs umjesto da se "ažuriraju na mjestu". To znači gubitak podataka za bazu podataka. Ignoriranje -/+ ili "forsiranja zamjene" u izlazu plana je jedna od najskupljih grešaka.
Državni dosje: evidencija tajni i istine
Alati poput Terraforma čuvaju trenutno stanje infrastrukture kojom upravljaju u datoteci stanja. Ova je datoteka kritična iz dva razloga. Prvo, može sadržavati tajne (lozinke baze podataka, ključevi mogu pasti u stanje otvorenog teksta); Stoga nikada ne lijepite stanje u javno spremište ili AI, držite ga u šifriranoj udaljenoj pozadini s ograničenim pristupom. Drugo, ako je država oštećena ili izgubljena, vozilo gubi vezu između stvarne infrastrukture i zamišljene infrastrukture; Stoga je neophodna sigurnosna kopija stanja i mehanizam brave (brava koja sprječava da je dvije osobe razbiju u isto vrijeme).
Korak po korak: Osigurajte IaC pomoću umjetne inteligencije
- Navedite namjeru i davatelja. “2 poslužitelja na AWS-u, s Terraformom, u ovoj regiji, ove veličine i sigurnosne grupe.” Ako su oblak, alat i verzija jasni, AI proizvodi ispravnu sintaksu.
- Zatraži sigurnosne zadane postavke. "Otvori sigurnosnu grupu, omogući enkripciju, izdvoji tajne u varijablu, odobri javni pristup." AI može generirati slobodne uzorke prema zadanim postavkama.
- Pročitajte i razumite kod. Razumite svaki resurs, svako dopuštenje, red po red. Nemojte primjenjivati dopuštenje koje ne razumijete.
- Nabavite plan i provjerite ga. Pokreni plan/--provjeri, ispitaj izlaz s AI, označi brisanje i ponovnu izgradnju linija.
- Nanesite male i reverzibilne. Provedite veliku promjenu u malim dijelovima, ne sve odjednom. Znati put natrag na svakom koraku.
- Štiti državu. Koristite udaljenu, šifriranu pozadinu i zaključajte; Stanje nikad ne curi.
tri mini kućišta
Slučaj 1 — Plan je oporavio bazu podataka. Inženjer je želio povećati veličinu baze podataka s Terraform kodom koji je proizveo pomoću umjetne inteligencije. Iako je očekivao "1 za promjenu" u izlazu plana terraforme, vidio je "1 za uništavanje, 1 za dodavanje" — parametar koji je odabrao pokretao je ponovnu izgradnju, a ne ažuriranje na mjestu, što znači da će svi podaci biti izbrisani. Kontrola plana zaustavila je nepovratan gubitak podataka prije nego što je implementirana.
Slučaj 2 — Povratak s loose defaulta. Tim je od umjetne inteligencije zatražio šifru vatrozida. Za pokretanje primjera, AI je generirao jednostavno pravilo 0.0.0.0/0, što znači "javno na internetu". Inženjer je to primijetio dok je čitao kod i suzio pristup samo na IP raspon poduzeća. Kada bi se implementirala bez revizije, baza bi bila otvorena cijelom internetu.
Slučaj 3 — Spriječeno curenje stanja. Mlađi član se spremao zalijepiti netaknutu datoteku terraform.tfstate u javni alat za rješavanje problema Terraforma. Viši inženjer je zaustavljen: stanje je sadržavalo lozinku baze podataka otvorenog teksta. Umjesto toga, podijeljen je dešifrirani sažetak koji opisuje problem, a stanje je premješteno u udaljenu kriptiranu pozadinu.
Četiri predloška za kopiranje
1) Generiranje IAC resursa (sigurna zadana postavka):
Vaša uloga: viši inženjer infrastrukture oblaka. [Oblak, npr. AWS] za [alat, npr. Terraform] generirati kod. Svrha: [svrha].Sigurnosna pravila: javni (0.0.0.0/0) pristup OTVORENO;pokreni s najužim dopuštenjem; uključite enkripciju; izvucite tajne u varijable, nemojte ih ugrađivati u kod; Provjerite postavke koje mogu dovesti do brisanja/ponovnog stvaranja. Svaki izvor objasnite kratkim komentarom.
2) Planiranje revizije izlaza:
Ispod je izlaz [Terraform plan / Ansible check]. Recite mi: (1) koliko će resursa biti dodano/promijenjeno/izbrisano, (2) također označite retke "uništi" ili "prisilna zamjena" koji predstavljaju rizik od gubitka podataka, (3) navedite sve promjene koje se čine neočekivanim ili opasnim. Izlaz: [plan]
3) Sigurnosni pregled IAC koda:
Proučite sljedeći IaC kod za sigurnost: (1) postoje li preširoki pristup/dozvole, (2) je li šifriranje isključeno, (3) postoje li tajne ugrađene u kod, (4) postoje li javno dostupni resursi? Predložiti ispravak za svaki nalaz. Šifra: [maskirani kod]
4) Podijelite promjenu na sigurne dijelove:
Ne želim ovu veliku infrastrukturnu promjenu [objašnjenje] implementirati odjednom. Podijelite ga na male, neovisne korake kojima se lako vratiti. Za svaki korak: što se mijenja, na što trebam obratiti pozornost u planu, kako ga poništiti ako postoje problemi?
Slab upit / Jak upit
Slab upit:
Napišite Terraform kod koji stvara poslužitelj 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. Definirajte web poslužitelj s Terraformom na AWS eu-central-1: t3.small, samo iz korporativnog IP raspona (ja ću ga dati s varijablom), port 443 je otvoren, disk je šifriran, nema javnog pristupa, oznake su obavezne. Varijabli se otkrivaju tajne. Nakon koda: Prije nego ga implementirate, recite mi 3 vrste linija na koje bih trebao obratiti pozornost u planu i objasnite povratni put.
Pozornica
Rizik
sigurnosna ograda
pisanje koda
Loose default (javno)
Najuža dozvola + čitanje
plan/provjera
Brisanje bez da ste toga svjesni
Planirati inspekciju, uništiti oznake
primijeniti
Velika jednokratna promjena
Mali, reverzibilni koraci
državne uprave
Curenje glazure, izobličenje
Daljinski šifrirani backend + zaključavanje
Uobičajene greške
- Prijave bez čitanja plana. Plan predviđa brisanje i rekonstrukciju; Ako se preskoči, gubitak podataka je neizbježan.
- Ne primjećujući labavu zadanu vrijednost. AI instance često proizvode 0.0.0.0/0; Ako se premjesti u proizvodnju, to znači otvoreni izvor za cijeli internet.
- Država koja curi. Izvoz datoteke stanja u AI ili otvoreno spremište otkriva tajne otvorenog teksta.
- Ugrađivanje tajni u kod. Zapisivanje lozinke u IaC kod je stalno curenje u povijesti verzija koda.
- Miješajući ponovnu izgradnju s ažuriranjem. Ignoriranje retka zamjene snaga rezultirat će gubitkom podataka u bazama podataka.
Savjet: Čak i kada dajete izlaz plana umjetnoj inteligenciji na pregled, konačnu odluku temeljite na vlastitom znanju, a ne na tekstu plana. AI sažima plan i označava rizične linije; ali odgovor na pitanje "je li ovo brisanje prihvatljivo" ovisi o vašem poslovnom kontekstu.
Ukratko
IaC donosi ponovljivost i dokumentaciju upravljajući infrastrukturom pomoću koda koji se može izdati verzije umjesto ručnih klikova. AI je moćan partner u pisanju ovog koda, njegovom opisivanju i sigurnosnom pregledu. Ali snaga IAC-a je njegova opasnost: jedna linija može uništiti cijelu infrastrukturu. Razmišljajte deklarativno, počnite s najužim dopuštenjem, popravite labave zadane postavke, čuvajte tajne izvan koda i stanja. Najvažnija zaštitna ograda je korak planiranja/provjere: nikad ne izvršavajte bez čitanja redaka brisanja i ponovne izgradnje. Držite državu šifriranom, zaključanom i udaljenom. Kod je AI-jev, odluka je vaša.
Zadatak aplikacije
Odaberite mali cilj infrastrukture (na primjer, jedan virtualni stroj i sigurnosno pravilo). Uz gornji predložak "Generacija IaC resursa", zatražite od umjetne inteligencije kod sa sigurnim zadanim postavkama. Još jednom provjerite kôd pomoću predloška "Pregled sigurnosti IaC koda" i pokušajte pronaći barem jednu labavu postavku. Ako je moguće, pokrenite plan/--provjeru na testnom računu i pregledajte izlaz s predloškom "Planirajte provjeru izlaza"; Provjerite postoji li redak za brisanje ili ponovno stvaranje. U 6 točaka zapišite svoja saznanja i kako ćete osigurati državu.
popis za provjeru
- [ ] Jesam li naveo oblak, alat i verziju za AI i zatražio kod s najužim dopuštenjima?
- [ ] Jesam li provjerio kod za labave zadane postavke (0.0.0.0/0, zatvorena enkripcija)?
- [ ] Jesam li izdvojio tajne varijable umjesto da ih ugradim u kod?
- [ ] Jesam li pročitao izlaz plana/provjere i označio retke za brisanje prije primjene?
- [ ] Jesam li procijenio učinak gubitka podataka "prisilne zamjene"/ponovne izgradnje linija?
- Nisam li državnu datoteku [ ] držao šifriranu, zaključanu, u udaljenoj pozadini i iscurio je?