Njësia 6 / 11

Menaxhimi i Infrastrukturës si Kod (IaC): Terraform, Ansible dhe Plan Control

Fitimet:

  • Aftësia për të prodhuar kodin IaC (Terraform, Ansible) me inteligjencë artificiale me lejet më të ngushta dhe parazgjedhjet e sigurta dhe për të kuptuar qasjen deklarative
  • Aftësia për të parandaluar humbjen e të dhënave duke lexuar dhe kapur linjat e fshirjes dhe zëvendësimit të detyruar përpara se të aplikoni daljen e planit/kontrollit
  • Aftësia për të parandaluar rrjedhjet sekrete duke e mbajtur skedarin e shtetit të koduar, të kyçur, në pjesën e pasme të largët dhe duke i ndarë ndryshimet në hapa të vegjël e të kthyeshëm

Menaxhimi i Infrastrukturës si Kod (IaC): Terraform, Ansible dhe Plan Control me AI

Në të kaluarën, vendosja e një serveri bëhej me klikime manuale, komanda dhe shënime personale; Rezultati ishin serverë të papërsëritshëm "flokë dëbore" që askush nuk dinte saktësisht se si t'i konfiguronte. Infrastruktura si kod (IaC) është qasja që i jep fund këtij kaosi: serverët, rrjetet, rregullat e sigurisë nuk përcaktohen me dorë, por nga skedarët e tekstit të versionueshëm (kodi). Kur ekzekutoni këtë kod, infrastruktura konfigurohet saktësisht siç e keni shkruar - e njëjta, e dokumentuar dhe e përsëritshme çdo herë. Mjetet më të zakonshme janë Terraform dhe CloudFormation për infrastrukturën cloud dhe Ansible për konfigurimin e serverit. Këtu AI është shumë i aftë në shkrimin, shpjegimin dhe rishikimin e këtij kodi IaC. Por fuqia e IaC është gjithashtu rreziku i saj: një linjë e gabuar mund të fshijë një infrastrukturë të tërë; kështu që AI shkruan kodin, ju lexoni "planin", miratoni atë dhe ekzekutoni atë.

Në këtë njësi do të diskutohet për qasjen deklarative, plani/aplikoni dallimin, sigurinë e shtetit dhe idempotencën; Ju do të mësoni gjenerimin e IaC me AI dhe aftësinë më kritike, "kontrollin e planit".

Të menduarit në mënyrë deklarative: "po sikur", jo "si të bëjmë"

Shumica e mjeteve IaC janë deklarative: ju përshkruani gjendjen përfundimtare të sistemit ("le të themi 3 serverë ueb, 1 balancues i ngarkesës"), mjeti vetë llogarit se si të arrihet në atë gjendje. Kjo është e ndryshme nga shkrimi i një skenari ("bëje këtë, pastaj bëj atë" hap pas hapi). Avantazhi i madh i qasjes deklarative është idempotenca: edhe nëse e përdorni kodin dhjetë herë, rezultati është i njëjtë, sepse mjeti kontrollon nëse ekziston tashmë gjendja e dëshiruar, dhe nëse ekziston, nuk e prek atë. Mbani mend këtë ndryshim kur shkruani IaC në AI: ju e bëni atë të thotë "le të gjendjen e infrastrukturës", jo "të ekzekutojë këto komanda".

Planifikoni/aplikoni: kangjella më e rëndësishme e sigurisë

Tipari shpëtimtar i IaC është hapi i planit. Në Terraform, plani terraform, në Ansible, modaliteti --check prodhon një pamje paraprake të "çfarë do të ndryshojë nëse e aplikoj" përpara se të ekzekutohet kodi: "Do të shtohen 2 burime, 1 do të ndryshojë, 0 do të fshihet". Kjo është mënyra e vetme për të krahasuar qëllimin tuaj me realitetin përpara zbatimit. Rregulli kritik: mos aplikoni kurrë pa lexuar planin. Kërkoni veçanërisht për linjat "shkatërrojë"; Nëse shihni "12 do të fshihet" në vend të "1 do të ndryshohet" për shkak të një gabimi shkrimi, plani ju ka shpëtuar nga fatkeqësia. Pas printimit të kodit në AI, thuaj "ekzamino daljen e planit rresht pas rreshti me mua, shëno çdo rresht që përmban fshirje/rikrijim".

