Njësia 3 / 11

Menaxhimi i Infrastrukturës si Kod: Inteligjenca Artificiale me Terraform dhe IaC

Fitimet:

  • Aftësia për të kuptuar konceptin IaC dhe ciklin e punës së Terraform (fillimi, plani, aplikimi, shteti, moduli) dhe që inteligjenca artificiale të prodhojë drafte të sigurta HCL
  • Aftësia për të kontrolluar çdo ndryshim me një plan përpara se të aplikoni dhe kapni linjat e papritura të shkatërrimit/zëvendësimit
  • Aftësia për të zbatuar parimet e mbajtjes së sekreteve jashtë kodit, mbajtjes së shtetit në mënyrë të sigurt dhe minimizimit të lejeve të IAM

Në të kaluarën, vendosja e një serveri ishte një çështje e klikimit përmes një paneli cloud: krijoni një makinë virtuale, konfiguroni rrjetin, shtoni rregullin e sigurisë. Kjo metodë ishte e ngadaltë, e prirur ndaj gabimeve dhe e papërsëritshme - ishte pothuajse e pamundur të konfigurohej i njëjti mjedis për herë të dytë. Sot, infrastruktura menaxhohet si kod. IaC (Infrastruktura si kod) është një qasje për të përshkruar burimet e resë kompjuterike si serverët, rrjetet dhe bazat e të dhënave në skedarë teksti dhe jo në mënyrë manuale. Këta skedarë qëndrojnë në kontrollin e versionit (Git); Ju mund të shihni se kush ndryshoi çfarë, kur dhe çfarë; Mund të konfiguroni të njëjtën infrastrukturë shumë herë, saktësisht në të njëjtën mënyrë, me një komandë.

Mjeti më i zakonshëm IaC është Terraform. Terraform merr përkufizimet që shkruani në një gjuhë të lexueshme të quajtur HCL (HashiCorp Configuration Language — gjuha e konfigurimit të Terraform), i përkthen ato në API-në e ofruesit të cloud (AWS, Azure, GCP) dhe krijon burimet. AI e njeh shumë mirë HCL dhe prodhon blloqe komplekse shpejt. Por në IaC, kostoja e një gabimi është e lartë: një përkufizim i gabuar mund të fshijë të gjithë bazën e të dhënave të prodhimit. Kjo është arsyeja pse rregulli i artë në Terraform është të shohësh çdo ndryshim me një 'plan' përpara se ta zbatosh atë.

Koha e ekzekutimit të Terraform

Terraform funksionon me tre komanda bazë – të dish se këto është një parakusht për të kontrolluar daljen e AI:

  • `terraform init`: Fillon projektin, shkarkon shtojcat e nevojshme të ofruesit.
  • `Plani Terraform`: Krahason situatën aktuale me situatën e dëshiruar dhe tregon çfarë të shtoni, çfarë të ndryshoni, çfarë të fshini. Nuk zbaton asgjë. Është hapi më kritik i sigurisë.
  • `terraform apply`: Në fakt zbaton planin, duke krijuar/modifikuar burime.

Për më tepër, dy koncepte janë jetike. Gjendja (skedari i gjendjes): Ky është skedari ku Terraform ruan gjendjen aktuale të burimeve që menaxhon; Zakonisht ruhet në një magazinë të largët dhe të mbyllur në mënyrë që dy persona të mos mund ta ndryshojnë ose ta shkatërrojnë në të njëjtën kohë. Moduli: Paketa e konfigurimit e ripërdorshme; Për shembull, ju mund të përdorni modulin "konfiguroni një rrjet" në shumë projekte.

Këshillë: Shenja më e rrezikshme në një dalje Terraform është shkatërroni ose -/+ (zëvendësoni) linjat në daljen e planit. Këto do të thotë se burimi do të fshihet. Nëse shihni një shkatërrim të papritur në një plan, mos aplikoni kurrë, së pari kuptoni pse u shfaq.

Hap pas hapi: Shkrimi i IaC me AI

  1. Sqaroni infrastrukturën e dëshiruar. Bëhu konkret si "një VPC, dy nënrrjeta, një grup sigurie dhe një t3.micro EC2 në eu-central-1".
  2. Specifikoni ofruesin dhe versionin. Cila re, cili version Terraform dhe ofrues? Nëse nuk specifikoni një version, AI mund të kthejë sintaksë të vjetëruar/të papajtueshme.
  3. Prodhoni draftin HCL. Kërkoni gjithashtu variabla dhe rezultate.
  4. Nxirre sekretin. Vlerat të tilla si fjalëkalimet dhe çelësat duhet të shkojnë te variabla dhe kasaforta sekrete, jo te kodi.
  5. Ekzekutoni "init" + "plan". Lexoni rezultatin e planit rresht pas rreshti; Kontrolloni për fshirje të papritura.
  6. Filloni pak, zbatoni gradualisht. Aplikojeni fillimisht në një llogari/mjedis të izoluar testimi.

