zisky:
- Schopnosť porozumieť konceptu IaC a pracovnému cyklu Terraformu (začiatok, plán, aplikácia, stav, modul) a nechať umelú inteligenciu vytvárať bezpečné návrhy HCL
- Schopnosť skontrolovať každú zmenu pomocou plánu pred aplikáciou a zachytiť neočakávané zničenie/nahradenie línií
- Schopnosť aplikovať princípy uchovávania tajomstiev v kóde, bezpečného udržiavania stavu a minimalizácie povolení IAM
V minulosti bolo nastavenie servera otázkou kliknutia cez cloudový panel: vytvorte virtuálny stroj, nastavte sieť, pridajte bezpečnostné pravidlo. Táto metóda bola pomalá, náchylná na chyby a neopakovateľná – bolo takmer nemožné nastaviť rovnaké prostredie druhýkrát. Dnes je infraštruktúra riadená ako kód. IaC (Infrastructure as Code) je prístup k popisu cloudových zdrojov, ako sú servery, siete a databázy, v textových súboroch, nie manuálne. Tieto súbory sa nachádzajú v správe verzií (Git); Môžete vidieť, kto čo zmenil, kedy a čo; Rovnakú infraštruktúru môžete nastaviť mnohokrát, úplne rovnakým spôsobom, jedným príkazom.
Najbežnejším nástrojom IaC je Terraform. Terraform preberá definície, ktoré napíšete, v čitateľnom jazyku s názvom HCL (HashiCorp Configuration Language – konfiguračný jazyk Terraformu), preloží ich do API poskytovateľa cloudu (AWS, Azure, GCP) a vytvorí zdroje. Umelá inteligencia veľmi dobre pozná HCL a rýchlo vytvára zložité bloky. Ale v IaC je cena chyby vysoká: jedna nesprávna definícia môže vymazať celú produkčnú databázu. Preto zlatým pravidlom v Terraforme je vidieť každú zmenu s „plánom“ pred jej implementáciou.
Prevádzkový čas Terraformu
Terraform pracuje s tromi základnými príkazmi – ich poznanie je nevyhnutným predpokladom na ovládanie výstupu AI:
- `terraform init`: Spustí projekt, stiahne potrebné pluginy poskytovateľa.
- `terraform plan`: Porovnáva aktuálnu situáciu s požadovanou situáciou a ukazuje, čo pridať, čo zmeniť, čo odstrániť. Nič neimplementuje. Je to najdôležitejší bezpečnostný krok.
- `terraform apply`: V skutočnosti aplikuje plán, vytvára/modifikuje zdroje.
Okrem toho sú dôležité dva pojmy. Stav (súbor stavu): Toto je súbor, v ktorom Terraform uchováva aktuálny stav zdrojov, ktoré spravuje; Zvyčajne je uložený vo vzdialenom a uzamknutom sklade, aby ho dvaja ľudia nemohli zmeniť alebo zničiť súčasne. Modul: Opätovne použiteľný konfiguračný balík; V mnohých projektoch môžete použiť napríklad modul „nastaviť sieť“.
Tip: Najnebezpečnejším znakom vo výstupe Terraform je zničiť alebo -/+ (nahradiť) riadky vo výstupe plánu. To znamená, že zdroj bude vymazaný. Ak v pláne uvidíte neočakávané zničenie, nikdy ho neaplikujte, najprv pochopte, prečo sa objavil.
Krok za krokom: Písanie IaC pomocou AI
- Ujasnite si požadovanú infraštruktúru. Buďte konkrétni ako „jeden VPC, dve podsiete, jedna bezpečnostná skupina a jedna t3.micro EC2 na eu-central-1“.
- Zadajte poskytovateľa a verziu. Ktorý cloud, ktorý Terraform a verziu poskytovateľa? Ak nešpecifikujete verziu, AI môže vrátiť zastaranú/nekompatibilnú syntax.
- Nechajte vypracovať návrh HCL. Požiadajte aj o premenné a výstupy.
- Vytiahnite tajomstvo. Hodnoty, ako sú heslá a kľúče, by mali ísť do premennej a tajného trezoru, nie do kódu.
- Spustite `init` + `plan`. Prečítajte si výstup plánu riadok po riadku; Skontrolujte neočakávané vymazania.
- Začnite v malom, implementujte postupne. Najprv ho aplikujte v izolovanom testovacom účte/prostredí.
Bezpečnosť: riziká špecifické pre IaC
IaC je rovnako riskantné ako silné. Tri kritické body:
- V štátnom spise je tajomstvo. Stav Terraform niekedy uchováva citlivé hodnoty, ako sú heslá databázy, v otvorenom texte. Nikdy neumiestňujte štát do verejného úložiska; Použite šifrovaný vzdialený backend s obmedzeným prístupom.
- Do HCL nevkladajte tajné informácie. Riadky ako password="prod123" sa natrvalo zapisujú do histórie Git. Namiesto toho použite premennú a zadajte hodnotu za behu z premennej prostredia (TF_VAR_...) alebo tajného trezoru.
- Veľmi široké povolenie IAM. AI niekedy vytvára bloky ako Action: „*“ (povoliť všetko), aby to „fungovalo“. Toto je zraniteľnosť; obmedziť povolenie na potrebné minimum.
Upozornenie: Keď tajomstvo vstúpi do histórie Git, zostane v minulosti a môže byť napadnuté, aj keď súbor odstránite. Ak sa zaviažete omylom, tajenku okamžite zrušte a otočte; Len mazanie nestačí.
Tabuľka značiek rizikového plánu
Výtlačok plánu
Význam
čo robiť
+vytvoriť
Bude pridaný nový zdroj
Vo všeobecnosti bezpečné, skontrolujte však
~ aktualizovať na mieste
Zdroj sa zmení na mieste
Overte vplyv (dôjde k výpadku?)
-/+ nahradiť
Bude vymazaný a znovu vytvorený
UPOZORNENIE: Môže dôjsť k strate údajov
- zničiť
Zdroj bude zničený
STOP: nikdy neaplikujte, ak to neočakávate
tri mini prípady
Prípad 1 – 2 dni práce za 3 hodiny. Jeden tím sa chystal napísať Terraform, aby vytvoril nové testovacie prostredie (VPC, podsiete, databáza RDS, klaster ECS), ale práve sa presunul do HCL. Opísali architektúru a verzie AI a vytvorili modulárny plán. Overili každý modul s plánom a mali ho spustený za 3 hodiny; Trvalo by im to dva dni manuálneho pokusu a omylu.
Prípad 2 – plán bol vymazaný. Inžinier spustil plán bez použitia aktualizačného kódu vygenerovaného AI. Výstup obsahoval -/+ nahradenie produkčnej databázy – AI sa pokúsila nahradiť nenahraditeľné pole, čo znamenalo vymazanie a opätovné vytvorenie databázy. Inžinier zastavil aplikáciu a zmenil zmenu na bezpečnú metódu. Zvyk plánovať zabránil katastrofe.
Prípad 3 – skrytý únik tajomstva. Junior YZ vydal db_password = "S3cret!" Spáchal čiaru tak, ako je a posunul ju. Chytený pri kontrole kódu; Heslo bolo okamžite zrušené a zmenené, hodnota bola presunutá do premennej a napájaná z tajného trezoru. Ponaučenie: V HCL nikdy neexistujú tajomstvá otvoreného textu.
Štyri kopírovateľné šablóny
1) Generovanie návrhu infraštruktúry:
Napíšte nasledujúcu infraštruktúru na [CLOUD: AWS] s Terraformom (verzia ~> 1.7): [ZOZNAM ZDROJOV]. Región [X]. Pravidlá:- Urobte všetky citlivé hodnoty premenlivé, nevkladajte ich do HCL.- Opravte verziu poskytovateľa (required_providers).- Minimalizujte povolenia IAM, nepoužívajte „*“.- Vráťte [X, Y] ako výstup. Poskytnite kód modulárne a s vysvetleniami.
2) Interpretácia výstupu plánu:
Analyzujte výstup „plánu terraform“ nižšie. Uveďte mi: (1) aké zdroje boli pridané/zmenené/VYMAZANÉ, (2) riadky, ktorým hrozí strata alebo prerušenie údajov, (3) 3 otázky, ktoré by som si mal položiť pred podaním žiadosti. Plán: [VÝSTUP]
3) Skontrolujte bezpečnosť existujúceho HCL:
Skontrolujte bezpečnosť nasledujúceho kódu Terraform: vložené tajomstvo, príliš široké povolenie IAM, pravidlo otvorenej siete (0.0.0.0/0), nešifrované úložisko? Napíšte každý nález v poradí podľa dôležitosti a opravy. Kód: [HCL]
4) Preveďte opakujúci sa kód na modul:
Preveďte nasledujúci opakujúci sa kód Terraform na opakovane použiteľný modul: aké hodnoty by mali byť premenné, aké by malo byť rozhranie modulu? Ukážte aj príklad použitia. Kód: [HCL]
Slabá výzva / Silná výzva
Slabé: "Vytvorte databázu pomocou Terraform."
Výsledok: nie je jasné, ktorý cloud, ktorý engine, ktorá verzia, či je šifrovaná alebo nie; So staršou syntaxou môže AI poskytnúť verejne dostupný príklad, ktorý vloží heslo do kódu.
Strong: "Vytvorte inštanciu RDS PostgreSQL 15 na AWS s Terraform ~> 1.7. Vytvorte premennú hesla, nevkladajte ju do kódu. Úložisko je šifrované, prístupné iba zo súkromnej podsiete, nie verejné. Opravte verziu poskytovateľa. Vráťte koncový bod ako výstup."
Rozdiel: druhá výzva poskytuje motor, verziu, šifrovanie, obmedzenie siete a tajné pravidlo – výstup je bezpečný a blízko k produktu.
Časté chyby
- `aplikovať` bez toho, aby ste si `plánovali`. Najdrahšia chyba v IaC; vždy najprv plánujte.
- Tajné vkladanie do HCL. Vytvára trvalý únik do histórie Git.
- Nebezpečný stav skladovania. Nezašifrovaný, odomknutý verejný štát je katastrofa.
- Verzia sa neopravuje. Používanie poskytovateľa bez určenia verzie povedie v budúcnosti k náhlym zlyhaniam.
- *`Akcia: Široké oprávnenie, ako napríklad """.** Porušuje princíp najmenšieho privilégia.
- Ignorovanie neočakávaného „zničenia“. Použitie vymazaných riadkov v pláne bez otázok.
V súhrne
IaC premení infraštruktúru na opakovateľný, verzovateľný a auditovateľný kód; Najbežnejším nástrojom je Terraform. Umelá inteligencia rýchlo vytvára útržky HCL, musíte však poskytnúť verziu, podrobnosti špecifické pre cloud a pravidlá zabezpečenia. Neomylné pravidlo v Terraforme: vidieť každú zmenu pomocou plánu, vyžiadať si neočakávané vymazania, udržať tajomstvá ďaleko od kódu a bezpečne udržiavať stav. Zničiť a nahradiť riadky vo výstupe plánu sú miesta, ktoré by ste mali čítať pozornejšie.
Aplikačná úloha
Nechajte AI vygenerovať malú infraštruktúru (napr. úložný priestor a politiku prístupu) pomocou vyššie uvedenej šablóny „Generovať náčrt infraštruktúry“. Potom: (1) nechajte "preverovaciu" šablónu skontrolovať na tajné alebo * povolenia vložené do kódu; (2) ak je to možné, spustite init + plán na testovacom účte a prečítajte si výstup plánu pomocou šablóny „interpretácia plánu“; (3) všimnite si akékoľvek neočakávané vymazania/zmeny.
kontrolný zoznam
- [ ] Do výzvy som pridal cloud, verziu Terraform/poskytovateľa a šifrovanie/sieťové obmedzenia.
- [ ] V kóde nie je žiadne tajomstvo otvoreného textu; premenné hodnoty presnosti.
- [ ] Zúžil som IAM/oprávnenia na minimálne oprávnenia, * nepoužil som to.
- [ ] Pred aplikáciou som spustil plán a prečítal som si výstup riadok po riadku.
- [ ] Overil som si, že v pláne nie je žiadne neočakávané zničenie/nahradenie.
- [ ] Som si istý, že stav je uložený v zašifrovanom, uzamknutom a obmedzenom backende.