Eining 3 / 11

Stjórna innviðum sem kóða: gervigreind með Terraform og IaC

Hagnaður:

  • Hæfni til að skilja IaC hugmyndina og vinnuferil Terraform (initia, plan, application, state, unit) og láta gervigreind framleiða örugg HCL drög
  • Geta til að athuga hverja breytingu með áætlun áður en sótt er um og ná óvæntum eyðileggjum/skipta út línum
  • Hæfni til að beita meginreglum um að halda leyndarmálum utan kóðans, halda ástandi á öruggan hátt og lágmarka IAM heimildir

Í fortíðinni var uppsetning netþjóns spurning um að smella í gegnum skýjaspjald: búa til sýndarvél, setja upp netið, bæta við öryggisreglunni. Þessi aðferð var hæg, viðkvæm fyrir villum og óendurtekin - það var næstum ómögulegt að setja upp sama umhverfi í annað sinn. Í dag er innviðum stjórnað sem kóða. IaC (Infrastructure as Code) er aðferð til að lýsa skýjaauðlindum eins og netþjónum, netkerfum og gagnagrunnum í textaskrám frekar en handvirkt. Þessar skrár sitja í útgáfustýringu (Git); Þú getur séð hver breytti hverju, hvenær og hvað; Þú getur sett upp sama innviði oft, á nákvæmlega sama hátt, með einni skipun.

Algengasta IaC tólið er Terraform. Terraform tekur skilgreiningarnar sem þú skrifar á læsilegu tungumáli sem kallast HCL (HashiCorp Configuration Language — Stillingartungumál Terraform), þýðir þær yfir í API skýjaveitunnar (AWS, Azure, GCP) og býr til auðlindirnar. Gervigreind þekkir HCL mjög vel og framleiðir flókna kubba fljótt. En í IaC er kostnaður við mistök hár: ein röng skilgreining getur þurrkað út heilan framleiðslugagnagrunn. Þess vegna er gullna reglan í Terraform að sjá hverja breytingu með „áætlun“ áður en hún er framkvæmd.

Afgreiðslutími Terraform

Terraform vinnur með þremur grunnskipunum - að vita að þetta er forsenda þess að stjórna gervigreind úttak:

  • `terraform init`: Byrjar verkefnið, hleður niður nauðsynlegum viðbótum fyrir veituna.
  • `terraform plan`: Ber núverandi aðstæður saman við þær aðstæður sem óskað er eftir og sýnir hverju á að bæta við, hverju á að breyta, hverju á að eyða. Framkvæmir ekki neitt. Það er mikilvægasta öryggisskrefið.
  • `terraform gilda`: Beitir í raun áætluninni, býr til/breytir tilföngum.

Að auki eru tvö hugtök mikilvæg. Ríki (ríkisskrá): Þetta er skráin þar sem Terraform heldur núverandi ástandi auðlindanna sem það stjórnar; Það er venjulega geymt í afskekktu og læstu vöruhúsi þannig að tveir menn geta ekki breytt eða eyðilagt það á sama tíma. Eining: Endurnýtanlegur stillingarpakki; Til dæmis er hægt að nota „setja upp net“ eininguna í mörgum verkefnum.

Ábending: Hættulegasta táknið í Terraform-úttakinu er eyðileggja eða -/+ (skipta út) línum í áætlunarúttakinu. Þetta þýðir að auðlindinni verður eytt. Ef þú sérð óvænta eyðileggingu í áætlun skaltu aldrei sækja um, fyrst skildu hvers vegna það birtist.

Skref fyrir skref: Að skrifa IaC með AI

  1. Skýrðu æskilega innviði. Vertu ákveðinn eins og "einn VPC, tvö undirnet, einn öryggishópur og einn t3.micro EC2 á eu-central-1".
  2. Tilgreindu veitu og útgáfu. Hvaða ský, hvaða Terraform og veituútgáfu? Ef þú tilgreinir ekki útgáfu getur gervigreind skilað gamaldags/ósamrýmanlegri setningafræði.
  3. Láttu framleiða HCL drögin. Einnig biðja um breytur og úttak.
  4. Taktu Secret út. Gildi eins og lykilorð og lyklar ættu að fara í breytu og leynihvelfingu, ekki í kóðann.
  5. Keyra `init` + `plan`. Lestu áætlun úttak línu fyrir línu; Athugaðu fyrir óvæntar eyðingar.
  6. Byrjaðu smátt, framkvæmdu smám saman. Notaðu það fyrst í einangruðum prófunarreikningi/umhverfi.

