Gevinster:
- Evne til at forstå IaC-konceptet og Terraforms arbejdscyklus (initiere, planlægge, anvende, angive, modul) og have kunstig intelligens til at producere sikre HCL-udkast
- Evne til at kontrollere hver ændring med en plan før anvendelse og fange uventede ødelægge/erstat linjer
- Evne til at anvende principperne om at holde hemmeligheder ude af koden, holde staten sikkert og minimere IAM-tilladelser
Tidligere var opsætning af en server et spørgsmål om at klikke gennem et skypanel: opret en virtuel maskine, opsæt netværket, tilføj sikkerhedsreglen. Denne metode var langsom, fejltilbøjelig og kunne ikke gentages - det var næsten umuligt at konfigurere det samme miljø en anden gang. I dag administreres infrastruktur som kode. IaC (Infrastructure as Code) er en tilgang til at beskrive cloud-ressourcer såsom servere, netværk og databaser i tekstfiler i stedet for manuelt. Disse filer sidder i versionskontrol (Git); Du kan se, hvem der har ændret hvad, hvornår og hvad; Du kan opsætte den samme infrastruktur mange gange, på nøjagtig samme måde, med én kommando.
Det mest almindelige IaC-værktøj er Terraform. Terraform tager de definitioner, du skriver i et læsbart sprog kaldet HCL (HashiCorp Configuration Language — Terraforms konfigurationssprog), oversætter dem til cloud-udbyderens (AWS, Azure, GCP) API og opretter ressourcerne. AI kender HCL meget godt og producerer komplekse blokke hurtigt. Men i IaC er omkostningerne ved en fejl høje: En forkert definition kan udslette en hel produktionsdatabase. Derfor er den gyldne regel i Terraform at se hver ændring med en 'plan', før den implementeres.
Terraforms køretid
Terraform arbejder med tre grundlæggende kommandoer - at vide, at disse er en forudsætning for at kontrollere AI-output:
- `terraform init`: Starter projektet, downloader de nødvendige udbyder-plugins.
- `terraform plan`: Sammenligner den aktuelle situation med den ønskede situation og viser, hvad der skal tilføjes, hvad der skal ændres, hvad der skal slettes. Implementerer ikke noget. Det er det mest kritiske sikkerhedstrin.
- `terraform anvende`: Anvender faktisk planen, opretter/ændrer ressourcer.
Derudover er to koncepter afgørende. Tilstand (tilstandsfil): Dette er filen, hvor Terraform beholder den aktuelle tilstand for de ressourcer, den administrerer; Det opbevares normalt i et fjerntliggende og aflåst lager, så to personer ikke kan ændre eller ødelægge det på samme tid. Modul: Genanvendelig konfigurationspakke; For eksempel kan du bruge modulet "set op et netværk" i mange projekter.
Tip: Det farligste tegn i en Terraform-output er ødelægge eller -/+ (erstat) linjer i planoutputtet. Disse betyder, at ressourcen vil blive slettet. Hvis du ser en uventet ødelæggelse i en plan, skal du aldrig anvende, først forstå hvorfor den dukkede op.
Trin for trin: Skrivning af IaC med AI
- Afklar den ønskede infrastruktur. Vær konkret som "en VPC, to undernet, en sikkerhedsgruppe og en t3.micro EC2 på eu-central-1".
- Angiv udbyder og version. Hvilken sky, hvilken Terraform og udbyderversion? Hvis du ikke angiver en version, kan AI returnere forældet/inkompatibel syntaks.
- Få udarbejdet HCL-udkastet. Anmod også om variabler og output.
- Tag Secret ud. Værdier som adgangskoder og nøgler skal gå til den variable og hemmelige boks, ikke til koden.
- Kør 'init' + 'plan'. Læs planens output linje for linje; Tjek for uventede sletninger.
- Start i det små, implementer gradvist. Anvend det først i en isoleret testkonto/miljø.
Sikkerhed: IaC-specifikke risici
IaC er lige så risikabelt, som det er kraftfuldt. Tre kritiske punkter:
- Der er en hemmelighed i statens sag. Terraform-tilstand beholder nogle gange følsomme værdier, såsom databaseadgangskoder, i klartekst. Anbring aldrig staten i et offentligt depot; Brug en krypteret fjernbackend med begrænset adgang.
- Indlejr ikke hemmeligheder i HCL. Linjer som password="prod123" skrives permanent til Git-historikken. Brug i stedet en variabel og giv værdien ved kørsel fra miljøvariablen (TF_VAR_...) eller hemmelig vault.
- Meget bred IAM-tilladelse. AI producerer nogle gange blokke som Action: "*" (tillad alt) for at "få det til at fungere". Dette er en sårbarhed; indsnævre tilladelsen til det krævede minimum.
Bemærk: Når en hemmelighed kommer ind i Git-historien, forbliver den i fortiden og kan blive kompromitteret, selvom du sletter filen. Hvis du begår ved en fejl, skal du straks annullere og rotere hemmeligheden; Bare sletning er ikke nok.
Risikabelt planskiltetabel
Plan udskrift
Betydning
hvad man skal gøre
+opret
Ny ressource vil blive tilføjet
Generelt sikker, anmeldelse dog
~ opdatering på plads
Kilden ændres på stedet
Bekræft påvirkningen (vil der være en strømafbrydelse?)
-/+ erstatte
Vil blive slettet og genskabt
FORSIGTIG: Datatab kan forekomme
- ødelægge
Ressourcen vil blive ødelagt
STOP: Ansøg aldrig, hvis du ikke forventer det
tre minisager
Sag 1 — 2 dages arbejde på 3 timer. Et hold skulle skrive Terraform for at oprette et nyt testmiljø (VPC, undernet, RDS-database, ECS-klynge), men de var lige flyttet til HCL. De beskrev arkitekturen og versionerne til AI og producerede en modulær plan. De verificerede hvert modul med planen og havde det oppe at køre på 3 timer; Det ville tage dem to dage med manuel forsøg og fejl.
Tilfælde 2 — planen blev slettet. En ingeniør kørte en plan uden at anvende en AI-genereret opdateringskode. Outputtet indeholdt -/+ erstatning for produktionsdatabasen - AI'en forsøgte at erstatte et ikke-udskifteligt felt, hvilket betød sletning og genskabelse af databasen. Ingeniøren stoppede med at anvende og ændrede ændringen til den sikre metode. Vanen med at planlægge forhindrede en katastrofe.
Sag 3 — begravet hemmelig lækage. En junior, YZ udstedte db_password = "S3cret!" Han forpligtede linjen, som den var, og skubbede den. Fanget i kodegennemgang; Adgangskoden blev straks annulleret og ændret, værdien blev flyttet til en variabel og ført fra den hemmelige boks. Lektion: Der er aldrig almindelige hemmeligheder i HCL.
Fire kopierbare skabeloner
1) Generering af infrastrukturudkast:
Skriv følgende infrastruktur på [CLOUD: AWS] med Terraform (version ~> 1.7): [SOURCE LIST]. Region [X]. Regler:- Gør alle følsomme værdier variable, indlejr dem ikke i HCL.- Fix provider version (required_providers).- Minimer IAM-tilladelser, brug ikke "*".- Returner [X, Y] som output. Giv kode modulært og med forklaringer.
2) Fortolkning af planens output:
Analyser 'terraform plan' output nedenfor. Angiv mig:(1) hvilke ressourcer der blev tilføjet/ændret/SLETTEDE,(2) rækker med risiko for datatab eller afbrydelse,(3) 3 spørgsmål, jeg bør stille før jeg ansøger.Plan: [OUTPUT]
3) Undersøg eksisterende HCL for sikkerhed:
Tjek følgende Terraform-kode for sikkerhed: indlejret hemmelighed, alt for bred IAM-tilladelse, åben netværksregel (0.0.0.0/0), ukrypteret lagring? Skriv hvert fund i rækkefølge efter vigtighed og korrektion. Kode: [HCL]
4) Konverter den gentagne kode til modulet:
Konverter følgende gentagne Terraform-kode til et genanvendeligt modul: hvilke værdier skal være variable, hvad skal modulgrænsefladen være? Vis også eksempel på brug. Kode: [HCL]
Svag prompt / Stærk prompt
Svag: "Opret en database med Terraform."
Resultat: uklart hvilken sky, hvilken motor, hvilken version, krypteret eller ej; Med ældre syntaks kan AI give et offentligt tilgængeligt eksempel, der indlejrer adgangskoden i koden.
Stærk: "Opret en RDS PostgreSQL 15-instans på AWS med Terraform ~> 1.7. Gør adgangskoden variabel, lad være med at indlejre den i koden. Lagring er krypteret, kun tilgængelig fra privat undernet, ikke offentligt. Ret udbyderversion. Returner slutpunkt som output."
Forskel: den anden prompt giver motor, version, kryptering, netværksbegrænsning og hemmelig regel - outputtet er sikkert og tæt på prod.
Almindelige fejl
- At 'ansøge' uden at lave en 'plan'. Den dyreste fejl i IaC; planlæg altid først.
- Indlejring af hemmelighed i HCL. Skaber permanent lækage ind i Git-historien.
- Opbevaring af staten usikker. En ukrypteret, ulåst, offentlig stat er en katastrofe.
- Retter ikke versionen. Brug af udbyder uden at angive en version vil føre til pludselige fejl i fremtiden.
- *`Handling: Bred tilladelse såsom ""`.** Overtræder princippet om mindste privilegium.
- Ignorerer uventet "destroy". Anvendelse af slettelinjerne i planen uden at stille spørgsmål.
Sammenfattende
IaC omdanner infrastruktur til gentagelig, versionerbar og reviderbar kode; Det mest almindelige værktøj er Terraform. AI producerer hurtigt HCL-stubber, men du skal angive versionen, cloud-specifikke detaljer og sikkerhedsregler. Den ufejlbarlige regel i Terraform: at se hver ændring med en plan, at forespørge på uventede sletninger, at holde hemmeligheder væk fra koden og at holde staten sikkert. Ødelæg og erstat linjerne i et planoutput er de steder, der bør læses mest omhyggeligt.
Ansøgningsopgave
Få AI til at generere en lille infrastruktur (f.eks. en lagerbøtte og en adgangspolitik) ved hjælp af skabelonen "Generer infrastrukturskitse" ovenfor. Derefter: (1) få "vetting" skabelonen til at tjekke for hemmelige eller * tilladelser indlejret i koden; (2) hvis det er muligt, kør init + plan i en testkonto og læs planoutputtet med "planfortolkning"-skabelonen; (3) bemærk eventuelle uventede sletninger/ændringer.
tjekliste
- [ ] Jeg tilføjede cloud, Terraform/udbyderversion og kryptering/netværksbegrænsninger til min prompt.
- [ ] Der er ingen klartekst-hemmelighed i koden; præcisionsværdier variable.
- [ ] Jeg indsnævrede IAM/tilladelser til minimale tilladelser, * Jeg brugte det ikke.
- [ ] Jeg kørte planen før anvende og læste output linje for linje.
- [ ] Jeg bekræftede, at der ikke er nogen uventet ødelæggelse/erstatning i planen.
- [ ] Jeg er sikker på, at staten opbevares i en krypteret, låst og begrænset backend.