Jednotka 6 / 11

Manažment infraštruktúry ako kód (IaC): Terraform, Ansible a Plan Control

zisky:

  • Schopnosť vytvárať IaC (Terraform, Ansible) kód s umelou inteligenciou s najužšími povoleniami a bezpečnými predvolenými nastaveniami a rozumieť deklaratívnemu prístupu
  • Schopnosť zabrániť strate údajov prečítaním a zachytením riadkov vymazania a vynútenia náhrady pred použitím výstupu plánu/kontroly
  • Schopnosť zabrániť úniku tajných informácií udržiavaním štátneho súboru zašifrovaného, uzamknutého vo vzdialenom backende a rozdelením zmien na malé, vratné kroky

Manažment infraštruktúry ako kód (IaC): Terraform, Ansible a Plan Control s AI

V minulosti sa nastavenie servera vykonávalo manuálnymi kliknutiami, príkazmi a osobnými poznámkami; Výsledkom boli nereprodukovateľné „snehové“ servery, ktoré nikto presne nevedel nastaviť. Infrastructure as Code (IaC) je prístup, ktorý ukončuje tento chaos: servery, siete, bezpečnostné pravidlá nie sú definované ručne, ale pomocou verzovateľných textových súborov (kódu). Keď spustíte tento kód, infraštruktúra je nastavená presne tak, ako ste ju napísali – vždy rovnaká, zdokumentovaná a opakovateľná. Najbežnejšie nástroje sú Terraform a CloudFormation pre cloudovú infraštruktúru a Ansible pre konfiguráciu servera. Tu je AI veľmi zručná v písaní, vysvetľovaní a kontrole tohto IaC kódu. Sila IaC je však aj jeho nebezpečenstvom: jedna nesprávna linka môže zničiť celú infraštruktúru; takže AI ​​píše kód, prečítate si „plán“, schválite ho a vykonáte.

V tejto časti sa budeme zaoberať deklaratívnym prístupom, rozlišovaním plán/aplikácia, bezpečnosťou štátu a idempotenciou; Naučíte sa generovanie IaC pomocou AI a najdôležitejšiu zručnosť, „ovládanie plánu“.

Deklaratívne myslenie: „čo ak“, nie „ako robiť“

Väčšina nástrojov IaC je deklaratívna: opíšete konečný stav systému („povedzme 3 webové servery, 1 vyrovnávač zaťaženia“), nástroj sám vypočíta, ako sa do tohto stavu dostať. Toto sa líši od písania skriptu („urob toto a potom tamto“ krok za krokom). Veľkou výhodou deklaratívneho prístupu je idempotencia: aj keď kód spustíte desaťkrát, výsledok je rovnaký, pretože nástroj skontroluje, či požadovaný stav už existuje, a ak áno, nedotkne sa ho. Zapamätajte si tento rozdiel, keď napíšete IaC do AI: poviete „nech sa stav tejto infraštruktúry“, nie „spustite tieto príkazy“.

Naplánovať/aplikovať: najdôležitejšie bezpečnostné zábradlie

Život zachraňujúca funkcia IaC je krok plánu. V Terraforme, pláne terraform, v Ansible, režim --check vytvorí náhľad „čo sa zmení, ak to použijem“ pred spustením kódu: „2 zdroje budú pridané, 1 sa zmení, 0 bude vymazaných“. Len tak si pred realizáciou porovnáte svoj zámer s realitou. Kritické pravidlo: nikdy neaplikujte bez prečítania plánu. Hľadajte najmä línie „zničiť“; Ak uvidíte „12 bude odstránených“ namiesto „1 bude zmenené“ kvôli preklepu, plán vás zachránil pred katastrofou. Po vytlačení kódu do AI povedzte „preskúmajte so mnou výstup plánu riadok po riadku, označte každý riadok, ktorý obsahuje vymazanie/opätovné vytvorenie“.

Upozornenie: Niektoré zmeny v Terraforme „zničia a obnovia“ zdroj namiesto „aktualizácie na mieste“. To znamená stratu údajov pre databázu. Ignorovanie -/+ alebo "vynútenie výmeny" vo výstupe plánu je jednou z najdrahších chýb.

Štátny spis: záznam tajomstiev a pravdy

