Unità 6 / 11

Gestione dell'infrastruttura come codice (IaC): Terraform, Ansible e Plan Control

Guadagni:

  • Capacità di produrre codice IaC (Terraform, Ansible) con intelligenza artificiale con i permessi più ristretti e valori predefiniti sicuri e comprendere l'approccio dichiarativo
  • Capacità di prevenire la perdita di dati leggendo e acquisendo l'eliminazione e forzando la sostituzione delle righe prima di applicare l'output del piano/controllo
  • Capacità di prevenire fughe di informazioni segrete mantenendo il file di stato crittografato, bloccato nel backend remoto e suddividendo le modifiche in passaggi piccoli e reversibili

Gestione dell'infrastruttura come codice (IaC): Terraform, Ansible e Plan Control con AI

In passato, la configurazione di un server veniva eseguita con clic manuali, comandi e note personali; Il risultato furono server "fiocchi di neve" irriproducibili che nessuno sapeva esattamente come configurare. Infrastructure as Code (IaC) è l'approccio che pone fine a questo caos: server, reti e regole di sicurezza sono definiti non manualmente, ma da file di testo (codice) modificabili. Quando esegui questo codice, l'infrastruttura viene configurata esattamente come l'hai scritta: la stessa, documentata e ripetibile ogni volta. Gli strumenti più comuni sono Terraform e CloudFormation per l'infrastruttura cloud e Ansible per la configurazione del server. Qui l’IA è molto abile nello scrivere, spiegare e rivedere questo codice IaC. Ma il potere dell’IaC è anche il suo pericolo: una linea sbagliata può spazzare via un’intera infrastruttura; quindi l'IA scrive il codice, tu leggi il "piano", lo approvi e lo esegui.

In questa unità discuteremo dell’approccio dichiarativo, della distinzione pianificare/applicare, della sicurezza dello stato e dell’idempotenza; Imparerai la generazione di IaC con l'intelligenza artificiale e l'abilità più critica, il "controllo del piano".

Pensare in modo dichiarativo: "e se", non "come fare"

La maggior parte degli strumenti IaC sono dichiarativi: descrivi lo stato finale del sistema ("diciamo 3 server web, 1 bilanciatore del carico"), lo strumento stesso calcola come arrivare a quello stato. Questo è diverso dallo scrivere uno script ("fai questo, poi fai quello" passo dopo passo). Il grande vantaggio dell'approccio dichiarativo è l'idempotenza: anche se si esegue il codice dieci volte, il risultato è lo stesso, perché lo strumento controlla se lo stato desiderato esiste già e, se esiste, non lo tocca. Ricorda questa differenza quando scrivi IaC all'IA: fai dire "lascia che questa infrastruttura sia stata", non "esegui questi comandi".

Pianifica/applica: la ringhiera di sicurezza più vitale

La caratteristica salvavita di IaC è la fase di pianificazione. In Terraform, terraform plan, in Ansible, la modalità --check produce un'anteprima di "cosa cambierà se lo applico" prima di eseguire il codice: "2 risorse verranno aggiunte, 1 cambierà, 0 verrà eliminata". Questo è l'unico modo per confrontare la tua intenzione con la realtà prima dell'implementazione. Regola fondamentale: non presentare mai domanda senza leggere il piano. Cerca soprattutto le linee "distruggi"; Se vedi "12 verranno eliminati" invece di "1 verrà modificato" a causa di un errore di battitura, il piano ti ha salvato dal disastro. Dopo aver stampato il codice sull'IA, chiedigli "esamina l'output del piano riga per riga con me, contrassegna ogni riga che contiene cancellazione/ricreazione".

Attenzione: alcune modifiche a Terraform "distruggono e ricreano" una risorsa anziché "aggiornarla sul posto". Ciò significa perdita di dati per un database. Ignorare -/+ o "sostituzione delle forze" nell'output del piano è uno degli errori più costosi.

Fascicolo di Stato: registro di segreti e verità

Strumenti come Terraform mantengono lo stato corrente dell'infrastruttura che gestiscono in un file di stato. Questo file è fondamentale per due motivi. Innanzitutto, può contenere segreti (le password del database e le chiavi possono rientrare nello stato in chiaro); Pertanto, non incollare mai lo stato in un repository pubblico o in un'intelligenza artificiale, ma conservalo in un backend remoto crittografato e con accesso limitato. In secondo luogo, se lo Stato viene corrotto o perduto, il veicolo perde il collegamento tra l’infrastruttura reale e l’infrastruttura immaginata; Pertanto, sono essenziali un backup dello stato e un meccanismo di blocco (blocco che impedisca a due persone di romperlo contemporaneamente).

