Yksikkö 6 / 11

Infrastruktuurin hallinta koodina (IaC): Terraform, Ansible ja Plan Control

Voitot:

  • Kyky tuottaa IaC (Terraform, Ansible) -koodia tekoälyllä kapeimmilla käyttöoikeuksilla ja turvallisilla oletuksilla ja ymmärtää deklaratiivista lähestymistapaa
  • Kyky estää tietojen häviäminen lukemalla ja kaappaamalla poisto- ja pakotusrivit ennen suunnitelman/tarkistuksen tulosteen käyttöä
  • Kyky estää salainen vuoto pitämällä tilatiedosto salattuna, lukittuna etätaustassa ja jakamalla muutokset pieniin, palautuviin vaiheisiin

Infrastruktuurin hallinta koodina (IaC): Terraform, Ansible ja Plan Control AI:lla

Aiemmin palvelimen perustaminen tehtiin manuaalisilla napsautuksella, komennoilla ja henkilökohtaisilla muistiinpanoilla. Tuloksena oli toistamattomia "lumihiutale"-palvelimia, joita kukaan ei tiennyt tarkalleen, kuinka perustaa. Infrastructure as Code (IaC) on lähestymistapa, joka lopettaa tämän kaaoksen: palvelimet, verkot, turvallisuussäännöt ei määritellä käsin, vaan versioitavilla tekstitiedostoilla (koodilla). Kun suoritat tämän koodin, infrastruktuuri määritetään täsmälleen kuten kirjoitit – sama, dokumentoitu ja toistettava joka kerta. Yleisimmät työkalut ovat Terraform ja CloudFormation pilviinfrastruktuurille ja Ansible palvelimen konfigurointiin. Täällä tekoäly on erittäin taitava kirjoittamaan, selittämään ja tarkistamaan tämän IaC-koodin. Mutta IaC:n voima on myös sen vaara: yksi väärä linja voi pyyhkiä pois koko infrastruktuurin; joten tekoäly kirjoittaa koodin, luet "suunnitelman", hyväksyt sen ja suoritat sen.

Tässä osiossa keskustelemme deklaratiivisesta lähestymistavasta, suunnitelma/käytä erottelusta, valtion turvallisuudesta ja idempotenssista; Opit IaC:n luomisen tekoälyn avulla ja kriittisimmän taidon, "suunnitelmanhallinnan".

Ajattele deklaratiivisesti: "mitä jos", ei "miten tehdä"

Useimmat IaC-työkalut ovat deklaratiivisia: sinä kuvaat järjestelmän lopullisen tilan ("oletetaan 3 web-palvelinta, 1 kuormitustasaaja"), työkalu itse laskee kuinka päästään siihen tilaan. Tämä eroaa käsikirjoituksen kirjoittamisesta ("tee tämä, tee sitten" vaihe vaiheelta). Deklaratiivisen lähestymistavan suuri etu on idempotenssi: vaikka koodi ajettaisiin kymmenen kertaa, tulos on sama, koska työkalu tarkistaa, onko haluttu tila jo olemassa, ja jos on, se ei kosketa sitä. Muista tämä ero, kun kirjoitat IaC:tä tekoälyyn: kirjoitat sen sanomaan "anna tämän infrastruktuurin tila", ei "suorita nämä komennot".

Suunnittele/hae: tärkein turvakaide

IaC:n hengenpelastusominaisuus on suunnitelmavaihe. Terraformissa terraform plan Ansiblessa --check-tila tuottaa esikatselun "mikä muuttuu, jos käytän sitä" ennen koodin suorittamista: "2 resurssia lisätään, 1 muuttuu, 0 poistetaan". Tämä on ainoa tapa verrata aikomustasi todellisuuteen ennen käyttöönottoa. Kriittinen sääntö: älä koskaan hakeudu lukematta suunnitelmaa. Etsi erityisesti "tuhoa" -rivejä; Jos näet "12 poistetaan" eikä "1 muutetaan" kirjoitusvirheen vuoksi, suunnitelma on pelastanut sinut katastrofilta. Kun olet tulostanut koodin tekoälyyn, pyydä sitä sanomaan "tarkistaa suunnitelman tuloste rivi riviltä minun kanssani, merkitse jokainen rivi, joka sisältää poistoa/rekreointia."