Nástroje ako Terraform uchovávajú aktuálny stav infraštruktúry, ktorú spravujú, v súbore stavu. Tento súbor je kritický z dvoch dôvodov. Po prvé, môže obsahovať tajomstvá (heslá databázy, kľúče môžu spadať do stavu v otvorenom texte); Preto nikdy nevkladajte stav do verejného úložiska alebo AI, uchovávajte ho v zašifrovanom vzdialenom backende s obmedzeným prístupom. Po druhé, ak je štát skorumpovaný alebo stratený, vozidlo stratí spojenie medzi skutočnou infraštruktúrou a vymyslenou infraštruktúrou; Nevyhnutná je preto záloha stavu a uzamykacieho mechanizmu (zámok, ktorý zabráni dvom osobám naraz.

Krok za krokom: Zabezpečte IaC pomocou AI

  1. Štátny zámer a poskytovateľ. "2 servery na AWS, s Terraformom, v tomto regióne, tejto veľkosti a bezpečnostnej skupine." Ak sú cloud, nástroj a verzia jasné, AI vytvorí správnu syntax.
  2. Požiadať o predvolené nastavenia zabezpečenia. "Otvoriť bezpečnostnú skupinu, povoliť šifrovanie, extrahovať tajomstvá do premennej, poskytnúť verejný prístup." AI môže štandardne generovať voľné vzorky.
  3. Prečítajte si a pochopte kód. Pochopte každý zdroj, každé povolenie, riadok po riadku. Neuplatňujte povolenie, ktorému nerozumiete.
  4. Získajte plán a skontrolujte ho. Spustite plán/--skontrolujte, skontrolujte výstup pomocou AI, označte riadky vymazania a prestavby.
  5. Aplikujte malé a reverzibilné. Veľkú zmenu implementujte po malých kúskoch, nie naraz. Poznať cestu späť na každom kroku.
  6. Chrániť štát. Použite vzdialený, šifrovaný backend a uzamknite; Nikdy netesný stav.

tri mini prípady

Prípad 1 – Plán obnovil databázu. Inžinier chcel zväčšiť veľkosť databázy pomocou kódu Terraform, ktorý vytvoril pomocou AI. Zatiaľ čo očakával, že „1 sa zmení“ vo výstupe plánu terraform, videl „1 na zničenie, 1 na pridanie“ – parameter, ktorý si zvolil, spúšťal prestavbu, nie aktualizáciu na mieste, čo znamená, že všetky údaje budú vymazané. Riadenie plánu zastavilo nezvratnú stratu údajov skôr, ako bolo implementované.

Prípad 2 – Návrat z voľnej predvolenej hodnoty. Tím požiadal AI o kód brány firewall. Na spustenie príkladu AI ​​vygenerovala jednoduché pravidlo 0.0.0.0/0, čo znamená „verejnosť na internete“. Inžinier si to všimol pri čítaní kódu a zúžil prístup len na rozsah podnikových IP adries. Ak by bola implementovaná bez auditu, databáza by bola otvorená pre celý internet.

Prípad 3 – Zabránenie úniku štátu. Mladý člen sa chystal vložiť neporušený súbor terraform.tfstate do verejného nástroja na vyriešenie problému Terraform. Hlavný inžinier sa zastavil: stav obsahoval heslo databázy v obyčajnom texte. Namiesto toho sa zdieľalo dešifrované zhrnutie popisujúce problém a stav sa presunul do vzdialeného zašifrovaného backendu.

Štyri kopírovateľné šablóny

1) Generovanie zdrojov IaC (zabezpečené predvolené):

Vaša úloha: senior inžinier cloudovej infraštruktúry. [Oblak, napr. AWS] pre [nástroj, napr. Terraform] vygenerovať kód. Účel: [účel].Bezpečnostné pravidlá: verejný (0.0.0.0/0) prístup OTVORENÝ;začať s najužším povolením; zapnite šifrovanie; extrahovať tajomstvá do premenných, nevkladať ich do kódu; Skontrolujte nastavenia, ktoré môžu viesť k vymazaniu/opätovnému vytvoreniu. Vysvetlite každý zdroj krátkym komentárom.

2) Plán výstupného auditu:

Nižšie je uvedený výstup [Plán Terraform / Kontrola Ansible]. Povedzte mi: (1) koľko zdrojov sa pridá/zmení/odstráni, (2) označte aj riadky „zničiť“ alebo „vynútiť výmenu“, ktoré predstavujú riziko straty údajov, (3) uveďte všetky zmeny, ktoré sa zdajú byť neočakávané alebo nebezpečné. Výstup: [plán]

3) Kontrola zabezpečenia kódu IaC:

Skontrolujte bezpečnosť nasledujúceho kódu IaC: (1) existujú príliš široké prístupy/oprávnenia, (2) je vypnuté šifrovanie, (3) sú v kóde vložené tajomstvá, (4) existujú verejne dostupné zdroje? Ku každému nálezu navrhnite opravu. Kód: [maskovaný kód]

4) Rozdeľte zmenu na bezpečné časti:

Nechcem implementovať túto veľkú zmenu infraštruktúry [vysvetlenie] naraz. Rozdeľte si to na malé, nezávislé kroky, ku ktorým sa dá ľahko vrátiť. Pre každý krok: aké zmeny, čomu by som mal venovať pozornosť v pláne, ako to môžem vrátiť späť, ak sa vyskytnú problémy?

Slabá výzva / Silná výzva

