Voitot:
- Kyky ymmärtää IaC-konsepti ja Terraformin työkierto (aloitus, suunnittelu, soveltaminen, tila, moduuli) ja tekoäly tuottaa turvallisia HCL-luonnoksia
- Kyky tarkistaa jokainen muutos suunnitelmalla ennen soveltamista ja saada kiinni odottamattomista tuhoa/korvaa linjasta
- Kyky soveltaa periaatteita pitää salaisuudet poissa koodista, säilyttää tila turvallisesti ja minimoida IAM-oikeudet
Aiemmin palvelimen perustaminen oli pilvipaneelin napsauttamista: luo virtuaalikone, määritä verkko, lisää suojaussääntö. Tämä menetelmä oli hidas, virhealtis ja toistamaton – oli lähes mahdotonta määrittää samaa ympäristöä toisen kerran. Nykyään infrastruktuuria hallitaan koodina. IaC (Infrastructure as Code) on tapa kuvata pilviresursseja, kuten palvelimia, verkkoja ja tietokantoja tekstitiedostoissa manuaalisen sijaan. Nämä tiedostot ovat versionhallinnassa (Git); Näet kuka muutti mitä, milloin ja mitä; Voit määrittää saman infrastruktuurin monta kertaa, täsmälleen samalla tavalla, yhdellä komennolla.
Yleisin IaC-työkalu on Terraform. Terraform ottaa kirjoittamasi määritelmät luettavalla kielellä nimeltä HCL (HashiCorp Configuration Language — Terraformin määrityskieli), kääntää ne pilvipalveluntarjoajan (AWS, Azure, GCP) API:ksi ja luo resurssit. Tekoäly tuntee HCL:n erittäin hyvin ja tuottaa monimutkaisia lohkoja nopeasti. Mutta IaC:ssä virheen hinta on korkea: yksi väärä määritelmä voi pyyhkiä pois koko tuotantotietokannan. Siksi Terraformin kultainen sääntö on nähdä jokainen muutos "suunnitelmalla" ennen sen toteuttamista.
Terraformin suoritusaika
Terraform toimii kolmella peruskomennolla – näiden tietäminen on edellytys tekoälyn lähdön ohjaamiselle:
- `terraform init`: Käynnistää projektin, lataa tarvittavat palveluntarjoajan lisäosat.
- `Terraform plan`: Vertaa nykyistä tilannetta haluttuun tilanteeseen ja näyttää mitä lisätä, mitä muuttaa, mitä poistaa. Ei toteuta mitään. Se on kriittisin turvallisuusvaihe.
- `terraform apply`: Käytännössä suunnitelmaa luomalla/muokkaamalla resursseja.
Lisäksi kaksi käsitettä ovat tärkeitä. Tila (tilatiedosto): Tämä on tiedosto, jossa Terraform säilyttää hallitsemiensa resurssien nykyisen tilan; Se säilytetään yleensä lukitussa etävarastossa, jotta kaksi ihmistä ei voi muuttaa tai tuhota sitä samanaikaisesti. Moduuli: Uudelleen käytettävä konfigurointipaketti; Voit esimerkiksi käyttää "määritä verkko" -moduulia monissa projekteissa.
Vihje: Terraform-tulosteen vaarallisin merkki on tuhota tai -/+ (korvaa) -rivit suunnitelmatulosteessa. Nämä tarkoittavat, että resurssi poistetaan. Jos näet odottamattoman tuhon suunnitelmassa, älä koskaan hae, ymmärrä ensin, miksi se ilmestyi.
Askel askeleelta: IaC:n kirjoittaminen tekoälyllä
- Selvitä haluttu infrastruktuuri. Ole konkreettinen kuten "yksi VPC, kaksi aliverkkoa, yksi suojausryhmä ja yksi t3.micro EC2 eu-central-1:ssä".
- Määritä toimittaja ja versio. Mikä pilvi, mikä Terraform ja palveluntarjoajan versio? Jos et määritä versiota, tekoäly saattaa palauttaa vanhentuneen/yhteensopimattoman syntaksin.
- Tuota HCL-luonnos. Pyydä myös muuttujia ja lähtöjä.
- Ota Secret pois. Arvojen, kuten salasanojen ja avainten, tulisi mennä muuttujaan ja salaiseen varastoon, ei koodiin.
- Suorita "init" + "plan". Lue suunnitelman tulos rivi riviltä; Tarkista odottamattomien poistojen varalta.
- Aloita pienestä, toteuta vähitellen. Käytä sitä ensin erillisessä testitilissä/-ympäristössä.
Turvallisuus: IaC-spesifiset riskit
IaC on yhtä vaarallinen kuin voimakas. Kolme kriittistä kohtaa:
- Osavaltion tiedostossa on salaisuus. Terraform-tila säilyttää joskus arkaluontoiset arvot, kuten tietokannan salasanat, selkeänä tekstinä. Älä koskaan laita osavaltiota julkiseen tietovarastoon; Käytä salattua, rajoitetun pääsyn mahdollistavaa etätaustaohjelmaa.
- Älä upota salaisuuksia HCL:ään. Rivit, kuten password="prod123" kirjoitetaan pysyvästi Git-historiaan. Käytä sen sijaan muuttujaa ja anna arvo ajon aikana ympäristömuuttujasta (TF_VAR_...) tai salaisesta varastosta.
- Erittäin laaja IAM-lupa. Tekoäly tuottaa joskus lohkoja, kuten Action: "*" (salli kaikki) "saamaan sen toimimaan". Tämä on haavoittuvuus; rajaa lupa vaadittuun vähimmäismäärään.
Huomio: Kun salaisuus tulee Git-historiaan, se jää menneisyyteen ja voi vaarantua, vaikka poistaisit tiedoston. Jos sitoudut vahingossa, peruuta ja kierrä salaisuus välittömästi; Pelkkä poistaminen ei riitä.
Riskillinen suunnitelmakylttipöytä
Suunnittele tuloste
Merkitys
mitä tehdä
+luoda
Uusi resurssi lisätään
Yleensä turvallinen, mutta tarkista
~ päivitys paikan päällä
Lähde vaihtuu paikan päällä
Tarkista vaikutus (tuleeko katkosta?)
-/+ vaihda
Poistetaan ja luodaan uudelleen
VAROITUS: tietoja saattaa kadota
- tuhota
Resurssi tuhoutuu
STOP: Älä koskaan hae, jos et odota sitä
kolme minilaukkua
Tapaus 1 – 2 päivän työ 3 tunnissa. Yksi tiimi aikoi kirjoittaa Terraformin perustaakseen uuden testiympäristön (VPC, aliverkot, RDS-tietokanta, ECS-klusteri), mutta he olivat juuri siirtyneet HCL:ään. He kuvasivat tekoälyn arkkitehtuuria ja versioita ja tuottivat modulaarisen suunnitelman. He vahvistivat jokaisen moduulin suunnitelmalla ja saivat sen käyttöön 3 tunnissa; Heiltä menisi kaksi päivää manuaalista yritys- ja erehdystä.
Tapaus 2 – suunnitelma poistettiin. Insinööri suoritti suunnitelman käyttämättä tekoälyn luomaa päivityskoodia. Tuotos sisälsi tuotantotietokannan -/+ korvauksen - tekoäly yritti korvata ei-korvaamattoman kentän, mikä tarkoitti tietokannan poistamista ja uudelleenluomista. Insinööri lopetti käytön ja muutti muutoksen turvalliseksi menetelmäksi. Suunnittelutapa esti katastrofin.
Tapaus 3 – haudattu salainen vuoto. Nuorempi, YZ:n myöntämä db_password = "S3cret!" Hän teki linjan sellaisenaan ja työnsi sitä. Koodin tarkistuksessa kiinni; Salasana peruutettiin ja muutettiin välittömästi, arvo siirrettiin muuttujaan ja syötettiin salaisesta varastosta. Oppitunti: HCL:ssä ei ole koskaan selkeitä salaisuuksia.
Neljä kopioitavaa mallia
1) Infrastruktuuriluonnoksen luominen:
Kirjoita seuraava infrastruktuuri [CLOUD: AWS]:iin Terraformilla (versio ~> 1.7): [LÄHDELUETTELO]. Alue [X]. Säännöt:- Tee kaikista arkaluonteisista arvoista muuttujia, älä upota niitä HCL:ään.- Korjaa palveluntarjoajan versio (required_providers).- Minimoi IAM-oikeudet, älä käytä "*".- Palauta [X, Y] tulosteena. Anna koodi modulaarisesti ja selityksillä.
2) Suunnitelman tuloksen tulkitseminen:
Analysoi "terraform plan" -tuloste alla. Luettele minulle:(1) mitä resursseja lisättiin/muutettiin/POISTETTU,(2) rivit, joissa tietojen katoaminen tai keskeytyminen on vaarassa,(3) 3 kysymystä, jotka minun tulee kysyä ennen hakemista.Suunnitelma: [OUTPUT]
3) Tarkista olemassa oleva HCL turvallisuuden varalta:
Tarkista seuraava Terraform-koodi turvallisuussyistä: upotettu salaisuus, liian laaja IAM-käyttöoikeus, avoimen verkon sääntö (0.0.0.0/0), salaamaton tallennustila? Kirjoita jokainen havainto tärkeysjärjestykseen ja korjausjärjestykseen. Koodi: [HCL]
4) Muunna toistuva koodi moduuliksi:
Muunna seuraava toistuva Terraform-koodi uudelleen käytettäväksi moduuliksi: mitkä arvot tulisi olla muuttujia, mikä moduulin käyttöliittymä? Näytä myös käyttöesimerkki. Koodi: [HCL]
Heikko kehote / Vahva kehote
Heikko: "Luo tietokanta Terraformilla."
Tulos: epäselvä mikä pilvi, mikä moottori, mikä versio, salattu vai ei; Vanhan syntaksin avulla tekoäly voi tarjota julkisesti saatavilla olevan esimerkin, joka upottaa salasanan koodiin.
Vahva: "Luo RDS PostgreSQL 15 -esiintymä AWS:llä Terraform ~> 1.7:llä. Tee salasanasta muuttuja, älä upota sitä koodiin. Tallennus on salattu, käytettävissä vain yksityisestä aliverkosta, ei julkista. Korjaa palveluntarjoajan versio. Palauta päätepiste ulostulona."
Ero: toinen kehote antaa moottorin, version, salauksen, verkkorajoituksen ja salaisen säännön – tulos on turvallinen ja lähellä tuotantoa.
Yleisiä virheitä
- "Hakea" tekemättä "suunnitelmaa". IaC:n kallein virhe; suunnittele aina ensin.
- Salaisuuden upottaminen HCL:ään. Luo pysyvän vuodon Gitin historiaan.
- Tallennustila epävarma. Salaamaton, lukitsematon, julkinen tila on katastrofi.
- Ei korjata versiota. Palveluntarjoajan käyttäminen versiota määrittämättä johtaa äkillisiin virheisiin tulevaisuudessa.
- *`Toiminto: Laaja käyttöoikeus, kuten ""`.** Rikkoo vähiten etuoikeuksien periaatetta.
- Odottamattoman "tuhoamisen" huomioiminen. Käytä poistorivejä suunnitelmassa ilman kyseenalaistamista.
Yhteenvetona
IaC muuttaa infrastruktuurin toistettavaksi, versioitavaksi ja tarkastettavaksi koodiksi; Yleisin työkalu on Terraform. Tekoäly tuottaa nopeasti HCL-tyyppejä, mutta sinun on annettava versio, pilvikohtaiset tiedot ja suojaussäännöt. Terraformin erehtymätön sääntö: nähdä jokainen muutos suunnitelmassa, kysyä odottamattomia poistoja, pitää salaisuudet poissa koodista ja pitää tila turvallisesti. Suunnitelman tulosteen tuhoaminen ja korvaaminen -rivit ovat paikkoja, jotka kannattaa lukea huolellisimmin.
Sovellustehtävä
Pyydä tekoälyä luomaan pieni infrastruktuuri (esim. tallennussäilö ja käyttöoikeuskäytäntö) käyttämällä yllä olevaa Luo infrastruktuuriluonnos -mallia. Sitten: (1) tarkista, onko "tarkistus"-mallissa koodiin upotettu salaisuus tai * käyttöoikeudet; (2) jos mahdollista, suorita init + plan testitilillä ja lue suunnitelman tulos "suunnitelman tulkinta" -mallin avulla; (3) huomioi kaikki odottamattomat poistot/muutokset.
tarkistuslista
- [ ] Lisäsin kehotteeseeni pilvi-, Terraform-/palveluntarjoajaversion ja salaus-/verkkorajoitukset.
- [ ] Koodissa ei ole selkeää tekstiä; tarkkuusarvojen muuttuja.
- [ ] Rajoitin IAM/käyttöoikeudet minimiin, * En käyttänyt sitä.
- [ ] Tein suunnitelman ennen hakemista ja luin tulosteen rivi riviltä.
- [ ] Vahvistin, että suunnitelmassa ei ole odottamatonta tuhoa/korvaamista.
- [ ] Olen varma, että tila säilytetään salatussa, lukitussa ja rajoitetussa taustajärjestelmässä.