Varoitus: Jotkut Terraformin muutokset "tuhoavat ja luovat" resurssin "päivittämisen sijaan". Tämä tarkoittaa tietokannan tietojen häviämistä. -/+ tai "pakottaa korvaamisen" huomioimatta jättäminen suunnitelman tulostuksessa on yksi kalleimmista virheistä.

Valtiotiedosto: salaisuuksien ja totuuden luettelo

Terraformin kaltaiset työkalut säilyttävät hallitsemansa infrastruktuurin nykyisen tilan tilatiedostossa. Tämä tiedosto on kriittinen kahdesta syystä. Ensinnäkin se voi sisältää salaisuuksia (tietokannan salasanat, avaimet voivat pudota tilaan selväkielisenä); Siksi älä koskaan liitä tilaa julkiseen tietovarastoon tai tekoälyyn, vaan säilytä sitä salatussa ja pääsyrajoitetussa etätaustajärjestelmässä. Toiseksi, jos valtio korruptoituu tai katoaa, ajoneuvo menettää yhteyden todellisen infrastruktuurin ja kuvitellun infrastruktuurin välillä; Siksi tilan varmuuskopiointi ja lukkomekanismi (lukko, joka estää kahta ihmistä rikkomasta sitä samanaikaisesti) ovat välttämättömiä.

Askel askeleelta: Suojaa IaC tekoälyllä

  1. Valtion tarkoitus ja tarjoaja. "Kaksi palvelinta AWS:llä, Terraformilla, tällä alueella, tämän kokoinen ja suojaryhmä." Jos pilvi, työkalu ja versio ovat selkeitä, tekoäly tuottaa oikean syntaksin.
  2. Pyydä suojauksen oletusasetuksia. "Avaa suojausryhmä, ota salaus käyttöön, poimi salaisuudet muuttujaan, myönnä julkinen käyttöoikeus." AI voi oletusarvoisesti tuottaa löysänäytteitä.
  3. Lue ja ymmärrä koodi. Ymmärrä jokainen resurssi, jokainen käyttöoikeus rivi riviltä. Älä hae lupaa, jota et ymmärrä.
  4. Hanki suunnitelma ja tarkista se. Suorita suunnitelma/--tarkistus, tutki tuloste AI:lla, merkitse poisto- ja uudelleenmuodostusrivit.
  5. Levitä pieni ja käännettävä. Toteuta suuri muutos pienissä osissa, älä kaikkia kerralla. Tunne paluutie joka askeleella.
  6. Suojele valtiota. Käytä salattua etäjärjestelmää ja lukitusta; Älä koskaan vuoda tila.

kolme minilaukkua

Tapaus 1 – Suunnitelmassa palautettiin tietokanta. Eräs insinööri halusi kasvattaa tietokannan kokoa tekoälyllä tuottamallaan Terraform-koodilla. Kun hän odotti "1 muuttuvan" terraformisuunnitelman lähdössä, hän näki "1 tuhoamaan, 1 lisäämään" - hänen valitsemansa parametri laukaisi uudelleenrakennuksen, ei paikan päällä tapahtuvaa päivitystä, mikä tarkoittaa, että kaikki tiedot poistetaan. Suunnitelman ohjaus pysäytti peruuttamattoman tietojen katoamisen ennen sen käyttöönottoa.

Tapaus 2 — Paluu löysästä oletusarvosta. Ryhmä pyysi tekoälyltä palomuurikoodia. Esimerkin suorittamiseksi tekoäly loi yksinkertaisen säännön 0.0.0.0/0, mikä tarkoittaa "julkista Internetissä". Insinööri huomasi tämän koodia lukiessaan ja kavensi pääsyä vain yrityksen IP-alueelle. Jos se toteutettaisiin ilman auditointia, tietokanta olisi avoin koko internetille.