Öryggi: IaC sérstakar áhættur

IaC er jafn áhættusamt og það er öflugt. Þrjú mikilvæg atriði:

  1. Það er leyndarmál í ríkisskránni. Terraform ástand heldur stundum viðkvæmum gildum, svo sem gagnagrunnslykilorðum, í einföldum texta. Settu ríkið aldrei í opinbera geymslu; Notaðu dulkóðaðan fjarlægan bakenda með takmarkaðan aðgang.
  2. Ekki fella leyndarmál inn í HCL. Línur eins og password = "prod123" eru varanlega skrifaðar í Git sögu. Í staðinn skaltu nota breytu og gefa gildið á keyrslutíma úr umhverfisbreytunni (TF_VAR_...) eða leynilegu hvelfingu.
  3. Mjög víðtækt IAM leyfi. AI framleiðir stundum blokkir eins og Action: "*" (leyfa allt) til að "láta það virka". Þetta er varnarleysi; takmarka leyfið við það lágmark sem krafist er.
Athugið: Þegar leyndarmál er komið inn í Git-ferilinn er það áfram í fortíðinni og getur verið í hættu, jafnvel þótt þú eyðir skránni. Ef þú skuldbindur þig fyrir mistök skaltu strax hætta við og snúa leyndarmálinu; Það er ekki nóg að eyða bara.

Áhættusamur áætlun skilti borð

Áætlunarútprentun

Merking

hvað á að gera

+búa til

Nýtt úrræði verður bætt við

Almennt öruggt, endurskoðun þó

~ uppfærsla á sínum stað

Heimildin mun breytast á staðnum

Staðfestu áhrif (verður stöðvun?)

-/+ skipta út

Verður eytt og endurgert

VARÚÐ: Gagnatap getur átt sér stað

- eyðileggja

Auðlindinni verður eytt

STOP: Aldrei sækja um ef þú átt ekki von á því

þrjú smámál

Mál 1 — 2 daga vinna á 3 klst. Eitt lið ætlaði að skrifa Terraform til að setja upp nýtt prófunarumhverfi (VPC, undirnet, RDS gagnagrunn, ECS þyrping) en þeir voru nýfluttir yfir í HCL. Þeir lýstu arkitektúrnum og útgáfunum á gervigreindinni og framleiddu mátteikningu. Þeir staðfestu hverja einingu með áætluninni og höfðu það í gangi á 3 klukkustundum; Það myndi taka þá tvo daga af handvirkri prufa og villa.

Tilfelli 2 - áætlunin náði að eyða. Verkfræðingur rak áætlun án þess að beita gervigreindum uppfærslukóða. Úttakið innihélt -/+ replace fyrir framleiðslugagnagrunninn - gervigreindin reyndi að skipta um reit sem ekki var hægt að skipta út, sem þýddi að eyða og endurskapa gagnagrunninn. Verkfræðingur hætti að sækja um og breytti breytingunni í örugga aðferð. Venjan að skipuleggja kom í veg fyrir hörmung.

Mál 3 - grafinn leynilegur leki. Yngri, YZ gaf út db_password = "S3cret!" Hann framdi línuna eins og hún er og ýtti á hana. Föst í kóða endurskoðun; Lykilorðið var strax afturkallað og breytt, gildið var fært í breytu og matað úr leynihvelfingunni. Lexía: Það eru aldrei leyndarmál í texta í HCL.

Fjögur afritanleg sniðmát

1) Búa til drög að innviðum:

Skrifaðu eftirfarandi innviði á [CLOUD: AWS] með Terraform (útgáfa ~> 1.7): [SOURCE LIST]. Svæði [X]. Reglur:- Gerðu öll viðkvæm gildi breytileg, ekki fella þau inn í HCL.- Lagaðu útgáfu útgáfunnar (required_providers).- Lágmarkaðu IAM heimildir, ekki nota "*".- Skilaðu [X, Y] sem úttak. Gefðu kóða í mát og með skýringum.

2) Túlka úttak áætlunarinnar:

Greindu úttakið 'terraform plan' hér að neðan. Skráðu mig:(1) hvaða tilföngum var bætt við/breytt/EYÐU,(2) línur sem eiga á hættu að tapa gögnum eða trufla,(3) 3 spurningar sem ég ætti að spyrja áður en ég sæki um.Áætlun: [ÚTTAKA]