Passo dopo passo: proteggere l'IaC con l'intelligenza artificiale

  1. Intento dello Stato e fornitore. "2 server su AWS, con Terraform, in questa regione, questa dimensione e un gruppo di sicurezza." Se il cloud, lo strumento e la versione sono chiari, l’intelligenza artificiale produce la sintassi corretta.
  2. Richiedi impostazioni di sicurezza predefinite. "Apri il gruppo di sicurezza, abilita la crittografia, estrai i segreti nella variabile, concedi l'accesso pubblico." L'intelligenza artificiale può generare campioni sfusi per impostazione predefinita.
  3. Leggere e comprendere il codice. Comprendi ogni risorsa, ogni permesso, riga per riga. Non applicare un'autorizzazione che non capisci.
  4. Ottieni un piano e verificalo. Esegui plan/--check, esamina l'output con l'intelligenza artificiale, contrassegna le righe di eliminazione e ricostruzione.
  5. Applicare piccolo e reversibile. Implementa un grande cambiamento in piccole parti, non tutto in una volta. Conosci la via del ritorno ad ogni passo.
  6. Proteggi lo Stato. Utilizza backend e blocco remoti e crittografati; Non perdere mai lo stato.

tre mini custodie

Caso 1: il piano ha recuperato un database. Un ingegnere voleva aumentare le dimensioni di un database con il codice Terraform prodotto con l'intelligenza artificiale. Mentre si aspettava "1 da modificare" nell'output del piano Terraform, ha visto "1 da distruggere, 1 da aggiungere": il parametro che ha scelto stava attivando una ricostruzione, non un aggiornamento sul posto, il che significa che tutti i dati sarebbero stati eliminati. Il controllo del piano ha bloccato la perdita irreversibile di dati prima che venisse implementata.

Caso 2 – Ritorno da un default sciolto. Un team ha chiesto all'IA un codice firewall. Per eseguire l'esempio, l'IA ha generato una semplice regola 0.0.0.0/0, che significa "pubblico su Internet". L'ingegnere se ne è accorto durante la lettura del codice e ha limitato l'accesso solo all'intervallo IP aziendale. Se fosse implementato senza essere sottoposto a verifica, il database sarebbe aperto a tutta Internet.

Caso 3: fuga di stato evitata. Un membro junior stava per incollare il file terraform.tfstate intatto in uno strumento pubblico per risolvere un problema di Terraform. Ingegnere senior arrestato: lo stato conteneva una password del database in testo normale. È stato invece condiviso un riepilogo decrittografato che descrive il problema e lo stato è stato spostato sul backend remoto crittografato.

Quattro modelli copiabili

1) Generazione di risorse IaC (impostazione predefinita sicura):

Il tuo ruolo: ingegnere senior dell'infrastruttura cloud. [Nuvola, ad es. AWS] for[strumento, ad es. Terraform] genera codice. Scopo: [scopo].Regole di sicurezza: accesso pubblico (0.0.0.0/0) OPEN; inizia con il permesso più ristretto; attivare la crittografia; estrai i segreti in variabili, non incorporarli nel codice; Controllare le impostazioni che potrebbero portare alla cancellazione/ricreazione. Spiega ciascuna fonte con un breve commento.

2) Pianificare l'audit degli output:

Di seguito è riportato un output [Piano Terraform/Verifica Ansible]. Dimmi: (1) quante risorse verranno aggiunte/modificate/eliminate, (2) contrassegna anche le righe "distruggi" o "sostituisci forzatamente" che comportano un rischio di perdita di dati, (3) elenca eventuali modifiche che sembrano inaspettate o pericolose. Risultato: [piano]

3) Revisione della sicurezza del codice IaC:

Esaminare il seguente codice IaC per motivi di sicurezza: (1) sono presenti accessi/autorizzazioni eccessivamente ampi, (2) la crittografia è disattivata, (3) sono presenti segreti incorporati nel codice, (4) sono presenti risorse disponibili pubblicamente? Suggerire la correzione per ciascun risultato. Codice: [codice mascherato]

4) Suddividere la modifica in parti sicure:

Non voglio implementare questo grande cambiamento infrastrutturale [spiegazione] tutto in una volta. Suddividilo in piccoli passaggi indipendenti a cui è facile tornare. Per ogni passaggio: cosa cambia, a cosa devo prestare attenzione nel piano, come lo annullo se ci sono problemi?

Prompt debole / Prompt forte

Suggerimento debole:

