Jednotka 3 / 11

Správa infrastruktury jako kódu: Umělá inteligence s Terraformem a IaC

zisky:

  • Schopnost porozumět konceptu IaC a pracovnímu cyklu Terraformu (spuštění, plán, aplikace, stav, modul) a nechat umělou inteligenci vytvářet bezpečné návrhy HCL
  • Schopnost zkontrolovat každou změnu pomocí plánu před aplikací a zachytit neočekávané zničení / nahrazení linek
  • Schopnost aplikovat principy zachování tajemství mimo kód, bezpečného udržování stavu a minimalizace oprávnění IAM

V minulosti bylo nastavení serveru záležitostí proklikávání se cloudovým panelem: vytvořte virtuální stroj, nastavte síť, přidejte bezpečnostní pravidlo. Tato metoda byla pomalá, náchylná k chybám a neopakovatelná — bylo téměř nemožné nastavit stejné prostředí podruhé. Dnes je infrastruktura spravována jako kód. IaC (Infrastructure as Code) je přístup k popisu cloudových zdrojů, jako jsou servery, sítě a databáze, spíše v textových souborech než ručně. Tyto soubory jsou umístěny ve správě verzí (Git); Můžete vidět, kdo co změnil, kdy a co; Stejnou infrastrukturu můžete nastavit mnohokrát, úplně stejným způsobem, jedním příkazem.

Nejběžnějším nástrojem IaC je Terraform. Terraform převezme definice, které napíšete, v čitelném jazyce zvaném HCL (HashiCorp Configuration Language — konfigurační jazyk Terraformu), přeloží je do rozhraní API poskytovatele cloudu (AWS, Azure, GCP) a vytvoří prostředky. AI ​​zná velmi dobře HCL a rychle vytváří složité bloky. Ale v IaC je cena za chybu vysoká: jedna špatná definice může zničit celou produkční databázi. Proto zlatým pravidlem v Terraformu je vidět každou změnu pomocí ‚plánu‘ před jejím provedením.

Runtime Terraformu

Terraform pracuje se třemi základními příkazy – jejich znalost je nezbytným předpokladem pro ovládání výstupu AI:

  • `terraform init`: Spustí projekt, stáhne potřebné pluginy poskytovatele.
  • `terraform plan`: Porovnává aktuální situaci s požadovanou situací a ukazuje, co přidat, co změnit, co odstranit. Nic neimplementuje. Je to nejkritičtější bezpečnostní krok.
  • `terraform apply`: Ve skutečnosti aplikuje plán, vytváří/modifikuje zdroje.

Kromě toho jsou důležité dva koncepty. Stav (soubor stavu): Toto je soubor, kde Terraform uchovává aktuální stav zdrojů, které spravuje; Obvykle je uložen ve vzdáleném a uzamčeném skladu, aby jej dva lidé nemohli změnit nebo zničit současně. Modul: Opakovaně použitelný konfigurační balíček; V mnoha projektech můžete například použít modul „nastavení sítě“.

Tip: Nejnebezpečnějším znakem ve výstupu Terraform je zničit nebo -/+ (nahradit) čáry ve výstupu plánu. To znamená, že zdroj bude smazán. Pokud v plánu uvidíte neočekávané zničení, nikdy nepoužívejte, nejprve pochopte, proč se objevilo.

Krok za krokem: Psaní IaC pomocí AI

  1. Ujasněte si požadovanou infrastrukturu. Buďte konkrétní jako „jeden VPC, dvě podsítě, jedna bezpečnostní skupina a jedna t3.micro EC2 na eu-central-1“.
  2. Zadejte poskytovatele a verzi. Jaký cloud, který Terraform a verzi poskytovatele? Pokud neurčíte verzi, AI může vrátit zastaralou/nekompatibilní syntaxi.
  3. Nechte vypracovat návrh HCL. Vyžádejte si také proměnné a výstupy.
  4. Vyjměte Tajemství. Hodnoty, jako jsou hesla a klíče, by měly jít do proměnné a tajného trezoru, nikoli do kódu.
  5. Spusťte `init` + `plan`. Přečtěte si výstup plánu řádek po řádku; Zkontrolujte, zda nedošlo k neočekávaným smazáním.
  6. Začněte v malém, implementujte postupně. Nejprve jej použijte v izolovaném testovacím účtu/prostředí.

