Câștiguri:
- Abilitatea de a produce cod IaC (Terraform, Ansible) cu inteligență artificială cu cele mai înguste permisiuni și valori implicite sigure și de a înțelege abordarea declarativă
- Abilitatea de a preveni pierderea de date prin citirea și capturarea liniilor de ștergere și înlocuire forțată înainte de a aplica rezultatul planului/verificarii
- Abilitatea de a preveni scurgerile secrete prin păstrarea fișierului de stare criptat, blocat, în backend-ul de la distanță și împărțirea modificărilor în pași mici, reversibile
Managementul infrastructurii ca cod (IaC): Terraform, Ansible și Plan Control cu AI
În trecut, configurarea unui server se făcea cu clicuri manuale, comenzi și note personale; Rezultatul au fost servere „fulg de zăpadă” ireproductibile pe care nimeni nu știa exact cum să le configureze. Infrastructura ca cod (IaC) este abordarea care pune capăt acestui haos: serverele, rețelele, regulile de securitate sunt definite nu manual, ci prin fișiere text versionabile (cod). Când rulați acest cod, infrastructura este configurată exact așa cum ați scris-o - aceeași, documentată și repetabilă de fiecare dată. Cele mai comune instrumente sunt Terraform și CloudFormation pentru infrastructura cloud și Ansible pentru configurarea serverului. Aici AI este foarte priceput să scrie, să explice și să revizuiască acest cod IaC. Dar puterea IaC este și pericolul său: o linie greșită poate distruge o întreagă infrastructură; astfel încât AI scrie cod, citiți „planul”, îl aprobați și îl executați.
În această unitate, vom discuta despre abordarea declarativă, distincția plan/aplica, securitatea statului și idempotenta; Veți învăța generarea IaC cu AI și cea mai critică abilitate, „plan control”.
Gândind declarativ: „ce-ar fi dacă”, nu „cum să faci”
Majoritatea instrumentelor IaC sunt declarative: descrii starea finală a sistemului („să spunem 3 servere web, 1 echilibrator de încărcare”), instrumentul în sine calculează cum să ajungi la acea stare. Acest lucru este diferit de scrierea unui script ("fă asta, apoi fă asta" pas cu pas). Marele avantaj al abordării declarative este idempotitatea: chiar dacă rulați codul de zece ori, rezultatul este același, deoarece instrumentul verifică dacă starea dorită există deja, iar dacă o face, nu o atinge. Amintiți-vă această diferență atunci când scrieți IaC la AI: îl faceți să spună „lasă starea acestei infrastructuri”, nu „rulați aceste comenzi”.
Planificați/aplicați: cea mai importantă balustradă de siguranță
Caracteristica de salvare a vieții a IaC este pasul planului. În Terraform, planul terraform, în Ansible, modul --check produce o previzualizare a „ce se va schimba dacă îl aplic” înainte de a rula codul: „2 resurse vor fi adăugate, 1 se va schimba, 0 va fi șters”. Acesta este singurul mod de a vă compara intenția cu realitatea înainte de implementare. Regula critică: nu aplica niciodată fără a citi planul. Căutați în special liniile „distruge”; Dacă vedeți „12 vor fi șterse” în loc de „1 va fi schimbat” din cauza unei greșeli de tipar, planul v-a salvat de la dezastru. După imprimarea codului în AI, spuneți-i „examinați planul de ieșire linie cu linie cu mine, marcați fiecare linie care conține ștergere/recreare”.
Atenție: Unele modificări ale Terraform „distrug și recreează” o resursă, mai degrabă decât „actualizarea în loc”. Aceasta înseamnă pierderea de date pentru o bază de date. Ignorarea -/+ sau „forțează înlocuirea” în rezultatul planului este una dintre cele mai scumpe greșeli.
Dosar de stat: înregistrarea secretelor și adevărului
Instrumente precum Terraform păstrează starea actuală a infrastructurii pe care o administrează într-un fișier de stare. Acest fișier este critic din două motive. În primul rând, poate conține secrete (parolele bazei de date, cheile pot intra în stare în text simplu); Prin urmare, nu lipiți niciodată starea într-un depozit public sau AI, păstrați-l într-un backend la distanță criptat și cu acces restricționat. În al doilea rând, dacă statul este corupt sau pierdut, vehiculul pierde legătura dintre infrastructura reală și infrastructura imaginată; Prin urmare, o copie de rezervă a stării și un mecanism de blocare (blocare care împiedică două persoane să o rupă în același timp) sunt esențiale.
Pas cu pas: Securizează IaC cu AI
- Intenția statului și furnizorul. „2 servere pe AWS, cu Terraform, în această regiune, această dimensiune și un grup de securitate.” Dacă cloud-ul, instrumentul și versiunea sunt clare, AI-ul produce sintaxa corectă.
- Solicitați valori implicite de securitate. „Deschideți grupul de securitate, activați criptarea, extrageți secretele în variabilă, acordați acces public.” AI poate genera mostre libere în mod implicit.
- Citiți și înțelegeți codul. Înțelegeți fiecare resursă, fiecare permisiune, rând cu rând. Nu aplicați o permisiune pe care nu o înțelegeți.
- Obțineți un plan și auditați-l. Rulați planul/--verificați, examinați rezultatul cu AI, marcați liniile de ștergere și reconstruire.
- Aplicați mic și reversibil. Implementați o schimbare mare în bucăți mici, nu toate deodată. Cunoașteți drumul înapoi la fiecare pas.
- Protejați statul. Utilizați la distanță, backend criptat și blocare; Niciodată starea de scurgere.
trei mini cutii
Cazul 1 — Planul a recuperat o bază de date. Un inginer a vrut să mărească dimensiunea unei baze de date cu codul Terraform pe care l-a produs cu AI. În timp ce se aștepta ca „1 să se schimbe” în ieșirea planului de terraformă, a văzut „1 pentru a distruge, 1 pentru a adăuga” – parametrul pe care l-a ales a declanșat o reconstrucție, nu o actualizare in loc, ceea ce înseamnă că toate datele vor fi șterse. Controlul planului a oprit pierderile ireversibile de date înainte de a fi implementat.
Cazul 2 — Revenire de la implicit liber. O echipă a cerut AI un cod de firewall. Pentru a rula exemplul, AI a generat o regulă simplă de 0.0.0.0/0, adică „public pe internet”. Inginerul a observat acest lucru în timp ce a citit codul și a restrâns accesul doar la intervalul IP al companiei. Dacă ar fi implementată fără a fi auditată, baza de date ar fi deschisă întregului internet.
Cazul 3 – Scurgerea de stat a fost prevenită. Un membru junior era pe cale să lipească fișierul terraform.tfstate intact într-un instrument public pentru a rezolva o problemă Terraform. Inginerul senior sa oprit: starea conținea o parolă pentru baza de date cu text simplu. În schimb, a fost distribuit un rezumat decriptat care descrie problema, iar starea a fost mutată în backend-ul criptat de la distanță.
Patru șabloane copiabile
1) Generarea de resurse IaC (implicit sigur):
Rolul tău: inginer senior în infrastructură cloud. [Nor, de ex. AWS] pentru[instrument, de ex. Terraform] generează cod. Scop: [scop].Reguli de securitate: acces public (0.0.0.0/0) DESCHIS; începe cu permisiunea cea mai îngustă; activați criptarea; extrageți secrete în variabile, nu le încorporați în cod; Verificați setările care pot duce la ștergere/recreare. Explicați fiecare sursă cu un scurt comentariu.
2) Planificați auditul rezultatelor:
Mai jos este o ieșire [Terraform plan / Ansible check]. Spuneți-mi: (1) câte resurse vor fi adăugate/modificate/șterse, (2) marcați, de asemenea, liniile „distruge” sau „forțează înlocuirea” care prezintă un risc de pierdere a datelor, (3) enumerați orice modificări care par neașteptate sau periculoase. Ieșire: [plan]
3) Revizuirea securității codului IaC:
Examinați următorul cod IaC pentru securitate: (1) există acces/permisiuni prea largi, (2) criptarea este dezactivată, (3) există secrete încorporate în cod, (4) există resurse disponibile public? Sugerați o corecție pentru fiecare constatare. Cod: [cod mascat]
4) Împărțiți schimbarea în părți sigure:
Nu vreau să implementez această mare schimbare de infrastructură [explicație] dintr-o dată. Împărțiți-l în pași mici, independenți, la care puteți reveni ușor. Pentru fiecare pas: ce modificări, la ce ar trebui să fiu atent în plan, cum îl anulez dacă există probleme?
Prompt slab / Prompt puternic
Prompt slab:
Scrieți cod Terraform care creează un server pe AWS.
Regiunea, dimensiunea, securitatea, rețeaua, criptarea sunt neclare. AI produce cele mai slabe și mai explicite valori implicite pentru a funcționa - dacă ar fi pus în producție, ar fi o vulnerabilitate.
Solicitare puternică:
Rolul tău: inginer senior în infrastructură cloud. Definiti un server web cu Terraform pe AWS eu-central-1: t3.small, doar din intervalul IP corporate (o sa-l dau cu o variabila), portul 443 este deschis, discul este criptat, fara acces public, etichetele sunt obligatorii. Secretele sunt dezvăluite variabilei. După cod: Înainte de a-l implementa, spuneți-mi cele 3 tipuri de linii la care ar trebui să fiu atent în plan și explicați calea de întoarcere.
Scena
Risc
balustrada de siguranta
scrierea codului
Implicit liber (public)
Cea mai restrânsă permisiune + citire
planifica/verifica
Ștergeți fără să vă dați seama
Planificați inspecția, distrugeți marcajul
Aplicați
Schimbare majoră unică
Pași mici, reversibile
administratia de stat
Scurgeri de glazură, distorsiuni
Backend criptat de la distanță + blocare
Greșeli comune
- Aplicarea fără a citi planul. Planul prefigurează ștergerea și reconstrucția; Dacă este omisă, pierderea datelor este inevitabilă.
- Nu se observă implicitul liber. Instanțele AI produc frecvent 0.0.0.0/0; Dacă este mutat în producție, înseamnă open source pentru întregul internet.
- Stare de scurgere. Exportarea fișierului de stare în AI sau în depozitul deschis expune secretele text simplu.
- Încorporarea secretelor în cod. Scrierea parolei în codul IaC este o scurgere persistentă în istoricul versiunilor de cod.
- Confundarea unei reconstruiri cu o actualizare. Ignorarea liniei de înlocuire a forțelor va duce la pierderea datelor din bazele de date.
Sfat: Chiar și atunci când oferiți rezultatul planului unui AI pentru a-l revizui, bazați decizia finală pe propriile cunoștințe, nu pe textul planului. AI rezumă planul și semnalează liniile riscante; dar răspunsul la întrebarea „este această ștergere acceptabilă” depinde de contextul dvs. de afaceri.
Pe scurt
IaC oferă repetabilitate și documentare prin gestionarea infrastructurii cu cod versionabil, mai degrabă decât clicuri manuale. AI este un partener puternic în scrierea acestui cod, descrierea lui și revizuirea lui pentru securitate. Dar puterea IaC este pericolul său: o singură linie poate distruge întreaga infrastructură. Gândiți-vă declarativ, începeți cu permisiunea cea mai îngustă, remediați valorile implicite libere, păstrați secretele în afara codului și a stării. Cea mai importantă balustradă este pasul de planificare/verificare: nu executați niciodată fără a citi liniile de ștergere și reconstrucție. Păstrați statul criptat, blocat și la distanță. Codul este al AI, decizia este a ta.
Sarcina de aplicare
Alegeți o țintă de infrastructură mică (de exemplu, o singură mașină virtuală și o regulă de securitate). Cu șablonul „Generare resurse IaC” de mai sus, cereți AI un cod cu valori implicite sigure. Verificați codul cu șablonul „Evaluare securitate cod IaC” și încercați să găsiți cel puțin o setare liberă. Dacă este posibil, rulați plan/--check pe un cont de testare și examinați rezultatul cu șablonul „Planificați verificarea ieșirii”; Vedeți dacă există o linie de ștergere sau recreare. Notează-ți constatările și cum vei asigura starea în 6 puncte.
lista de verificare
- [ ] Am specificat cloud, instrumentul și versiunea pentru AI și am solicitat codul cu cele mai înguste permisiuni?
- [ ] Am verificat codul pentru valori implicite libere (0.0.0.0/0, criptare închisă)?
- [ ] Am extras secretele variabilei în loc să le încorporez în cod?
- [ ] Am citit rezultatul planului/verificarea și am marcat liniile de ștergere înainte de a aplica?
- [ ] Am evaluat impactul pierderii de date a liniilor de „înlocuire forțată”/reconstituire?
- Nu am păstrat fișierul [ ] State criptat, blocat, în backend-ul de la distanță și l-am scurs?