Dobički:
- Sposobnost izdelave kode IaC (Terraform, Ansible) z umetno inteligenco z najožjimi dovoljenji in varnimi privzetimi nastavitvami ter razumevanje deklarativnega pristopa
- Zmožnost preprečevanja izgube podatkov z branjem in zajemanjem vrstic za brisanje in prisilno zamenjavo pred uporabo načrta/preverjanja izhoda
- Zmožnost preprečevanja uhajanja skrivnosti tako, da ohranite datoteko stanja šifrirano, zaklenjeno v oddaljenem ozadju in razbijete spremembe na majhne, reverzibilne korake
Upravljanje infrastrukture kot koda (IaC): Terraform, Ansible in Plan Control z AI
V preteklosti se je nastavitev strežnika izvajala z ročnimi kliki, ukazi in osebnimi opombami; Rezultat so bili neponovljivi strežniki "snežinke", za katere nihče ni natančno vedel, kako jih postaviti. Infrastruktura kot koda (IaC) je pristop, ki konča ta kaos: strežniki, omrežja, varnostna pravila niso definirana ročno, temveč z besedilnimi datotekami (kodo), ki jih je mogoče različico uporabljati. Ko zaženete to kodo, je infrastruktura nastavljena natanko tako, kot ste jo napisali – vsakič enako, dokumentirano in ponovljivo. Najpogostejši orodji sta Terraform in CloudFormation za infrastrukturo v oblaku ter Ansible za konfiguracijo strežnika. Tu je AI zelo spreten pri pisanju, razlagi in pregledovanju te kode IaC. Toda moč IAC je tudi njegova nevarnost: ena napačna linija lahko izbriše celotno infrastrukturo; torej AI napiše kodo, vi preberete "načrt", ga odobrite in izvedete.
V tej enoti bomo razpravljali o deklarativnem pristopu, razlikovanju načrt/uporaba, državni varnosti in idempotenci; Naučili se boste ustvarjanja IaC z AI in najbolj kritične veščine, "nadzor načrta".
Deklarativno razmišljanje: "kaj če", ne "kako narediti"
Večina IaC orodij je deklarativnih: vi opišete končno stanje sistema ("recimo 3 spletni strežniki, 1 load balancer"), orodje samo izračuna, kako priti do tega stanja. To se razlikuje od pisanja scenarija ("naredi to, nato naredi tisto" korak za korakom). Velika prednost deklarativnega pristopa je idempotenca: tudi če kodo zaženete desetkrat, je rezultat enak, saj orodje preveri, ali želeno stanje že obstaja, in če obstaja, se ga ne dotakne. Zapomnite si to razliko, ko v AI pišete IaC: naredite, da reče "naj ta infrastruktura stanje", ne "zaženi te ukaze".
Načrtujte/uporabite: najpomembnejša varnostna ograja
Lastnost IaC, ki rešuje življenja, je korak načrtovanja. V Terraform načrt terraform, v Ansible, način --check ustvari predogled "kaj se bo spremenilo, če ga uporabim" pred zagonom kode: "2 vira bosta dodana, 1 bo spremenjen, 0 bo izbrisan". To je edini način, da svojo namero pred izvedbo primerjate z realnostjo. Ključno pravilo: nikoli se ne prijavite, ne da bi prebrali načrt. Bodite še posebej pozorni na črte "uničenje"; Če vidite "12 bo izbrisanih" namesto "1 bo spremenjen" zaradi tipkarske napake, vas je načrt rešil pred katastrofo. Ko natisnete kodo v AI, naj piše "z mano preglejte izhod načrta vrstico za vrstico, označite vsako vrstico, ki vsebuje izbris/ponovno ustvarjanje."
Pozor: Nekatere spremembe Terraforma "uničijo in ponovno ustvarijo" vir namesto "posodabljanja na mestu". To pomeni izgubo podatkov za bazo podatkov. Ignoriranje -/+ ali "prisili zamenjavo" v izhodu načrta je ena najdražjih napak.
Državni spis: evidenca skrivnosti in resnice
Orodja, kot je Terraform, hranijo trenutno stanje infrastrukture, ki jo upravljajo, v datoteki stanja. Ta datoteka je kritična iz dveh razlogov. Prvič, lahko vsebuje skrivnosti (gesla baze podatkov, ključi lahko padejo v stanje v navadnem besedilu); Zato stanja nikoli ne prilepite v javno skladišče ali AI, hranite ga v šifriranem oddaljenem zaledju z omejenim dostopom. Drugič, če je država poškodovana ali izgubljena, vozilo izgubi povezavo med resnično in namišljeno infrastrukturo; Zato sta nujna varnostna kopija stanja in mehanizem ključavnice (ključavnica, ki preprečuje, da bi jo dve osebi vdrli hkrati).
Korak za korakom: Zavarujte IaC z AI
- Državna namera in ponudnik. "2 strežnika na AWS, s Terraformom, v tej regiji, tej velikosti in varnostni skupini." Če so oblak, orodje in različica jasni, AI proizvaja pravilno sintakso.
- Zahtevaj privzete varnostne nastavitve. "Odpri varnostno skupino, omogoči šifriranje, ekstrahiraj skrivnosti v spremenljivko, odobri javni dostop." AI lahko privzeto ustvari ohlapne vzorce.
- Preberite in razumejte kodo. Razumeti vsak vir, vsako dovoljenje, vrstico za vrstico. Ne uporabljajte dovoljenja, ki ga ne razumete.
- Pridobite načrt in ga preverite. Izvedite načrt/--preverite, preglejte izhod z AI, označite vrstice za brisanje in ponovno gradnjo.
- Nanesite majhne in reverzibilne. Izvedite veliko spremembo v majhnih delih, ne vse naenkrat. Pozna pot nazaj na vsakem koraku.
- Zaščiti državo. Uporabite oddaljeno, šifrirano zaledje in zaklepanje; Nikoli ne puščajte.
trije mini kovčki
1. primer – načrt je obnovil zbirko podatkov. Inženir je želel povečati velikost baze podatkov s kodo Terraform, ki jo je izdelal z AI. Medtem ko je pričakoval "1 za spremembo" v izhodu načrta terraforme, je videl "1 za uničenje, 1 za dodajanje" - parameter, ki ga je izbral, je sprožil vnovično gradnjo, ne posodobitve na mestu, kar pomeni, da bodo vsi podatki izbrisani. Nadzor načrta je zaustavil nepopravljivo izgubo podatkov, preden je bil implementiran.
2. primer — Vrnitev iz neplačila. Ekipa je od umetne inteligence zahtevala kodo požarnega zidu. Za izvedbo primera je umetna inteligenca ustvarila preprosto pravilo 0.0.0.0/0, kar pomeni "javno na internetu". Inženir je to opazil med branjem kode in zožil dostop le na obseg IP-jev podjetja. Če bi jo izvajali brez revizije, bi bila zbirka podatkov odprta za celoten internet.
Primer 3 – Preprečeno uhajanje stanja. Mlajši član je nameraval nedotaknjeno prilepiti datoteko terraform.tfstate v javno orodje za rešitev težave Terraform. Višji inženir se je ustavil: stanje je vsebovalo geslo baze podatkov z navadnim besedilom. Namesto tega je bil dešifriran povzetek, ki opisuje težavo, in stanje je bilo premaknjeno v oddaljeno šifrirano zaledje.
Štiri predloge za kopiranje
1) Ustvarjanje virov IAC (varna privzeta nastavitev):
Vaša vloga: višji inženir infrastrukture v oblaku. [Oblak, npr. AWS] za [orodje, npr. Terraform] ustvari kodo. Namen: [namen]. Varnostna pravila: javni (0.0.0.0/0) dostop ODPRTO; začni z najožjim dovoljenjem; vključite šifriranje; ekstrahirajte skrivnosti v spremenljivke, ne vdelajte jih v kodo; Preverite nastavitve, ki lahko povzročijo izbris/ponovno ustvarjanje. Vsak vir razloži s kratkim komentarjem.
2) Načrtujte revizijo izhoda:
Spodaj je izhod [Terraform načrt / ansible check]. Povejte mi: (1) koliko virov bo dodanih/spremenjenih/izbrisanih, (2) označite tudi vrstice »uniči« ali »prisili zamenjavo«, ki predstavljajo tveganje izgube podatkov, (3) navedite vse spremembe, ki se zdijo nepričakovane ali nevarne. Rezultat: [načrt]
3) Varnostni pregled kode IAC:
Preglejte naslednjo kodo IaC glede varnosti: (1) ali obstajajo preveč široki dostopi/dovoljenja, (2) ali je šifriranje izklopljeno, (3) ali so v kodo vdelane skrivnosti, (4) ali obstajajo javno dostopni viri? Za vsako ugotovitev predlagajte popravek. Koda: [maskirana koda]
4) Razdelite spremembo na varne dele:
Te velike spremembe infrastrukture [razlaga] ne želim izvesti naenkrat. Razčlenite ga na majhne, neodvisne korake, ki jih je enostavno vrniti. Za vsak korak: kaj se spremeni, na kaj moram biti pozoren v načrtu, kako ga razveljavim, če pride do težav?
Šibek poziv/močan poziv
Šibek poziv:
Napišite kodo Terraform, ki ustvari strežnik na AWS.
Regija, velikost, varnost, omrežje, šifriranje niso jasni. Umetna inteligenca proizvaja najbolj ohlapne, najbolj eksplicitne privzete vrednosti za delo - če bi bila dana v proizvodnjo, bi bila ranljivost.
Močan poziv:
Vaša vloga: višji inženir infrastrukture v oblaku. Definirajte spletni strežnik s Terraform na AWS eu-central-1: t3.small, samo iz obsega IP-jev podjetja (podal ga bom s spremenljivko), vrata 443 so odprta, disk je šifriran, ni javnega dostopa, oznake so obvezne. Skrivnosti se razkrijejo spremenljivki. Po kodi: Pred implementacijo mi povejte 3 vrste linij, na katere moram biti pozoren v načrtu, in razložite povratno pot.
Oder
Tveganje
varnostna ograja
pisanje kode
Loose default (javno)
Najožje dovoljenje + branje
načrt/preverjanje
Brisanje, ne da bi se tega zavedal
Načrtujte pregled, uničite oznake
Prijavite se
Večja enkratna sprememba
Majhni, reverzibilni koraki
državne uprave
Puščanje glazure, popačenje
Oddaljeno šifrirano zaledje + ključavnica
Pogoste napake
- Prijava brez branja načrta. Načrt predvideva izbris in rekonstrukcijo; Če je preskočen, je izguba podatkov neizogibna.
- Ne opazim ohlapne privzete vrednosti. Primerki AI pogosto ustvarijo 0.0.0.0/0; Če se premakne v proizvodnjo, to pomeni odprto kodo za celoten internet.
- Puščanje države. Izvoz datoteke stanja v AI ali odprto skladišče razkrije skrivnosti navadnega besedila.
- Vdelava skrivnosti v kodo. Pisanje gesla v kodo IaC je nenehno puščanje v zgodovini različic kode.
- Zamenjati obnovo za posodobitev. Neupoštevanje vrstice za zamenjavo sil bo povzročilo izgubo podatkov v bazah podatkov.
Namig: tudi ko dajete izhod načrta v pregled umetni inteligenci, se končna odločitev oprete na lastno znanje in ne na besedilo načrta. AI povzame načrt in označi tvegane linije; vendar je odgovor na vprašanje "ali je ta izbris sprejemljiv" odvisen od vašega poslovnega konteksta.
Če povzamem
IaC prinaša ponovljivost in dokumentacijo z upravljanjem infrastrukture s kodo, ki jo je mogoče različici, namesto z ročnimi kliki. AI je močan partner pri pisanju te kode, njenem opisovanju in pregledovanju varnosti. Toda moč IAC je njegova nevarnost: ena linija lahko izbriše celotno infrastrukturo. Razmišljajte deklarativno, začnite z najožjim dovoljenjem, popravite ohlapne privzete vrednosti, skrivnosti ne vključite v kodo in stanje. Najpomembnejša zaščitna ograja je korak načrtovanja/preverjanja: nikoli ne izvajajte, ne da bi prebrali vrstice za brisanje in ponovno gradnjo. Ohranite stanje šifrirano, zaklenjeno in oddaljeno. Koda pripada AI, odločitev je vaša.
Aplikacijska naloga
Izberite majhen infrastrukturni cilj (na primer en virtualni stroj in varnostno pravilo). Z zgornjo predlogo »Ustvarjanje virov IaC« prosite AI za kodo z varnimi privzetimi nastavitvami. Še enkrat preverite kodo s predlogo »Pregled varnosti kode IaC« in poskusite najti vsaj eno ohlapno nastavitev. Če je mogoče, zaženite plan/--preverjanje na testnem računu in preglejte izhod s predlogo »Preverjanje izhodnega načrta«; Preverite, ali obstaja vrstica za brisanje ali ponovno ustvarjanje. V 6 točkah zapišite svoje ugotovitve in kako boste zavarovali državo.
kontrolni seznam
- [ ] Ali sem AI določil oblak, orodje in različico ter zahteval kodo z najožjimi dovoljenji?
- [ ] Ali sem preveril kodo za ohlapne privzete vrednosti (0.0.0.0/0, zaprto šifriranje)?
- [ ] Ali sem ekstrahiral skrivnosti spremenljivke, namesto da bi jih vdelal v kodo?
- [ ] Ali sem pred uporabo prebral izpis načrta/preveritve in označil vrstice za brisanje?
- [ ] Ali sem ocenil vpliv izgube podatkov zaradi "prisilne zamenjave"/ponovne gradnje vrstic?
- Ali nisem datoteko [ ] State hranil šifrirano, zaklenjeno v oddaljenem ozadju in jo razkril?