Jednotka 3 / 11

Riadenie infraštruktúry ako kódu: Umelá inteligencia s Terraformom a IaC

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

  1. 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“.
  2. 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.
  3. Nechajte vypracovať návrh HCL. Požiadajte aj o premenné a výstupy.
  4. Vytiahnite tajomstvo. Hodnoty, ako sú heslá a kľúče, by mali ísť do premennej a tajného trezoru, nie do kódu.
  5. Spustite `init` + `plan`. Prečítajte si výstup plánu riadok po riadku; Skontrolujte neočakávané vymazania.
  6. 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:

  1. 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.
  2. 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.
  3. 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.