Bezpečnost: Rizika specifická pro IaC

IaC je stejně riskantní jako mocný. Tři kritické body:

  1. Ve státní složce je tajemství. Stav Terraform někdy uchovává citlivé hodnoty, jako jsou hesla databáze, v prostém textu. Nikdy nevkládejte stát do veřejného úložiště; Použijte šifrovaný vzdálený backend s omezeným přístupem.
  2. Nevkládejte tajné klíče do HCL. Řádky jako password="prod123" se trvale zapisují do historie Git. Místo toho použijte proměnnou a zadejte hodnotu za běhu z proměnné prostředí (TF_VAR_...) nebo tajného trezoru.
  3. Velmi široké povolení IAM. Umělá inteligence někdy vytváří bloky jako Action: "*" (povolit vše), aby "to fungovalo". Toto je zranitelnost; zúžit povolení na nezbytné minimum.
Upozornění: Jakmile tajemství vstoupí do historie Git, zůstane v minulosti a může být ohroženo, i když soubor smažete. Pokud se zavážete omylem, okamžitě zrušte a otočte tajenku; Pouhé smazání nestačí.

Tabulka rizikových plánů značek

Výtisk plánu

Význam

co dělat

+ vytvořit

Bude přidán nový zdroj

Obecně bezpečné, přesto recenze

~ aktualizace na místě

Zdroj se na místě změní

Ověřte dopad (dojde k výpadku?)

-/+ vyměnit

Bude smazáno a znovu vytvořeno

POZOR: Může dojít ke ztrátě dat

- zničit

Zdroj bude zničen

STOP: nikdy nepoužívejte, pokud to nečekáte

tři mini pouzdra

Případ 1 – 2 dny práce za 3 hodiny. Jeden tým se chystal napsat Terraform, aby nastavil nové testovací prostředí (VPC, podsítě, databáze RDS, ECS cluster), ale právě se přesunul do HCL. Popsali architekturu a verze AI a vytvořili modulární plán. Ověřili každý modul s plánem a zprovoznili jej za 3 hodiny; Trvalo by jim to dva dny ručního pokusu a omylu.

Případ 2 – plán byl vymazán. Inženýr provedl plán bez použití aktualizačního kódu generovaného umělou inteligencí. Výstup obsahoval -/+ nahradit pro produkční databázi – AI se pokusila nahradit nenahraditelné pole, což znamenalo smazání a opětovné vytvoření databáze. Technik zastavil aplikaci a změnil změnu na bezpečnou metodu. Zvyk plánovat zabránil katastrofě.

Případ 3 – pohřbený tajný únik. Junior YZ vydal db_password = "S3cret!" Zavázal čáru tak, jak je, a posunul ji. Chycen při kontrole kódu; Heslo bylo okamžitě zrušeno a změněno, hodnota byla přesunuta do proměnné a napájena z tajného trezoru. Ponaučení: V HCL nikdy nejsou tajemství prostého textu.

Čtyři kopírovatelné šablony

1) Generování návrhu infrastruktury:

Napište následující infrastrukturu na [CLOUD: AWS] s Terraformem (verze ~> 1.7): [SOURCE LIST]. Oblast [X]. Pravidla:- Udělejte ze všech citlivých hodnot proměnné, nevkládejte je do HCL.- Opravte verzi poskytovatele (required_providers).- Minimalizujte oprávnění IAM, nepoužívejte "*".- Vraťte [X, Y] jako výstup. Poskytujte kód modulárně a s vysvětlením.

2) Interpretace výstupu plánu:

Níže analyzujte výstup „plánu terraform“. Uveďte: (1) jaké zdroje byly přidány/změněny/SMAŽENY, (2) řádky, u nichž hrozí ztráta nebo přerušení dat, (3) 3 otázky, které bych si měl položit před podáním žádosti.Plán: [VÝSTUP]

