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
- 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“.
- Zadejte poskytovatele a verzi. Jaký cloud, který Terraform a verzi poskytovatele? Pokud neurčíte verzi, AI může vrátit zastaralou/nekompatibilní syntaxi.
- Nechte vypracovat návrh HCL. Vyžádejte si také proměnné a výstupy.
- 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.
- 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.
- 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:
- 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.
- 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.
- 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.