Kasu:
- Võimalus mõista IaC kontseptsiooni ja Terraformi töötsüklit (init, planeerimine, rakendamine, olek, moodul) ning lasta tehisintellektil toota ohutuid HCL-kavandeid
- Võimalus kontrollida iga muudatust enne rakendamist plaaniga ja tabada ootamatuid hävitamise/asendamise ridu
- Võimalus rakendada põhimõtteid salajaste koodist eemal hoidmiseks, oleku turvaliseks hoidmiseks ja IAM-i lubade minimeerimiseks
Varem käis serveri seadistamine läbi pilvepaneeli klõpsamise: loo virtuaalmasin, seadista võrk, lisa turvareegel. See meetod oli aeglane, tõrkeohtlik ja kordumatu – sama keskkonda teist korda seadistada oli peaaegu võimatu. Tänapäeval hallatakse infrastruktuuri koodina. IaC (infrastruktuur kui kood) on lähenemine pilveressursside (nt serverid, võrgud ja andmebaasid) kirjeldamiseks tekstifailides, mitte käsitsi. Need failid asuvad versioonikontrollis (Git); Näete, kes mida, millal ja mida muutis; Sama infrastruktuuri saab seadistada mitu korda, täpselt samal viisil, ühe käsuga.
Kõige tavalisem IaC tööriist on Terraform. Terraform võtab teie kirjutatud määratlused loetavas keeles nimega HCL (HashiCorp Configuration Language – Terraformi konfiguratsioonikeel), tõlgib need pilveteenuse pakkuja (AWS, Azure, GCP) API-sse ja loob ressursid. Tehisintellekt tunneb HCL-i väga hästi ja toodab kiiresti keerukaid plokke. Kuid IaC-s on vea hind kõrge: üks vale määratlus võib hävitada terve tootmisandmebaasi. Sellepärast on Terraformi kuldreegel näha iga muudatust enne selle rakendamist koos „plaaniga”.
Terraformi käitusaeg
Terraform töötab kolme põhikäsuga – nende teadmine on AI väljundi juhtimise eeltingimus:
- `terraform init`: käivitab projekti, laadib alla vajalikud pakkuja pluginad.
- `terraform plan`: võrdleb hetkeolukorda soovitud olukorraga ja näitab, mida lisada, mida muuta, mida kustutada. Ei rakenda midagi. See on kõige kriitilisem turvaetapp.
- `terraform apply`: tegelikult rakendab plaani, luues/muutes ressursse.
Lisaks on olulised kaks mõistet. Olek (olekufail): see on fail, kus Terraform säilitab hallatavate ressursside hetkeseisu; Tavaliselt hoitakse seda kauges ja lukustatud laos, et kaks inimest ei saaks seda korraga muuta ega hävitada. Moodul: korduvkasutatav konfiguratsioonipakett; Näiteks saate paljudes projektides kasutada "võrgu seadistamise" moodulit.
Näpunäide: Terraformi väljundi kõige ohtlikum märk on plaani väljundis olevad read hävitada või -/+ (asendada). See tähendab, et ressurss kustutatakse. Kui näete plaanis ootamatut hävingut, ärge kunagi kandideerige, vaid saage kõigepealt aru, miks see ilmnes.
Samm-sammult: IaC kirjutamine AI-ga
- Selgitage soovitud infrastruktuur. Olge konkreetne nagu "üks VPC, kaks alamvõrku, üks turvagrupp ja üks t3.micro EC2 eu-central-1-s".
- Määrake pakkuja ja versioon. Milline pilv, milline Terraform ja teenusepakkuja versioon? Kui te versiooni ei määra, võib AI tagastada aegunud/ühildumatu süntaksi.
- Laske koostada HCL eelnõu. Küsi ka muutujaid ja väljundeid.
- Võtke saladus välja. Väärtused, nagu paroolid ja võtmed, peaksid minema muutuja- ja salahoidlasse, mitte koodile.
- Käivitage "init" + "plan". Loe plaani väljund rida-realt; Kontrollige ootamatuid kustutamisi.
- Alustage väikeselt, rakendage järk-järgult. Rakendage see esmalt isoleeritud testkontol/-keskkonnas.
Turvalisus: IaC-spetsiifilised riskid
IaC on sama riskantne kui ka võimas. Kolm kriitilist punkti:
- Riigitoimikus on saladus. Terraformi olek hoiab mõnikord tundlikke väärtusi, näiteks andmebaasi paroole, lihttekstina. Ärge kunagi pange osariiki avalikku hoidlasse; Kasutage krüptitud piiratud juurdepääsuga kaugtaustaprogrammi.
- Ärge manustage HCL-i saladusi. Sellised read nagu password="prod123" kirjutatakse jäädavalt Giti ajalukku. Selle asemel kasutage muutujat ja andke käitusajal väärtus keskkonnamuutujast (TF_VAR_...) või salajasest hoidlast.
- Väga lai IAM-luba. Tehisintellekt toodab mõnikord selliseid plokke nagu Action: "*" (luba kõike), et see toimiks. See on haavatavus; vähendage luba miinimumini.
Tähelepanu. Kui saladus siseneb Giti ajalukku, jääb see minevikku ja selle ohtu võib saada isegi siis, kui faili kustutate. Kui teete selle kogemata, tühistage ja pöörake saladus kohe; Ainult kustutamisest ei piisa.
Riskantsete plaanide tabel
Plaani väljatrükk
Tähendus
mida teha
+loo
Lisatakse uus ressurss
Üldiselt ohutu, vaadake siiski üle
~ värskendus kohapeal
Allikas muutub kohapeal
Kontrollige mõju (kas esineb katkestus?)
-/+ asendada
Kustutatakse ja luuakse uuesti
ETTEVAATUST! Andmed võivad kaduda
- hävitada
Ressurss hävitatakse
STOP: ärge kunagi kandideerige, kui te seda ei oota
kolm minikarpi
Juhtum 1 — 2 päeva töö 3 tunniga. Üks meeskond kavatses kirjutada Terraformi, et seadistada uus testkeskkond (VPC, alamvõrgud, RDS-andmebaas, ECS-klaster), kuid nad olid just kolinud HCL-i. Nad kirjeldasid AI arhitektuuri ja versioone ning koostasid modulaarse kavandi. Nad kinnitasid iga mooduli plaaniga ja lasid selle 3 tunniga tööle. Neil kuluks kaks päeva käsitsi katse-eksituse meetodit.
Juhtum 2 – plaan jäi kustutamisele. Insener koostas plaani ilma tehisintellekti loodud värskenduskoodi rakendamata. Väljund sisaldas tootmisandmebaasi jaoks -/+ asendust – AI püüdis asendada asendamatu välja, mis tähendas andmebaasi kustutamist ja uuesti loomist. Insener lõpetas rakendamise ja muutis muudatuse ohutuks meetodiks. Planeerimise harjumus hoidis ära katastroofi.
Juhtum 3 – maetud salaleke. Noorem, YZ väljastas db_password = "S3cret!" Ta tegi joone nii nagu on ja lükkas selle edasi. Tabatud koodi ülevaatamisel; Parool tühistati ja muudeti kohe, väärtus teisaldati muutujasse ja toideti salajasest varahoidlast. Õppetund: HCL-is pole kunagi lihtteksti saladusi.
Neli kopeeritavat malli
1) Infrastruktuuri eelnõu koostamine:
Kirjutage rakendusega [CLOUD: AWS] Terraformiga (versioon ~> 1.7) järgmine infrastruktuur: [ALLIKATE LOEND]. Piirkond [X]. Reeglid:- muutke kõik tundlikud väärtused muutujateks, ärge manustage neid HCL-i.- Parandage pakkuja versioon (required_providers).- Minimeerige IAM-i õigused, ärge kasutage tähte "*".- Tagasta väljundina [X, Y]. Esitage kood modulaarselt ja koos selgitustega.
2) Plaani väljundi tõlgendamine:
Analüüsige allolevat terraformiplaani väljundit. Loetlege mulle:(1) milliseid ressursse lisati/muudeti/KUUSTATUD,(2) read, mis ohustavad andmete kadumist või katkemist,(3) 3 küsimust, mida peaksin enne kandideerimist küsima. Plaan: [OUTPUT]
3) Kontrollige olemasolevat HCL-i turvalisuse tagamiseks:
Kontrollige turvalisuse tagamiseks järgmist Terraformi koodi: manustatud saladus, liiga lai IAM-luba, avatud võrgu reegel (0.0.0.0/0), krüptimata salvestusruum? Kirjutage iga leid tähtsuse ja paranduste järjekorras. Kood: [HCL]
4) Teisendage korduv kood mooduliks:
Teisendage järgmine korduv Terraformi kood korduvkasutatavaks mooduliks: millised väärtused peaksid olema muutujad, milline peaks olema mooduli liides? Näidake ka kasutamist. Kood: [HCL]
Nõrk viip / Tugev viip
Nõrk: "Loo andmebaas Terraformiga."
Tulemus: ebaselge, milline pilv, milline mootor, milline versioon, krüptitud või mitte; Pärandsüntaksiga võib AI pakkuda avalikult kättesaadavat näidet, mis manustab parooli koodi.
Tugev: "Looge AWS-is RDS PostgreSQL 15 eksemplar rakendusega Terraform ~> 1.7. Muutke parool muutujaks, ärge manustage seda koodi. Salvestusruum on krüptitud, juurdepääsetav ainult privaatsest alamvõrgust, mitte avalik. Parandage pakkuja versioon. Tagasta lõpp-punkt väljundina."
Erinevus: teine viip annab mootori, versiooni, krüptimise, võrgupiirangu ja salajase reegli – väljund on turvaline ja tootele lähedane.
Levinud vead
- Taotleda ilma plaani tegemata. IaC kõige kallim viga; planeeri alati kõigepealt.
- Saladuse manustamine HCL-i. Loob püsiva lekke Giti ajalukku.
- Säilitusriik on ebaturvaline. Krüptimata, lukustamata avalik olek on katastroof.
- Versiooni ei paranda. Pakkuja kasutamine ilma versiooni määramata põhjustab tulevikus ootamatuid tõrkeid.
- *`Toiming: lai luba, näiteks ""`.** Rikub vähima privileegi põhimõtet.
- Ootamatu `hävitamise` ignoreerimine. Kustutusridade rakendamine plaanis ilma küsitlemata.
Kokkuvõttes
IaC muudab infrastruktuuri korratavaks, versioonitavaks ja auditeeritavaks koodiks; Kõige tavalisem tööriist on Terraform. AI loob kiiresti HCL-i tünnid, kuid peate esitama versiooni, pilvespetsiifilised üksikasjad ja turvareeglid. Terraformi eksimatu reegel: näha iga plaani muudatust, küsida ootamatuid kustutamisi, hoida saladused koodist eemal ja hoida olekut turvaliselt. Plaani väljundis olevad hävitamise ja asendamise read on kohad, mida tuleks kõige hoolikamalt lugeda.
Rakenduse ülesanne
Laske tehisintellektil ülaltoodud malli „Loo infrastruktuurivisand” abil luua väike infrastruktuur (nt salvestussalv ja juurdepääsupoliitika). Seejärel tehke järgmist. (1) kontrollige, kas "kontrolli" mallil on koodi manustatud salajased või * õigused; (2) võimalusel käivitage init + plan testkontol ja lugege plaani väljundit "plaani tõlgendamise" malliga; (3) märkige üles kõik ootamatud kustutamised/muudatused.
kontrollnimekiri
- [ ] Lisasin oma viipale pilve, Terraformi/pakkuja versiooni ja krüptimise/võrgupiirangud.
- [ ] Koodis pole lihttekstisaladust; täpsusväärtuste muutuja.
- [ ] Ahendasin IAM-i/õigusi minimaalsete õigusteni, * ma ei kasutanud seda.
- [ ] Jooksin enne rakendamist plaani ja lugesin väljundit rida-realt.
- [ ] Kontrollisin, et plaanis ei oleks ootamatut hävitamist/asendamist.
- [ ] Olen kindel, et olekut hoitakse krüptitud, lukustatud ja piiratud taustaprogrammis.