3) Prozkoumejte stávající HCL z hlediska bezpečnosti:

Zkontrolujte zabezpečení následujícího kódu Terraform: vložené tajemství, příliš široké oprávnění IAM, pravidlo otevřené sítě (0.0.0.0/0), nešifrované úložiště? Napište každý nález v pořadí důležitosti a opravy. Kód: [HCL]

4) Převeďte opakující se kód na modul:

Převeďte následující opakující se kód Terraform na opakovaně použitelný modul: jaké hodnoty by měly být proměnné, jaké by mělo být rozhraní modulu? Ukažte také příklad použití. Kód: [HCL]

Slabá výzva / Silná výzva

Slabé: "Vytvořte databázi pomocí Terraform."

Výsledek: není jasné, který cloud, který engine, která verze, šifrované nebo ne; Díky starší syntaxi může AI poskytnout veřejně dostupný příklad, který vloží heslo do kódu.

Strong: "Vytvořte instanci RDS PostgreSQL 15 na AWS s Terraformem ~> 1.7. Vytvořte proměnnou hesla, nevkládejte ji do kódu. Úložiště je šifrované, přístupné pouze ze soukromé podsítě, nikoli veřejné. Opravte verzi poskytovatele. Vraťte koncový bod jako výstup."

Rozdíl: druhá výzva uvádí engine, verzi, šifrování, omezení sítě a tajné pravidlo – výstup je bezpečný a blízko k prod.

Časté chyby

  • "Přihlásit se" bez vytvoření "plánu". Nejdražší chyba v IaC; vždy nejprve plánujte.
  • Tajemství vkládání do HCL. Vytváří trvalý únik do historie Git.
  • Stát skladování nejistý. Nešifrovaný, odemčený veřejný stát je katastrofa.
  • Verze se neopravuje. Použití poskytovatele bez určení verze povede v budoucnu k náhlým selháním.
  • *`Akce: Široké oprávnění, například """.** Porušuje zásadu nejmenšího oprávnění.
  • Ignorování neočekávaného „zničit“. Použití odstraňovacích řádků v plánu bez dotazů.

V souhrnu

IaC mění infrastrukturu na opakovatelný, verzovatelný a auditovatelný kód; Nejběžnějším nástrojem je Terraform. Umělá inteligence rychle vytváří útržky HCL, ale musíte poskytnout verzi, podrobnosti specifické pro cloud a pravidla zabezpečení. Neomylné pravidlo v Terraformu: vidět každou změnu pomocí plánu, dotazovat se na neočekávaná smazání, udržovat tajemství daleko od kódu a udržovat stav v bezpečí. Řádky zničení a nahrazení ve výstupu plánu jsou místa, která je třeba číst nejpečlivěji.

Aplikační úkol

Nechte AI vygenerovat malou infrastrukturu (např. úložiště a zásady přístupu) pomocí výše uvedené šablony „Vygenerovat náčrt infrastruktury“. Poté: (1) nechte šablonu „prověřování“ zkontrolovat, zda v kódu nejsou vložená tajná nebo * oprávnění; (2) je-li to možné, spusťte init + plán na testovacím účtu a přečtěte si výstup plánu pomocí šablony „interpretace plánu“; (3) poznamenejte si všechna neočekávaná smazání/změny.

kontrolní seznam

  • [ ] Do výzvy jsem přidal cloud, verzi Terraform/poskytovatele a šifrování/síťová omezení.
  • [ ] V kódu není žádné tajemství prostého textu; proměnné hodnoty přesnosti.
  • [ ] Zúžil jsem IAM/oprávnění na minimální oprávnění, * nepoužil jsem to.
  • [ ] Před aplikací jsem spustil plán a četl výstup řádek po řádku.
  • [ ] Ověřil jsem, že v plánu není žádné neočekávané zničení/náhrada.
  • [ ] Jsem si jistý, že stav je uchováván v zašifrovaném, uzamčeném a omezeném backendu.