Kujdes: Disa ndryshime në Terraform "shkatërrojnë dhe rikrijojnë" një burim në vend që të "përditësohen në vend". Kjo do të thotë humbje e të dhënave për një bazë të dhënash. Injorimi i -/+ ose "forcon zëvendësimin" në daljen e planit është një nga gabimet më të shtrenjta.

Dosja shtetërore: regjistrimi i sekreteve dhe i së vërtetës

Mjetet si Terraform mbajnë gjendjen aktuale të infrastrukturës që ata menaxhojnë në një skedar shtetëror. Ky skedar është kritik për dy arsye. Së pari, mund të përmbajë sekrete (fjalëkalimet e bazës së të dhënave, çelësat mund të bien në gjendje në tekst të thjeshtë); Prandaj, mos e ngjisni kurrë gjendjen në një depo publike ose AI, mbajeni atë në një backend të largët të koduar dhe të kufizuar me akses. Së dyti, nëse shteti korruptohet ose humbet, automjeti humbet lidhjen ndërmjet infrastrukturës reale dhe infrastrukturës së imagjinuar; Prandaj, një kopje rezervë e shtetit dhe një mekanizëm bllokimi (bllokim që parandalon dy persona ta thyejnë atë në të njëjtën kohë) janë thelbësore.

Hap pas hapi: Siguroni IaC me AI

  1. Synimi dhe ofruesi i shtetit. "2 serverë në AWS, me Terraform, në këtë rajon, këtë madhësi dhe një grup sigurie." Nëse cloud, mjeti dhe versioni janë të qarta, AI prodhon sintaksë të saktë.
  2. Kërko standardet e sigurisë. "Hapni grupin e sigurisë, aktivizoni enkriptimin, nxjerrni sekretet në variabël, jepni akses publik." AI mund të gjenerojë mostra të lira si parazgjedhje.
  3. Lexoni dhe kuptoni kodin. Kuptoni çdo burim, çdo leje, rresht pas rreshti. Mos aplikoni një leje që nuk e kuptoni.
  4. Merrni një plan dhe kontrolloni atë. Ekzekutoni planin/--kontrolloni, ekzaminoni daljen me AI, shënoni linjat e fshirjes dhe rindërtoni.
  5. Aplikoni të vogla dhe të kthyeshme. Zbatoni një ndryshim të madh në copa të vogla, jo të gjitha menjëherë. Dije rrugën e kthimit në çdo hap.
  6. Mbroni shtetin. Përdorni bazën dhe kyçjen në distancë, të koduar; Asnjëherë gjendja e rrjedhjes.

tre mini kuti

Rasti 1 - Plani rikuperoi një bazë të dhënash. Një inxhinier donte të rriste madhësinë e një baze të dhënash me kodin Terraform që prodhoi me AI. Ndërsa ai priste "1 për të ndryshuar" në daljen e planit terraform, ai pa "1 për të shkatërruar, 1 për të shtuar" - parametri që ai zgjodhi po shkaktonte një rindërtim, jo ​​një përditësim në vend, që do të thotë se të gjitha të dhënat do të fshiheshin. Kontrolli i planit ndaloi humbjen e pakthyeshme të të dhënave përpara se të zbatohej.

Rasti 2 - Kthimi nga parazgjedhja e lirshme. Një ekip i kërkoi AI një kod firewall. Për të ekzekutuar shembullin, AI krijoi një rregull të thjeshtë prej 0.0.0.0/0, që do të thotë "publik në internet". Inxhinieri e vuri re këtë gjatë leximit të kodit dhe ngushtoi aksesin vetëm në intervalin IP të ndërmarrjes. Nëse do të zbatohej pa u audituar, baza e të dhënave do të ishte e hapur për të gjithë internetin.