Scrivi il codice Terraform che crea un server su AWS.

Regione, dimensioni, sicurezza, rete e crittografia non sono chiare. L’intelligenza artificiale produce le impostazioni predefinite più vaghe ed esplicite per funzionare: se messa in produzione, rappresenterebbe una vulnerabilità.

Suggerimento potente:

Il tuo ruolo: ingegnere senior dell'infrastruttura cloud. Definire un server web con Terraform su AWS eu-central-1: t3.small, solo dall'intervallo IP aziendale (lo fornirò con una variabile), la porta 443 è aperta, il disco è crittografato, nessun accesso pubblico, le etichette sono obbligatorie. I segreti vengono rivelati alla variabile. Dopo il codice: prima di implementarlo, dimmi i 3 tipi di linea a cui dovrei prestare attenzione nel piano e spiegami il percorso di ritorno.

Palcoscenico

Rischio

ringhiera di sicurezza

scrivere codice

Default sciolto (pubblico)

Autorizzazione più ristretta + lettura

pianificare/controllare

Cancellare senza rendersene conto

Pianificare l'ispezione, distruggere la marcatura

Applicare

Importante cambiamento una tantum

Piccoli passi reversibili

amministrazione statale

Perdita di smalto, distorsione

Backend remoto crittografato + blocco

Errori comuni

  • Candidarsi senza leggere il piano. Il piano prevede la cancellazione e la ricostruzione; Se viene saltato, la perdita di dati è inevitabile.
  • Non notare il default allentato. Le istanze AI producono spesso 0.0.0.0/0; Se viene spostato in produzione, significa open source per l'intera Internet.
  • Stato che perde. L'esportazione del file di stato nell'intelligenza artificiale o nel repository aperto espone segreti in testo semplice.
  • Incorporamento di segreti nel codice. La scrittura della password nel codice IaC rappresenta una perdita persistente nella cronologia delle versioni del codice.
  • Confondere una ricostruzione per un aggiornamento. Ignorare la linea di sostituzione delle forze comporterà la perdita di dati nei database.
Suggerimento: anche quando si fornisce l'output del piano a un'intelligenza artificiale per la revisione, basare la decisione finale sulle proprie conoscenze, non sul testo del piano. L’intelligenza artificiale riassume il piano e segnala le linee rischiose; ma la risposta alla domanda "questa eliminazione è accettabile" dipende dal contesto aziendale.

In sintesi

IaC offre ripetibilità e documentazione gestendo l'infrastruttura con codice versione anziché con clic manuali. L'intelligenza artificiale è un partner potente nella scrittura di questo codice, nella sua descrizione e nella sua revisione per motivi di sicurezza. Ma il potere dell’IaC è il suo pericolo: una linea può spazzare via l’intera infrastruttura. Pensa in modo dichiarativo, inizia con il permesso più ristretto, correggi le impostazioni predefinite, mantieni i segreti fuori dal codice e dallo stato. Il guardrail più importante è la fase di pianificazione/controllo: non eseguire mai senza leggere le righe di eliminazione e ricostruzione. Mantieni State crittografato, bloccato e remoto. Il codice è dell'intelligenza artificiale, la decisione è tua.

Compito dell'applicazione

Scegli un target infrastrutturale di piccole dimensioni (ad esempio, una singola macchina virtuale e una regola di sicurezza). Con il modello "Generazione di risorse IaC" sopra, chiedi all'IA un codice con valori predefiniti sicuri. Ricontrolla il codice con il modello "Revisione della sicurezza del codice IaC" e prova a trovare almeno un'impostazione allentata. Se possibile, esegui plan/--check su un account di prova ed esamina l'output con il modello "Controllo output piano"; Verifica se è presente una riga di eliminazione o ricreazione. Scrivi i tuoi risultati e come proteggerai lo stato in 6 punti.

lista di controllo

  • [ ] Ho specificato cloud, strumento e versione per AI e ho richiesto il codice con le autorizzazioni più limitate?
  • [ ] Ho controllato se nel codice sono presenti valori predefiniti sciolti (0.0.0.0/0, crittografia chiusa)?
  • [ ] Ho estratto i segreti della variabile invece di incorporarli nel codice?
  • [ ] Ho letto l'output del piano/controllo e ho contrassegnato le righe di eliminazione prima di presentare domanda?
  • [ ] Ho valutato l'impatto della perdita di dati derivante dalla "sostituzione forzata"/ricostruzione delle linee?
  • Non ho mantenuto il file di stato [] crittografato, bloccato nel backend remoto e non l'ho fatto trapelare?