Dobici:
- Sposobnost razumijevanja IaC koncepta i Terraformovog radnog ciklusa (init, planiranje, primjena, stanje, modul) i mogućnost da umjetna inteligencija proizvodi sigurne HCL nacrte
- Sposobnost provjere svake promjene s planom prije primjene i hvatanja neočekivanih linija za uništavanje/zamjenu
- Sposobnost primjene načela čuvanja tajni izvan koda, sigurnog održavanja stanja i minimiziranja IAM dozvola
U prošlosti je postavljanje poslužitelja bilo stvar klikanja kroz ploču u oblaku: stvorite virtualni stroj, postavite mrežu, dodajte sigurnosno pravilo. Ova je metoda bila spora, sklona pogreškama i neponovljiva — bilo je gotovo nemoguće postaviti isto okruženje drugi put. Danas se infrastrukturom upravlja kao kod. IaC (Infrastructure as Code) je pristup za opisivanje resursa u oblaku kao što su poslužitelji, mreže i baze podataka u tekstualnim datotekama, a ne ručno. Ove datoteke nalaze se u kontroli verzija (Git); Možete vidjeti tko je promijenio što, kada i što; Istu infrastrukturu možete postaviti mnogo puta, na potpuno isti način, jednom naredbom.
Najčešći IaC alat je Terraform. Terraform preuzima definicije koje pišete na čitljivom jeziku koji se zove HCL (HashiCorp Configuration Language — Terraformov konfiguracijski jezik), prevodi ih u API pružatelja usluga oblaka (AWS, Azure, GCP) i stvara resurse. AI vrlo dobro poznaje HCL i brzo proizvodi složene blokove. Ali u IaC-u cijena pogreške je visoka: jedna pogrešna definicija može izbrisati cijelu proizvodnu bazu podataka. Zato je zlatno pravilo u Terraformu vidjeti svaku promjenu s 'planom' prije nego što je provedete.
Terraformovo vrijeme rada
Terraform radi s tri osnovne naredbe — poznavanje njih je preduvjet za kontrolu AI izlaza:
- `terraform init`: Pokreće projekt, preuzima potrebne dodatke pružatelja usluga.
- `terraform plan`: Uspoređuje trenutnu situaciju sa željenom situacijom i pokazuje što dodati, što promijeniti, što izbrisati. Ne provodi ništa. To je najkritičniji sigurnosni korak.
- `terraform apply`: Stvarno primjenjuje Plan, stvarajući/mijenjajući resurse.
Osim toga, dva su koncepta vitalna. Stanje (datoteka stanja): Ovo je datoteka u kojoj Terraform čuva trenutno stanje resursa kojima upravlja; Obično se čuva u udaljenom i zaključanom skladištu kako ga dvije osobe ne bi mogle promijeniti ili uništiti u isto vrijeme. Modul: konfiguracijski paket za višekratnu upotrebu; Na primjer, možete koristiti modul "postavljanje mreže" u mnogim projektima.
Savjet: Najopasniji znak u izlazu Terraforma je uništiti ili -/+ (zamijeniti) linije u izlazu plana. To znači da će resurs biti izbrisan. Ako vidite neočekivano uništenje u planu, nemojte ga nikada primjenjivati, prvo shvatite zašto se to dogodilo.
Korak po korak: Pisanje IaC-a s AI
- Pojasnite željenu infrastrukturu. Budite konkretni poput "jedan VPC, dvije podmreže, jedna sigurnosna grupa i jedan t3.micro EC2 na eu-central-1".
- Navedite dobavljača i verziju. Koji oblak, koji Terraform i verzija pružatelja usluga? Ako ne navedete verziju, AI može vratiti zastarjelu/nekompatibilnu sintaksu.
- Dajte izraditi HCL nacrt. Također zahtijevajte varijable i izlaze.
- Izbaci Secret. Vrijednosti kao što su lozinke i ključevi trebaju ići u varijablu i tajni trezor, a ne u kod.
- Pokrenite `init` + `plan`. Pročitajte izlaz plana redak po redak; Provjerite ima li neočekivanih brisanja.
- Počnite s malim, implementirajte postupno. Prvo ga primijenite u izoliranom testnom računu/okruženju.
Sigurnost: rizici specifični za IAC
IaC je rizičan koliko i snažan. Tri kritične točke:
- Postoji tajna u državnom dosjeu. Terraform stanje ponekad čuva osjetljive vrijednosti, kao što su lozinke baze podataka, u otvorenom tekstu. Nikada ne stavljajte državu u javno spremište; Koristite šifriranu udaljenu pozadinu s ograničenim pristupom.
- Nemojte ugrađivati tajne u HCL. Redovi poput password="prod123" trajno se zapisuju u Git povijest. Umjesto toga, koristite varijablu i dajte vrijednost tijekom izvođenja iz varijable okruženja (TF_VAR_...) ili tajnog trezora.
- Vrlo široko IAM dopuštenje. AI ponekad proizvodi blokove poput Action: "*" (dopusti sve) kako bi "proradilo". Ovo je ranjivost; suzite dopuštenje na potrebni minimum.
Pažnja: jednom kada tajna uđe u Git povijest, ostaje u prošlosti i može biti ugrožena, čak i ako izbrišete datoteku. Ako izvršite pogrešku, odmah poništite i rotirajte tajnu; Samo brisanje nije dovoljno.
Tablica znakova rizičnog plana
Ispis plana
Značenje
što učiniti
+stvoriti
Dodat će se novi resurs
Općenito sigurno, ali pregledajte
~ ažurirati na mjestu
Izvor će se promijeniti na licu mjesta
Provjerite utjecaj (hoće li doći do prekida?)
-/+ zamijeniti
Bit će izbrisano i ponovno kreirano
OPREZ: može doći do gubitka podataka
- uništiti
Resurs će biti uništen
STOP: nikad se ne prijavljuj ako to ne očekuješ
tri mini kućišta
Slučaj 1 — 2 dana rada u 3 sata. Jedan tim je namjeravao napisati Terraform za postavljanje novog testnog okruženja (VPC, podmreže, RDS baza podataka, ECS klaster), ali su se upravo preselili na HCL. Opisali su arhitekturu i verzije AI-u i izradili modularni nacrt. Provjerili su svaki modul s planom i pokrenuli ga za 3 sata; Trebalo bi im dva dana ručnih pokušaja i pogrešaka.
Slučaj 2 — plan je uhvatio brisanje. Inženjer je izradio plan bez primjene koda za ažuriranje generiranog umjetnom inteligencijom. Izlaz je sadržavao -/+ zamjenu za proizvodnu bazu podataka — AI je pokušao zamijeniti nezamjenjivo polje, što je značilo brisanje i ponovno stvaranje baze podataka. Inženjer je zaustavio primjenu i promijenio promjenu u sigurnu metodu. Navika planiranja spriječila je katastrofu.
Slučaj 3 — skriveno tajno curenje. Junior, YZ je izdao db_password = "S3cret!" Postavio je liniju kakva jest i gurao je. Uhvaćen u pregledu koda; Lozinka je odmah poništena i promijenjena, vrijednost je premještena u varijablu i unesena iz tajnog trezora. Lekcija: U HCL-u nikada nema tajni otvorenog teksta.
Četiri predloška za kopiranje
1) Generiranje nacrta infrastrukture:
Napišite sljedeću infrastrukturu na [CLOUD: AWS] s Terraformom (verzija ~> 1.7): [POPIS IZVORA]. Regija [X]. Pravila:- Učinite sve osjetljive vrijednosti varijabilnim, nemojte ih ugrađivati u HCL.- Popravite verziju pružatelja usluga (required_providers).- Minimizirajte IAM dozvole, nemojte koristiti "*".- Vratite [X, Y] kao izlaz. Navedite kod modularno i s objašnjenjima.
2) Tumačenje rezultata plana:
Analizirajte donji izlaz 'plana terraforme'. Navedite me: (1) koji su resursi dodani/promijenjeni/OBRISANI, (2) redovi u kojima postoji rizik od gubitka ili prekida podataka, (3) 3 pitanja koja bih trebao postaviti prije prijave. Plan: [IZLAZ]
3) Provjerite sigurnost postojećeg HCL-a:
Provjerite sljedeći Terraform kod za sigurnost: ugrađena tajna, preširoko IAM dopuštenje, pravilo otvorene mreže (0.0.0.0/0), nekriptirana pohrana? Svaki nalaz napišite prema važnosti i ispravku. Šifra: [HCL]
4) Pretvorite kod koji se ponavlja u modul:
Pretvorite sljedeći Terraformov kod koji se ponavlja u modul za višekratnu upotrebu: koje bi vrijednosti trebale biti varijable, kakvo bi trebalo biti sučelje modula? Također prikaži primjere korištenja. Šifra: [HCL]
Slab upit / Jak upit
Slabo: "Stvorite bazu podataka pomoću Terraforma."
Rezultat: nejasno koji oblak, koji motor, koja verzija, šifrirano ili ne; S naslijeđenom sintaksom, AI može pružiti javno dostupan primjer koji ugrađuje lozinku u kod.
Snažno: "Stvorite instancu RDS PostgreSQL 15 na AWS-u s Terraformom ~> 1.7. Napravite varijablu lozinke, nemojte je ugrađivati u kod. Pohrana je šifrirana, dostupna je samo iz privatne podmreže, ne javne. Popravite verziju pružatelja usluga. Vratite krajnju točku kao izlaz."
Razlika: drugi prompt daje mehanizam, verziju, enkripciju, mrežno ograničenje i tajno pravilo — izlaz je siguran i blizu proizvodnje.
Uobičajene greške
- `Prijaviti` se bez izrade `plana`. Najskuplja greška u IaC; uvijek prvo planiraj.
- Tajna ugradnje u HCL. Stvara trajno curenje u Git povijest.
- Stanje pohranjivanja nesigurno. Nešifrirano, otključano, javno stanje je katastrofa.
- Ne popravlja se verzija. Korištenje pružatelja bez navođenja verzije dovest će do iznenadnih kvarova u budućnosti.
- *`Radnja: široko dopuštenje kao što je ""`.** Krši načelo najmanje privilegije.
- Ignoriranje neočekivanog "uništenja". Primjena linija za brisanje u Planu bez pitanja.
Ukratko
IaC pretvara infrastrukturu u kôd koji se može ponavljati, verzijati i revidirati; Najčešći alat je Terraform. AI brzo proizvodi HCL dopune, ali morate navesti verziju, pojedinosti specifične za oblak i sigurnosna pravila. Nepogrešivo pravilo u Terraformu: vidjeti svaku promjenu s planom, ispitati neočekivana brisanja, držati tajne podalje od koda i održavati stanje sigurnim. Redovi za uništavanje i zamjenu u ispisu plana mjesta su koja treba najpažljivije čitati.
Zadatak aplikacije
Neka AI generira malu infrastrukturu (npr. spremnik za pohranu i politiku pristupa) pomoću gornjeg predloška "Generiraj skicu infrastrukture". Zatim: (1) neka predložak "provjera" provjeri ima li tajnih ili * dopuštenja ugrađenih u kod; (2) ako je moguće, pokrenite init + plan na testnom računu i pročitajte izlaz plana s predloškom "tumačenje plana"; (3) zabilježite sva neočekivana brisanja/promjene.
popis za provjeru
- [ ] Dodao sam oblak, verziju Terraforma/provajdera i enkripciju/mrežna ograničenja u svoj upit.
- [ ] U kodu nema tajne otvorenog teksta; varijabla preciznih vrijednosti.
- [ ] Suzio sam IAM/dopuštenja na minimalna dopuštenja, * Nisam ga koristio.
- [ ] Pokrenuo sam plan prije primjene i pročitao izlaz redak po redak.
- [ ] Potvrdio sam da u planu nema neočekivanog uništenja/zamjene.
- [ ] Siguran sam da se stanje čuva u šifriranoj, zaključanoj i ograničenoj pozadini.