Rasti 3 — Parandalimi i rrjedhjes së shtetit. Një anëtar i ri ishte gati të ngjiste skedarin terraform.tfstate të paprekur në një mjet publik për të zgjidhur një problem Terraform. Inxhinieri i lartë ndaloi: shteti përmbante një fjalëkalim të thjeshtë të bazës së të dhënave. Në vend të kësaj, një përmbledhje e deshifruar që përshkruan problemin u nda dhe gjendja u zhvendos në pjesën e pasme të koduar në distancë.

Katër shabllone të kopjueshëm

1) Gjenerimi i burimeve IaC (parazgjedhje e sigurt):

Roli juaj: inxhinier i vjetër i infrastrukturës cloud. [Reja, p.sh. AWS] për [mjet, p.sh. Terraform] gjeneron kod. Qëllimi: [qëllimi]. Rregullat e sigurisë: qasja publike (0.0.0.0/0) HAPUR;filloni me lejen më të ngushtë; aktivizoni enkriptimin; nxirrni sekretet në variabla, mos i futni ato në kod; Kontrolloni cilësimet që mund të çojnë në fshirje/rikrijim. Shpjegoni çdo burim me një koment të shkurtër.

2) Planifikoni auditimin e rezultateve:

Më poshtë është një dalje [Plani Terraform / Kontrolli i Ansible]. Më tregoni: (1) sa burime do të shtohen/ndryshohen/fshihen, (2) shënoni gjithashtu linjat "shkatërrojë" ose "detyron zëvendësimin" që paraqesin rrezik për humbjen e të dhënave, (3) listoni çdo ndryshim që duket i papritur ose i rrezikshëm. Prodhimi: [plani]

3) Rishikimi i sigurisë së kodit IaC:

Shqyrtoni kodin e mëposhtëm IaC për sigurinë: (1) a ka akses/leje tepër të gjera, (2) është çaktivizuar enkriptimi, (3) a ka sekrete të ngulitura në kod, (4) a ka burime të disponueshme publikisht? Sugjeroni korrigjim për çdo gjetje. Kodi: [kodi i maskuar]

4) Ndani ndryshimin në pjesë të sigurta:

Nuk dua ta zbatoj këtë ndryshim të madh të infrastrukturës [shpjegim] menjëherë. Ndani atë në hapa të vegjël, të pavarur, në të cilët është e lehtë të ktheheni. Për çdo hap: çfarë ndryshimesh, çfarë duhet t'i kushtoj vëmendje në plan, si ta zhbëj nëse ka probleme?

Prompt i dobët / Prompt i fortë

Njoftim i dobët:

Shkruani kodin Terraform që krijon një server në AWS.

Rajoni, madhësia, siguria, rrjeti, kriptimi janë të paqarta. Inteligjenca artificiale prodhon parazgjedhjet më të lira, më të qarta në punë – nëse vihet në prodhim, do të ishte një cenueshmëri.

Njoftim i fuqishëm:

Roli juaj: inxhinier i vjetër i infrastrukturës cloud. Përcaktoni një server në internet me Terraform në AWS eu-central-1: t3.small, vetëm nga diapazoni i IP-së së korporatës (do ta jap me një variabël), porti 443 është i hapur, disku është i koduar, nuk ka akses publik, etiketat janë të detyrueshme. Sekretet i zbulohen ndryshores. Pas kodit: Përpara se ta zbatoni, më tregoni 3 llojet e rreshtave që duhet t'u kushtoj vëmendje në plan dhe shpjegoni rrugën e kthimit.

Skena

Rreziku

kangjella sigurie

shkrimi i kodit

Parazgjedhje e lirë (publike)

Leja më e ngushtë + lexo

plan/kontroll

Fshirja pa e kuptuar

Planifikoni inspektimin, shkatërroni shënjimin

Aplikoni

Ndryshim i madh një herë