3) Skoðaðu núverandi HCL með tilliti til öryggis:

Athugaðu eftirfarandi Terraform kóða fyrir öryggi: innfellt leyndarmál, of víðtækt IAM leyfi, opið netkerfi (0.0.0.0/0), ódulkóðuð geymsla? Skrifaðu hverja niðurstöðu í röð eftir mikilvægi og leiðréttingu. Kóði: [HCL]

4) Umbreyttu endurteknum kóða í eininguna:

Umbreyttu eftirfarandi endurteknu Terraform kóða í endurnýtanlega einingu: hvaða gildi ættu að vera breytur, hvað ætti viðmót einingarinnar að vera? Sýndu einnig dæmi um notkun. Kóði: [HCL]

Veik kvaðning / Sterk kvaðning

Veikt: "Búa til gagnagrunn með Terraform."

Niðurstaða: óljóst hvaða ský, hvaða vél, hvaða útgáfa, dulkóðuð eða ekki; Með eldri setningafræði getur gervigreind veitt opinbert aðgengilegt dæmi sem fellir lykilorðið inn í kóðann.

Sterkt: "Búðu til RDS PostgreSQL 15 tilvik á AWS með Terraform ~> 1.7. Gerðu lykilorðið breytu, ekki fella það inn í kóðann. Geymsla er dulkóðuð, aðeins aðgengileg frá einka undirneti, ekki opinberu. Lagaðu útgáfu útgáfunnar. Skilaðu endapunkti sem úttak."

Mismunur: önnur hvetja gefur vél, útgáfu, dulkóðun, netþvingun og leynireglu - framleiðslan er örugg og nálægt framleiðslu.

Algeng mistök

  • Að „sækja um“ án þess að gera „áætlun“. Dýrustu mistökin í IaC; skipuleggja alltaf fyrst.
  • Embedding Secret í HCL. Býr til varanlegan leka inn í Git sögu.
  • Geymsla ríkisins óörugg. Ódulkóðað, ólæst, opinbert ríki er hörmung.
  • Ekki laga útgáfuna. Notkun þjónustuveitunnar án þess að tilgreina útgáfu mun leiða til skyndilegra bilana í framtíðinni.
  • *`Aðgerð: Víðtæk leyfi eins og ""`.** Brýtur í bága við meginregluna um minnstu forréttindi.
  • Hunsa óvænt „eyðileggja“. Að beita eyðingarlínunum í áætluninni án þess að spyrjast fyrir.

Í stuttu máli

IaC breytir innviðum í endurtekanlegan, útgáfuhæfan og endurskoðanlegan kóða; Algengasta tólið er Terraform. AI framleiðir fljótt HCL stubba, en þú verður að gefa upp útgáfuna, skýsértækar upplýsingar og öryggisreglur. Hin óskeikula regla í Terraform: að sjá allar breytingar með áætlun, spyrjast fyrir um óvæntar eyðingar, halda leyndarmálum fjarri kóðanum og halda ríkinu á öruggan hátt. Eyðileggja og skipta út línum í úttak áætlunarinnar eru staðirnir sem ætti að lesa vandlegast.

Umsóknarverkefni

Láttu gervigreind búa til lítinn innviði (t.d. geymslufötu og aðgangsstefnu) með því að nota „Búa til innviðaskissu“ hér að ofan. Síðan: (1) láttu "vetting" sniðmátið athuga hvort leyndarmál eða * heimildir séu felldar inn í kóðann; (2) ef mögulegt er, keyrðu init + áætlun í prófunarreikningi og lestu áætlunarúttakið með "áætlunartúlkun" sniðmátinu; (3) athugaðu allar óvæntar eyðingar/breytingar.

gátlisti

  • [ ] Ég bætti við skýja-, Terraform-/útgáfuútgáfu og dulkóðunar-/netkerfistakmörkunum við kveðjuna mína.
  • [ ] Það er ekkert leyndarmál texta í kóðanum; nákvæmni gildi breytileg.
  • [ ] Ég minnkaði IAM/heimildir í lágmarksheimildir, * ég notaði það ekki.
  • [ ] Ég keyrði áætlun áður en ég sótti og las úttakið línu fyrir línu.
  • [ ] Ég staðfesti að það er engin óvænt eyðilegging/skipti í áætluninni.
  • [ ] Ég er viss um að ríkið er haldið í dulkóðuðu, læstu og takmörkuðu bakenda.