Jedinica 6 / 11

Upravljanje infrastrukturom kao kodom (IaC): terraform, ansible i planska kontrola

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

  1. 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.
  2. 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.
  3. Pročitajte i razumite kod. Razumite svaki resurs, svako dopuštenje, red po red. Nemojte primjenjivati ​​dopuštenje koje ne razumijete.
  4. Nabavite plan i provjerite ga. Pokreni plan/--provjeri, ispitaj izlaz s AI, označi brisanje i ponovnu izgradnju linija.
  5. Nanesite male i reverzibilne. Provedite veliku promjenu u malim dijelovima, ne sve odjednom. Znati put natrag na svakom koraku.
  6. Š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?