Hapat e vegjël, të kthyeshëm

administrata shtetërore

Rrjedhje lustër, shtrembërim

Backend i koduar në distancë + kyçje

Gabimet e zakonshme

  • Aplikimi pa lexuar planin. Plani parashikon fshirje dhe rindërtim; Nëse anashkalohet, humbja e të dhënave është e pashmangshme.
  • Duke mos vënë re parazgjedhjen e lirshme. Instancat e AI shpesh prodhojnë 0.0.0.0/0; Nëse zhvendoset në prodhim, do të thotë me burim të hapur për të gjithë internetin.
  • Shteti që rrjedh. Eksportimi i skedarit shtetëror në AI ose depo e hapur ekspozon sekretet e tekstit të thjeshtë.
  • Përfshirja e sekreteve në kod. Shkrimi i fjalëkalimit në kodin IaC është një rrjedhje e vazhdueshme në historinë e versionit të kodit.
  • Gabimi i rindërtimit me një përditësim. Injorimi i linjës së zëvendësimit të forcave do të rezultojë në humbjen e të dhënave në bazat e të dhënave.
Këshillë: Edhe kur i jepni rezultatet e planit një AI për ta shqyrtuar, bazoni vendimin përfundimtar në njohuritë tuaja, jo në tekstin e planit. AI përmbledh planin dhe shënon linjat e rrezikshme; por përgjigjja e pyetjes "a është e pranueshme kjo fshirje" varet nga konteksti i biznesit tuaj.

Në përmbledhje

IaC sjell përsëritshmëri dhe dokumentacion duke menaxhuar infrastrukturën me kod të versionueshëm dhe jo me klikime manuale. AI është një partner i fuqishëm në shkrimin e këtij kodi, përshkrimin e tij dhe rishikimin e tij për siguri. Por fuqia e IaC është rreziku i saj: një linjë mund të fshijë të gjithë infrastrukturën. Mendoni deklarativ, filloni me lejen më të ngushtë, rregulloni parazgjedhjet e lira, mbani sekretet jashtë kodit dhe gjendjes. Mbrojtësi më i rëndësishëm është hapi i planit/kontrollit: mos ekzekutoni kurrë pa lexuar linjat e fshirjes dhe rindërtimit. Mbajeni gjendjen të koduar, të kyçur dhe në distancë. Kodi është i AI, vendimi është i juaji.

Detyra e aplikimit

Zgjidhni një objektiv të vogël të infrastrukturës (për shembull, një makinë virtuale e vetme dhe një rregull sigurie). Me shabllonin "Gjenerimi i burimeve IaC" më sipër, kërkoni nga AI një kod me parazgjedhje të sigurta. Kontrollo dy herë kodin me shabllonin "Rishikimi i sigurisë së kodit IaC" dhe përpiqu të gjesh të paktën një cilësim të lirë. Nëse është e mundur, ekzekutoni planin/--kontrolloni një llogari testimi dhe rishikoni rezultatin me shabllonin "Plani i kontrollit të daljes"; Shihni nëse ka një linjë fshirjeje ose rikrijimi. Shkruani gjetjet tuaja dhe si do ta siguroni shtetin në 6 pika.

listë kontrolli

  • [ ] A specifikova renë kompjuterike, mjetin dhe versionin në AI dhe kërkova kodin me lejet më të ngushta?
  • [ ] A e kam kontrolluar kodin për standarde të lira (0.0.0.0/0, enkriptim i mbyllur)?
  • [ ] A i kam nxjerrë sekretet e ndryshores në vend që t'i fusja në kod?
  • [ ] A e lexova daljen e planit/kontrollit dhe i shënova rreshtat e fshirjes përpara se të aplikoja?
  • [ ] A e kam vlerësuar ndikimin e humbjes së të dhënave të linjave të "zëvendësimit të forcave" / rindërtimit?
  • A nuk e mbajta skedarin e shtetit [ ] të koduar, të kyçur, në pjesën e pasme të largët dhe e zbulova atë?