Siguria: Rreziqet specifike të IaC

IaC është sa i rrezikshëm aq edhe i fuqishëm. Tre pika kritike:

  1. Në dosjen e shtetit ka një sekret. Gjendja Terraform ndonjëherë mban vlera të ndjeshme, të tilla si fjalëkalimet e bazës së të dhënave, në tekst të thjeshtë. Asnjëherë mos e vendosni Shtetin në një depo publike; Përdorni një backend në distancë të koduar, me akses të kufizuar.
  2. Mos i futni sekretet në HCL. Linjat si password="prod123" shkruhen përgjithmonë në historikun e Git. Në vend të kësaj, përdorni një ndryshore dhe jepni vlerën në kohën e ekzekutimit nga ndryshorja e mjedisit (TF_VAR_...) ose kasaforta sekrete.
  3. Leje shumë e gjerë IAM. Inteligjenca artificiale ndonjëherë prodhon blloqe si Veprimi: "*" (lejo gjithçka) që "ta bëjë atë të funksionojë". Kjo është një dobësi; ngushtoni lejen në minimumin e kërkuar.
Kujdes: Pasi një sekret hyn në historinë e Git, ai mbetet në të kaluarën dhe mund të rrezikohet, edhe nëse e fshini skedarin. Nëse kryeni gabimisht, anuloni menjëherë dhe rrotulloni sekretin; Nuk mjafton vetëm fshirja.

Tabela e shenjave të planit të rrezikshëm

Plani i printimit

Kuptimi

çfarë të bëni

+krijoj

Burimi i ri do të shtohet

Në përgjithësi i sigurt, megjithatë rishikoni

~ përditësoj në vend

Burimi do të ndryshojë në vend

Verifiko ndikimin (a do të ketë ndërprerje?)

-/+ zëvendëso

Do të fshihet dhe rikrijohet

KUJDES: mund të ndodhë humbja e të dhënave

- shkatërrojë

Burimi do të shkatërrohet

STOP: mos aplikoni kurrë nëse nuk e prisni

tre mini kuti

Rasti 1 - 2 ditë punë në 3 orë. Një ekip do të shkruante Terraform për të krijuar një mjedis të ri testimi (VPC, nënrrjeta, bazën e të dhënave RDS, grupi ECS) por ata sapo kishin kaluar në HCL. Ata përshkruan arkitekturën dhe versionet e AI dhe prodhuan një plan modular. Ata verifikuan çdo modul me planin dhe e vunë në punë në 3 orë; Do t'u duheshin dy ditë provë manuale dhe gabim.

Rasti 2 - plani u fshi. Një inxhinier drejtoi një plan pa aplikuar një kod përditësimi të krijuar nga AI. Prodhimi përmbante -/+ zëvendësim për bazën e të dhënave të prodhimit - AI u përpoq të zëvendësonte një fushë të pazëvendësueshme, që nënkuptonte fshirjen dhe rikrijimin e bazës së të dhënave. Inxhinieri ndaloi aplikimin dhe ndryshoi ndryshimin në metodën e sigurt. Zakoni i planifikimit parandaloi një fatkeqësi.

Rasti 3 - rrjedhje sekrete e groposur. Një i ri, YZ lëshoi ​​db_password = "S3cret!" Ai e bëri vijën ashtu siç është dhe e shtyu. Kapur në shqyrtimin e kodit; Fjalëkalimi u anulua menjëherë dhe u ndryshua, vlera u zhvendos në një variabël dhe u fut nga kasaforta sekrete. Mësimi: Nuk ka kurrë sekrete të tekstit të thjeshtë në HCL.

Katër shabllone të kopjueshëm

1) Krijimi i draftit të infrastrukturës:

Shkruani infrastrukturën e mëposhtme në [CLOUD: AWS] me Terraform (versioni ~> 1.7): [LISTA BURIMORE]. Rajoni [X]. Rregullat:- Bëjini të gjitha vlerat e ndjeshme të ndryshueshme, mos i futni në HCL.- Rregulloni versionin e ofruesit (required_providers).- Minimizo lejet e IAM, mos përdorni "*".- Kthejeni [X, Y] si dalje. Jepni kodin në mënyrë modulare dhe me shpjegime.

2) Interpretimi i rezultatit të planit:

Analizoni rezultatin e 'planit të tokës' më poshtë. Më listoni:(1) cilat burime u shtuan/ndryshuan/FSHIHEN, (2) rreshta në rrezik humbjeje ose ndërprerjeje të të dhënave, (3) 3 pyetje që duhet të bëj përpara se të aplikoj. Plani: [OUTPUT]

3) Shqyrtoni HCL ekzistuese për sigurinë:

Kontrolloni kodin e mëposhtëm Terraform për sigurinë: sekret i integruar, leje tepër e gjerë IAM, rregull i hapur i rrjetit (0.0.0.0/0), ruajtje e pakriptuar? Shkruani çdo gjetje sipas rëndësisë dhe korrigjimit. Kodi: [HCL]

4) Konvertoni kodin e përsëritur në modul:

Konvertoni kodin e mëposhtëm përsëritës Terraform në një modul të ripërdorshëm: cilat vlera duhet të jenë variablat, cila duhet të jetë ndërfaqja e modulit? Trego gjithashtu shembullin e përdorimit. Kodi: [HCL]

Prompt i dobët / Prompt i fortë

E dobët: "Krijoni një bazë të dhënash me Terraform."

Rezultati: e paqartë cila re, cili motor, cili version, i koduar apo jo; Me sintaksën e trashëguar, AI mund të sigurojë një shembull të disponueshëm publikisht që fut fjalëkalimin në kod.

Strong: "Krijoni një shembull RDS PostgreSQL 15 në AWS me Terraform ~> 1.7. Bëni variablin e fjalëkalimit, mos e futni në kod. Hapësira ruajtëse është e koduar, e aksesueshme vetëm nga nënrrjeta private, jo publike. Rregulloni versionin e ofruesit. Kthejeni pikën përfundimtare si dalje."

Dallimi: kërkesa e dytë jep motorin, versionin, enkriptimin, kufizimin e rrjetit dhe rregullin sekret - dalja është e sigurt dhe afër prodhimit.

Gabimet e zakonshme

  • Për të "aplikuar" pa bërë një "plan". Gabimi më i shtrenjtë në IaC; planifikoni gjithmonë së pari.
  • Përfshirja e sekretit në HCL. Krijon rrjedhje të përhershme në historinë e Git.
  • Ruajtja e shtetit të pasigurt. Një gjendje publike e pakriptuar, e zhbllokuar është një fatkeqësi.
  • Nuk po rregullohet versioni. Përdorimi i ofruesit pa specifikuar një version do të çojë në dështime të papritura në të ardhmen.
  • *`Veprim: Leje e gjerë si ""`.** Shkel parimin e privilegjit më të vogël.
  • Injorimi i "shkatërrimit" të papritur. Zbatimi i linjave të fshirjes në Plan pa pyetje.

Në përmbledhje

IaC e kthen infrastrukturën në kod të përsëritshëm, të versionueshëm dhe të auditueshëm; Mjeti më i zakonshëm është Terraform. AI prodhon shpejt cungët HCL, por ju duhet të jepni versionin, detajet specifike të cloud dhe rregullat e sigurisë. Rregulli i pagabueshëm në Terraform: për të parë çdo ndryshim me një plan, për të kërkuar fshirje të papritura, për të mbajtur sekretet larg kodit dhe për të mbajtur shtetin të sigurt. Shkatërrimi dhe zëvendësimi i rreshtave në një dalje plani janë vendet që duhen lexuar më me kujdes.

Detyra e aplikimit

Lëreni AI të krijojë një infrastrukturë të vogël (p.sh. një kovë ruajtjeje dhe një politikë aksesi) duke përdorur shabllonin "Krijoni skicën e infrastrukturës" më sipër. Pastaj: (1) kontrolloni shabllonin "vetting" për leje sekrete ose * të ngulitura në kod; (2) nëse është e mundur, ekzekutoni init + plan në një llogari testimi dhe lexoni daljen e planit me shabllonin "interpretimi i planit"; (3) vini re çdo fshirje/ndryshim të papritur.

listë kontrolli

  • [ ] Unë shtova renë kompjuterike, versionin Terraform/ofruesi dhe kufizimet e enkriptimit/rrjetit në kërkesën time.
  • [ ] Nuk ka asnjë sekret teksti të thjeshtë në kod; vlerat e saktësisë të ndryshueshme.
  • [ ] I ngushtova IAM/lejet në leje minimale, * Nuk e përdora.
  • [ ] Kam zbatuar planin përpara se të aplikoj dhe lexova linjë pas rreshti daljen.
  • [ ] Kam verifikuar që nuk ka asnjë shkatërrim/zëvendësim të papritur në Plan.
  • [ ] Jam i sigurt se gjendja mbahet në një backend të koduar, të kyçur dhe të kufizuar.