Tapaus 3 – Tilavuoto estetty. Nuorempi jäsen aikoi liittää terraform.tfstate-tiedoston koskemattomana julkiseen työkaluun Terraform-ongelman ratkaisemiseksi. Vanhempi insinööri pysähtyi: tila sisälsi selväkielisen tietokannan salasanan. Sen sijaan ongelmaa kuvaava salattu yhteenveto jaettiin ja tila siirrettiin etäsalattuun taustajärjestelmään.

Neljä kopioitavaa mallia

1) IaC-resurssien luominen (suojattu oletus):

Tehtäväsi: vanhempi pilviinfrastruktuuri-insinööri. [Pilvi, esim. AWS] for [työkalu, esim. Terraform] luo koodia. Tarkoitus: [tarkoitus].Turvallisuussäännöt: julkinen (0.0.0.0/0) pääsy AUKI;aloita kapeimmalla luvalla; ota salaus käyttöön; pura salaisuudet muuttujiksi, älä upota niitä koodiin; Tarkista asetukset, jotka voivat johtaa poistamiseen/uudelleen luomiseen. Selitä jokainen lähde lyhyellä kommentilla.

2) Suunnittele tulostarkastus:

Alla on [Terraform plan / Ansible check] -tulostus. Kerro minulle: (1) kuinka monta resurssia lisätään/muutetaan/poistetaan, (2) merkitse myös "tuhoa" tai "pakottaa korvaaminen" -rivit, jotka aiheuttavat tietojen katoamisen riskin, (3) luettele kaikki muutokset, jotka vaikuttavat odottamattomilta tai vaarallisilta. Tulos: [suunnitelma]

3) IaC-koodin turvatarkastus:

Tarkista seuraava IaC-koodi turvallisuuden varmistamiseksi: (1) onko siellä liian laajat käyttöoikeudet, (2) onko salaus pois päältä, (3) onko koodiin upotettu salaisuuksia, (4) onko julkisesti saatavilla olevia resursseja? Ehdota korjausta jokaiselle löydökselle. Koodi: [naamiokoodi]

4) Jaa muutos turvallisiin osiin:

En halua toteuttaa tätä suurta infrastruktuurimuutosta [selitys] kerralla. Jaa se pieniin, itsenäisiin vaiheisiin, joihin on helppo palata. Jokaisen vaiheen osalta: mitä muutoksia, mihin minun tulee kiinnittää huomiota suunnitelmassa, miten voin peruuttaa sen, jos tulee ongelmia?

Heikko kehote / Vahva kehote

Heikko kehote:

Kirjoita Terraform-koodi, joka luo palvelimen AWS:lle.

Alue, koko, turvallisuus, verkko, salaus ovat epäselviä. Tekoäly tuottaa löysimmät, selkeimmät oletusasetukset toimiakseen – jos se otettaisiin tuotantoon, se olisi haavoittuvuus.

Tehokas kehotus:

Tehtäväsi: vanhempi pilviinfrastruktuuri-insinööri. Määritä web-palvelin Terraformilla AWS eu-central-1:ssä: t3.small, vain yrityksen IP-alueelta (annan sen muuttujalla), portti 443 on auki, levy on salattu, ei julkista pääsyä, tarrat ovat pakollisia. Muuttujalle paljastetaan salaisuudet. Koodin jälkeen: Kerro minulle 3 rivityyppiä, joihin minun tulee kiinnittää huomiota suunnitelmassa ennen sen käyttöönottoa ja selitä paluupolku.

Vaihe

Riski

turvakaide

koodin kirjoittaminen

Löysä oletus (julkinen)

Pienin lupa + lukea

suunnittele/tarkista

Poistaminen huomaamatta

Suunnittele tarkastus, tuhoa merkinnät

Käytä