Slabá výzva:

Napíšte kód Terraform, ktorý vytvorí server na AWS.

Oblasť, veľkosť, bezpečnosť, sieť, šifrovanie sú nejasné. Umelá inteligencia vytvára najvoľnejšie a najjasnejšie predvolené nastavenia – ak by bola uvedená do výroby, bola by to zraniteľnosť.

Výkonná výzva:

Vaša úloha: senior inžinier cloudovej infraštruktúry. Definuj webový server s Terraformom na AWS eu-central-1: t3.small, len z korporátneho rozsahu IP (dám s premennou), port 443 je otvorený, disk je šifrovaný, verejný prístup nie je, štítky povinné. Premennej sú odhalené tajomstvá. Po kóde: Pred implementáciou mi povedzte 3 typy riadkov, ktorým by som mal v pláne venovať pozornosť, a vysvetlite cestu návratu.

Etapa

Riziko

bezpečnostné zábradlie

písanie kódu

Voľné predvolené (verejné)

Najužšie povolenie + čítanie

plánovať/skontrolovať

Odstránenie bez toho, aby ste si to uvedomovali

Naplánujte kontrolu, zničte označenie

Použiť

Zásadná jednorazová zmena

Malé, vratné kroky

štátnej správy

Netesnosť glazúry, deformácia

Vzdialený šifrovaný backend + zámok

Časté chyby

  • Podanie žiadosti bez prečítania plánu. Plán predpokladá vymazanie a rekonštrukciu; Ak sa preskočí, strata údajov je nevyhnutná.
  • Nevšímajúc si uvoľnenú predvolenú hodnotu. Inštancie AI často produkujú 0.0.0.0/0; Ak sa presunie do produkcie, znamená to open source pre celý internet.
  • Únikový štát. Export súboru stavu do AI ​​alebo otvoreného úložiska odhalí tajomstvá otvoreného textu.
  • Vkladanie tajomstiev do kódu. Zápis hesla do kódu IaC je pretrvávajúcim únikom v histórii verzií kódu.
  • Zámena prestavby za aktualizáciu. Ignorovanie čiary nahradenia síl bude mať za následok stratu údajov v databázach.
Tip: Aj keď dáte výstup plánu AI na kontrolu, založte konečné rozhodnutie na svojich vlastných znalostiach, nie na texte plánu. AI sumarizuje plán a označuje rizikové línie; ale odpoveď na otázku „je toto vymazanie prijateľné“ závisí od vášho obchodného kontextu.

V súhrne

IaC prináša opakovateľnosť a dokumentáciu riadením infraštruktúry pomocou kódu s možnosťou verzií namiesto manuálneho klikania. AI je silným partnerom pri písaní tohto kódu, jeho popise a kontrole bezpečnosti. Ale sila IaC je jeho nebezpečenstvo: jedna linka môže zničiť celú infraštruktúru. Myslite deklaratívne, začnite s najužším povolením, opravte voľné predvolené nastavenia, udržujte tajomstvá mimo kódu a stavu. Najdôležitejším zábradlím je krok plánovania/kontroly: nikdy nevykonávajte bez prečítania riadkov vymazania a obnovenia. Udržujte štát zašifrovaný, uzamknutý a vzdialený. Kód je AI, rozhodnutie je na vás.

Aplikačná úloha

Vyberte si malý cieľ infraštruktúry (napríklad jeden virtuálny počítač a pravidlo zabezpečenia). Pomocou vyššie uvedenej šablóny „generovanie zdrojov IaC“ požiadajte AI ​​o kód s bezpečnými predvolenými hodnotami. Dvakrát skontrolujte kód pomocou šablóny „Revízia zabezpečenia kódu IaC“ a pokúste sa nájsť aspoň jedno voľné nastavenie. Ak je to možné, spustite plán/--kontrolu na testovacom účte a skontrolujte výstup pomocou šablóny „Kontrola výstupu plánu“; Zistite, či existuje riadok na odstránenie alebo opätovné vytvorenie. Zapíšte si svoje zistenia a ako zabezpečíte štát v 6 bodoch.

kontrolný zoznam

  • [ ] Zadal som cloud, nástroj a verziu pre AI a vyžiadal som si kód s najužšími povoleniami?
  • [ ] Skontroloval som, či kód neobsahuje voľné predvolené nastavenia (0.0.0.0/0, uzavreté šifrovanie)?
  • [ ] Extrahoval som tajomstvá premennej namiesto ich vloženia do kódu?
  • [ ] Prečítal som si výstup plánu/kontroly a označil som vymazané riadky pred aplikáciou?
  • [ ] Vyhodnotil som vplyv „nahradenia síl“ / prestavby liniek na stratu údajov?
  • Neuchovával som súbor Stav [ ] zašifrovaný, uzamknutý na vzdialenom backende a unikol von?