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
- 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".
- 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.
- Prodhoni draftin HCL. Kërkoni gjithashtu variabla dhe rezultate.
- Nxirre sekretin. Vlerat të tilla si fjalëkalimet dhe çelësat duhet të shkojnë te variabla dhe kasaforta sekrete, jo te kodi.
- Ekzekutoni "init" + "plan". Lexoni rezultatin e planit rresht pas rreshti; Kontrolloni për fshirje të papritura.
- 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:
- 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.
- 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.
- 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.