Suuri kertaluonteinen muutos

Pienet, käännettävät askelmat

valtion hallinto

Lasitteen vuoto, vääristymä

Etäsalattu taustajärjestelmä + lukitus

Yleisiä virheitä

  • Hakeminen lukematta suunnitelmaa. Suunnitelmassa ennakoidaan poistamista ja jälleenrakennusta; Jos se ohitetaan, tietojen menetys on väistämätöntä.
  • Ei huomaa löysää oletusta. AI-esiintymät tuottavat usein 0.0.0.0/0; Jos se siirretään tuotantoon, se tarkoittaa avointa lähdekoodia koko Internetiin.
  • Vuotava tila. Tilatiedoston vieminen tekoälyyn tai avoimeen tietovarastoon paljastaa selkotekstisalaisuuksia.
  • Salaisuuksien upottaminen koodiin. Salasanan kirjoittaminen IaC-koodiin on jatkuva vuoto koodin versiohistoriassa.
  • Uudelleenrakentamisen erehtyminen päivitykseen. Voimien korvaavan rivin huomiotta jättäminen johtaa tietojen menetykseen tietokantoissa.
Vinkki: Vaikka annat suunnitelman tulosteen tekoälylle tarkistettavaksi, perusta lopullinen päätös omaan tietoosi, älä suunnitelman tekstiin. Tekoäly tekee yhteenvedon suunnitelmasta ja merkitsee riskialttiita linjoja; mutta vastaus kysymykseen "onko tämä poisto hyväksyttävä" riippuu liiketoimintasi kontekstista.

Yhteenvetona

IaC tuo toistettavuuden ja dokumentoinnin hallitsemalla infrastruktuuria versioitavan koodin avulla manuaalisten napsautusten sijaan. Tekoäly on tehokas kumppani tämän koodin kirjoittamisessa, kuvaamisessa ja sen turvallisuuden tarkistamisessa. Mutta IaC:n voima on sen vaara: yksi linja voi pyyhkiä pois koko infrastruktuurin. Ajattele deklaratiivisesti, aloita kapeimmalla luvalla, korjaa löysät oletukset, pidä salaisuudet poissa koodista ja tilasta. Tärkein suojakaide on suunnittelu-/tarkistusvaihe: älä koskaan suorita lukematta poisto- ja uudelleenrakennusrivit. Pidä osavaltio salattuna, lukittuna ja etänä. Koodi on tekoälyn, päätös on sinun.

Sovellustehtävä

Valitse pieni infrastruktuurikohde (esimerkiksi yksi virtuaalikone ja suojaussääntö). Yllä olevan "IaC-resurssien luonti" -mallin avulla pyydä tekoälyltä koodi turvallisilla oletuksilla. Tarkista koodi "IaC-koodin suojaustarkistus" -mallin avulla ja yritä löytää ainakin yksi löysä asetus. Jos mahdollista, suorita suunnitelma/--check testitilillä ja tarkista tulos "Plan output check" -mallin avulla; Katso, onko olemassa poista- tai luomisriviä. Kirjoita havaintosi ja kuinka turvaat tilan 6 pisteessä.

tarkistuslista

  • [ ] Määritinkö pilven, työkalun ja version tekoälylle ja pyysinkö koodia pienimmällä luvalla?
  • [ ] Olenko tarkistanut koodin löysät oletusasetukset (0.0.0.0/0, suljettu salaus)?
  • [ ] Olenko purkanut muuttujan salaisuudet sen sijaan, että olisin upottanut ne koodiin?
  • [ ] Luinko suunnitelman/tarkistuksen tulosteen ja merkitsinkö poistorivit ennen hakemuksen jättämistä?
  • [ ] Olenko arvioinut "pakottaa korvaamisen"/uudelleenrakentamisen vaikutusta tietoihin?
  • Enkö pitänyt [ ] State -tiedostoa salattuna, lukittuna etätaustaohjelmassa ja vuotanut sen ulos?