zisky:
- Schopnost vytvářet IaC (Terraform, Ansible) kód s umělou inteligencí s nejužšími oprávněními a bezpečnými výchozími nastaveními a rozumět deklarativnímu přístupu
- Schopnost zabránit ztrátě dat čtením a zachycením řádků odstranění a vynucení nahrazení před použitím výstupu plánu/kontroly
- Schopnost zabránit úniku tajných informací udržováním státního souboru zašifrovaného, uzamčeného ve vzdáleném backendu a rozdělením změn na malé, vratné kroky
Management of Infrastructure as Code (IaC): Terraform, Ansible a Plan Control s AI
V minulosti se nastavení serveru provádělo pomocí ručních kliknutí, příkazů a osobních poznámek; Výsledkem byly nereprodukovatelné servery „sněhové vločky“, které nikdo přesně nevěděl, jak je nastavit. Infrastructure as Code (IaC) je přístup, který ukončuje tento chaos: servery, sítě, bezpečnostní pravidla nejsou definována ručně, ale pomocí verzovatelných textových souborů (kódu). Když spustíte tento kód, infrastruktura je nastavena přesně tak, jak jste ji napsali – pokaždé stejná, zdokumentovaná a opakovatelná. Nejběžnějšími nástroji jsou Terraform a CloudFormation pro cloudovou infrastrukturu a Ansible pro konfiguraci serveru. Zde je AI velmi zručná v psaní, vysvětlování a kontrole tohoto IaC kódu. Ale síla IaC je také jeho nebezpečím: jedna špatná linka může zničit celou infrastrukturu; takže AI píše kód, vy si přečtete „plán“, schválíte ho a provedete.
V tomto bloku se budeme zabývat deklarativním přístupem, rozlišením plán/použít, bezpečností státu a idempotenci; Naučíte se generování IaC s AI a nejdůležitější dovednost, "ovládání plánu".
Deklarativní myšlení: „co kdyby“, ne „jak to udělat“
Většina nástrojů IaC je deklarativních: popíšete konečný stav systému ("řekněme 3 webové servery, 1 load balancer"), nástroj sám vypočítá, jak se do tohoto stavu dostat. To se liší od psaní skriptu („udělej toto, pak udělej tamto“ krok za krokem). Velkou výhodou deklarativního přístupu je idempotence: i když kód spustíte desetkrát, výsledek je stejný, protože nástroj zkontroluje, zda požadovaný stav již existuje, a pokud ano, nedotkne se jej. Pamatujte na tento rozdíl, když zapisujete IaC do AI: říkáte „nechte tuto infrastrukturu stát“, nikoli „spusťte tyto příkazy“.
Naplánujte/použijte: nejdůležitější bezpečnostní zábradlí
Život zachraňující funkce IaC je krok plánu. V Terraformu, plánu terraform, v Ansible, režim --check vytvoří náhled "co se změní, když to použiji" před spuštěním kódu: "2 zdroje budou přidány, 1 se změní, 0 bude odstraněno". Jedině tak porovnáte svůj záměr s realitou před realizací. Kritické pravidlo: nikdy nepoužívejte bez přečtení plánu. Hledejte zejména linie „destroy“; Pokud kvůli překlepu vidíte „12 bude odstraněno“ místo „1 bude změněno“, plán vás zachránil před katastrofou. Po vytištění kódu do AI řekněte „prozkoumejte se mnou výstup plánu řádek po řádku, označte každý řádek, který obsahuje odstranění/obnovení“.
Upozornění: Některé změny v Terraformu „zničí a znovu vytvoří“ zdroj namísto „aktualizace na místě“. To znamená ztrátu dat pro databázi. Ignorování -/+ nebo "vynucené nahrazení" ve výstupu plánu je jednou z nejdražších chyb.
Státní spis: záznam tajemství a pravdy
Nástroje jako Terraform uchovávají aktuální stav infrastruktury, kterou spravují, ve stavovém souboru. Tento soubor je kritický ze dvou důvodů. Za prvé, může obsahovat tajemství (hesla databáze, klíče mohou spadat do stavu v otevřeném textu); Proto nikdy nevkládejte stav do veřejného úložiště nebo AI, uchovávejte jej v zašifrovaném vzdáleném backendu s omezeným přístupem. Za druhé, pokud je stát zkorumpován nebo ztracen, vozidlo ztratí spojení mezi skutečnou infrastrukturou a myšlenou infrastrukturou; Nezbytná je proto záloha stavu a uzamykacího mechanismu (zámek, který zabrání dvěma osobám rozbít ho současně).
Krok za krokem: Zabezpečte IaC pomocí AI
- Státní záměr a poskytovatel. "2 servery na AWS, s Terraformem, v této oblasti, této velikosti a bezpečnostní skupině." Pokud jsou cloud, nástroj a verze jasné, AI vytvoří správnou syntaxi.
- Požadovat výchozí nastavení zabezpečení. "Otevřít bezpečnostní skupinu, povolit šifrování, extrahovat tajemství do proměnné, udělit veřejný přístup." AI může ve výchozím nastavení generovat volné vzorky.
- Přečtěte si a pochopte kód. Pochopte každý zdroj, každé oprávnění, řádek po řádku. Nepoužijte oprávnění, kterému nerozumíte.
- Získejte plán a zkontrolujte jej. Spusťte plán/--kontrolu, prozkoumejte výstup pomocí AI, označte řádky odstranění a znovu sestavení.
- Aplikujte malé a oboustranné. Implementujte velkou změnu po malých kouscích, ne všechny najednou. Znát cestu zpět na každém kroku.
- Chránit stát. Používejte vzdálený, šifrovaný backend a zámek; Nikdy netěsný stav.
tři mini pouzdra
Případ 1 – Plán obnovil databázi. Inženýr chtěl zvětšit velikost databáze pomocí kódu Terraform, který vytvořil pomocí AI. Zatímco očekával, že „1 se změní“ ve výstupu plánu terraform, viděl „1 zničit, 1 přidat“ – parametr, který zvolil, spouštěl obnovu, nikoli aktualizaci na místě, což znamená, že všechna data budou smazána. Řízení plánu zastavilo nevratnou ztrátu dat dříve, než bylo implementováno.
Případ 2 – Návrat z volného výchozího nastavení. Tým požádal AI o kód brány firewall. Pro spuštění příkladu AI vygenerovala jednoduché pravidlo 0.0.0.0/0, což znamená „veřejnost na internetu“. Technik si toho všiml při čtení kódu a zúžil přístup pouze na rozsah podnikových IP adres. Pokud by byla implementována bez auditu, databáze by byla otevřena celému internetu.
Případ 3 – Zabránění úniku stavu. Mladší člen se chystal vložit neporušený soubor terraform.tfstate do veřejného nástroje k vyřešení problému s Terraformem. Senior inženýr se zastavil: stav obsahoval heslo databáze v prostém textu. Místo toho bylo sdíleno dešifrované shrnutí popisující problém a stav byl přesunut do vzdáleného šifrovaného backendu.
Čtyři kopírovatelné šablony
1) Generování zdrojů IaC (zabezpečené výchozí nastavení):
Vaše role: senior inženýr cloudové infrastruktury. [Mrak, např. AWS] pro [nástroj, např. Terraform] generovat kód. Účel: [účel].Bezpečnostní pravidla: veřejný (0.0.0.0/0) přístup OPEN;začít s nejužším oprávněním; zapnout šifrování; extrahovat tajemství do proměnných, nevkládat je do kódu; Zkontrolujte nastavení, která mohou vést ke smazání/obnovení. Vysvětlete každý zdroj krátkým komentářem.
2) Naplánujte výstupní audit:
Níže je výstup [Plán Terraform / Ansible check]. Řekněte mi: (1) kolik zdrojů bude přidáno/změněno/smazáno, (2) také označte řádky „zničit“ nebo „vynutit nahrazení“, které představují riziko ztráty dat, (3) uvést všechny změny, které se zdají neočekávané nebo nebezpečné. Výstup: [plán]
3) Kontrola zabezpečení kódu IaC:
Prověřte zabezpečení následujícího kódu IaC: (1) existují příliš široké přístupy/oprávnění, (2) je vypnuté šifrování, (3) jsou v kódu vložená tajemství, (4) existují veřejně dostupné zdroje? Ke každému nálezu navrhněte opravu. Kód: [maskovaný kód]
4) Rozdělte změnu na bezpečné části:
Nechci implementovat tuto velkou změnu infrastruktury [vysvětlení] najednou. Rozdělte to na malé, nezávislé kroky, ke kterým se snadno vrátíte. Pro každý krok: jaké změny, na co bych si měl v plánu dát pozor, jak to mohu vrátit, pokud se vyskytnou problémy?
Slabá výzva / Silná výzva
Slabá výzva:
Napište kód Terraform, který vytvoří server na AWS.
Oblast, velikost, zabezpečení, síť, šifrování jsou nejasné. Umělá inteligence vytváří nejvolnější a nejexplicitnější výchozí nastavení, aby fungovala – pokud by byla uvedena do výroby, byla by to zranitelnost.
Výkonná výzva:
Vaše role: senior inženýr cloudové infrastruktury. Definujte webový server s Terraformem na AWS eu-central-1: t3.small, pouze z rozsahu firemních IP (uvedu s proměnnou), port 443 je otevřený, disk je šifrovaný, žádný veřejný přístup, štítky jsou povinné. Tajemství jsou odhalena proměnné. Po kódu: Před jeho implementací mi řekněte 3 typy čar, kterým bych měl v plánu věnovat pozornost, a vysvětlete návratovou cestu.
Jeviště
Riziko
bezpečnostní zábradlí
psaní kódu
Volné výchozí (veřejné)
Nejužší povolení + čtení
plánovat/kontrolovat
Mazání, aniž byste si to uvědomovali
Naplánujte kontrolu, zničte značení
Použít
Velká jednorázová změna
Malé, vratné kroky
státní správě
Netěsnost glazury, deformace
Vzdálený šifrovaný backend + zámek
Časté chyby
- Podání žádosti bez přečtení plánu. Plán předznamenává vymazání a rekonstrukci; Pokud je přeskočen, ztráta dat je nevyhnutelná.
- Nevšimnout si uvolněného výchozího nastavení. Instance AI často produkují 0.0.0.0/0; Pokud se přesune do produkce, znamená to open source pro celý internet.
- Únikový stát. Export souboru stavu do AI nebo otevřeného úložiště odhalí tajemství prostého textu.
- Vkládání tajemství do kódu. Zápis hesla do IaC kódu je trvalý únik v historii verzí kódu.
- Záměna přestavby za aktualizaci. Ignorování linie nahrazení sil bude mít za následek ztrátu dat v databázích.
Tip: I když dáte výstup plánu AI ke kontrole, založte konečné rozhodnutí na svých vlastních znalostech, nikoli na textu plánu. AI shrnuje plán a označí rizikové linie; ale odpověď na otázku „je toto smazání přijatelné“ závisí na vašem obchodním kontextu.
V souhrnu
IaC přináší opakovatelnost a dokumentaci díky správě infrastruktury s verzovatelným kódem spíše než ručním klikáním. AI je mocným partnerem při psaní tohoto kódu, jeho popisu a kontrole bezpečnosti. Ale síla IaC je jeho nebezpečím: jedna linka může zničit celou infrastrukturu. Myslete deklarativně, začněte s nejužším oprávněním, opravte uvolněná výchozí nastavení, udržujte tajemství mimo kód a stav. Nejdůležitější zábradlí je krok plánu/kontroly: nikdy neprovádějte bez přečtení řádků pro odstranění a obnovu. Udržujte stát zašifrovaný, uzamčený a vzdálený. Kód je AI, rozhodnutí je na vás.
Aplikační úkol
Vyberte malý cíl infrastruktury (například jeden virtuální počítač a pravidlo zabezpečení). S výše uvedenou šablonou „generování zdrojů IaC“ požádejte AI o kód s bezpečnými výchozími nastaveními. Znovu zkontrolujte kód pomocí šablony „Revize zabezpečení kódu IaC“ a pokuste se najít alespoň jedno volné nastavení. Pokud je to možné, spusťte plán/--kontrolu na testovacím účtu a zkontrolujte výstup pomocí šablony „Kontrola výstupu plánu“; Podívejte se, zda existuje řádek smazat nebo znovu vytvořit. Své poznatky a jak zajistíte stát zapište do 6 bodů.
kontrolní seznam
- [ ] Specifikoval jsem cloud, nástroj a verzi pro AI a požádal jsem o kód s nejužšími oprávněními?
- [ ] Zkontroloval/a jsem, zda v kódu nejsou uvolněné výchozí hodnoty (0.0.0.0/0, uzavřené šifrování)?
- [ ] Extrahoval jsem tajemství do proměnné místo toho, abych je vložil do kódu?
- [ ] Přečetl jsem si výstup plánu/kontroly a označil jsem smazané řádky před aplikací?
- [ ] Vyhodnotil jsem dopad na ztrátu dat v důsledku „náhrady sil“ / přestavby linek?
- Neudržel jsem soubor Stav [ ] zašifrovaný, zamčený ve vzdáleném backendu a neprozradil ho?