Le migliori pratiche di backend - AWS Guida prescrittiva

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Le migliori pratiche di backend

L'utilizzo di un backend remoto adeguato per archiviare il file di stato è fondamentale per consentire la collaborazione, garantire l'integrità dei file dello stato tramite il blocco, fornire backup e ripristino affidabili, integrarsi con i flussi di lavoro CI/CD e sfruttare le funzionalità avanzate di sicurezza, governance e gestione offerte da servizi gestiti come HCP Terraform.

Terraform supporta vari tipi di backend come Kubernetes, Consul e HTTP. HashiCorp Tuttavia, questa guida si concentra su Amazon S3, che è una soluzione di backend ottimale per la maggior parte degli utenti. AWS

Come servizio di storage di oggetti completamente gestito che offre durabilità e disponibilità elevate, Amazon S3 offre un backend sicuro, scalabile e a basso costo per la gestione dello stato di Terraform su. AWS L'impronta globale e la resilienza di Amazon S3 superano ciò che la maggior parte dei team può ottenere gestendo autonomamente lo storage di stato. Inoltre, l'integrazione nativa con controlli di AWS accesso, opzioni di crittografia, funzionalità di controllo delle versioni e altri servizi rende Amazon S3 una comoda scelta di backend.

Questa guida non fornisce indicazioni di back-end per altre soluzioni come Kubernetes o Consul perché il pubblico di riferimento principale sono i clienti. AWS Per i team che lavorano a pieno titolo Cloud AWS, Amazon S3 è in genere la scelta ideale rispetto ai cluster Kubernetes o Consul. HashiCorp La semplicità, la resilienza e la stretta AWS integrazione dello storage di stato Amazon S3 forniscono una base ottimale per la maggior parte degli utenti che AWS seguono le best practice. I team possono sfruttare la durabilità, le protezioni di backup e la disponibilità dei AWS servizi per mantenere lo stato remoto di Terraform altamente resiliente.

Seguire i consigli di backend in questa sezione porterà a basi di codice Terraform più collaborative, limitando al contempo l'impatto di errori o modifiche non autorizzate. Implementando un backend remoto ben progettato, i team possono ottimizzare i flussi di lavoro Terraform.

Usa Amazon S3 per lo storage remoto

L'archiviazione dello stato di Terraform in remoto in Amazon S3 e l'implementazione del blocco dello stato e del controllo della coerenza utilizzando Amazon DynamoDB offrono importanti vantaggi rispetto allo storage locale di file. Lo stato remoto consente la collaborazione in team, il monitoraggio delle modifiche, le protezioni di backup e il blocco remoto per una maggiore sicurezza.

L'utilizzo di Amazon S3 con la classe di storage S3 Standard (impostazione predefinita) anziché lo storage locale temporaneo o le soluzioni autogestite offre una durabilità del 99,25% e una disponibilità del 99,99% per prevenire la perdita accidentale dei dati dello stato. AWS i servizi gestiti come Amazon S3 e DynamoDB forniscono accordi sui livelli di servizio (SLA) che superano ciò che la maggior parte delle organizzazioni può ottenere gestendo autonomamente lo storage. Affidati a queste protezioni per mantenere accessibili i backend remoti.

Abilita il blocco remoto dello stato

Il blocco di DynamoDB limita l'accesso allo stato per impedire operazioni di scrittura simultanee. Ciò impedisce modifiche simultanee da parte di più utenti e riduce gli errori.

Esempio di configurazione del backend con blocco dello stato:

terraform { backend "s3" { bucket = "myorg-terraform-states" key = "myapp/production/tfstate" region = "us-east-1" dynamodb_table = "TerraformStateLocking" } }

Abilita il controllo delle versioni e i backup automatici

Per una protezione aggiuntiva, abilita il controllo automatico delle versioni e i backup utilizzando i backend di Amazon AWS Backup S3. Il controllo delle versioni conserva tutte le versioni precedenti dello stato ogni volta che vengono apportate modifiche. Consente inoltre di ripristinare istantanee dello stato di funzionamento precedente, se necessario, per ripristinare le modifiche indesiderate o il ripristino in caso di incidenti.

Ripristina le versioni precedenti, se necessario

I bucket di stato Amazon S3 con versione semplificano l'annullamento delle modifiche ripristinando uno snapshot precedente noto in buono stato. Questo aiuta a proteggere da modifiche accidentali e fornisce funzionalità di backup aggiuntive.

Usa HCP Terraform

HCP Terraform fornisce un'alternativa di backend completamente gestita alla configurazione del proprio storage di stato. HCP Terraform gestisce automaticamente l'archiviazione sicura dello stato e della crittografia sbloccando funzionalità aggiuntive.

Quando si utilizza HCP Terraform, lo stato viene archiviato in remoto per impostazione predefinita, il che consente la condivisione e il blocco dello stato all'interno dell'organizzazione. I controlli dettagliati delle politiche aiutano a limitare l'accesso e le modifiche statali.

Le funzionalità aggiuntive includono integrazioni per il controllo delle versioni, barriere politiche, automazione del flusso di lavoro, gestione delle variabili e integrazioni Single Sign-On con SAML. Puoi anche utilizzare la policy di Sentinel come codice per implementare i controlli di governance.

Sebbene HCP Terraform richieda l'utilizzo di una piattaforma SaaS (Software as a Service), per molti team i vantaggi in termini di sicurezza, controllo degli accessi, controlli automatici delle policy e funzionalità di collaborazione lo rendono una scelta ottimale rispetto allo storage di stato a gestione automatica con Amazon S3 o DynamoDB.

La facile integrazione con servizi come GitHub e GitLab con configurazioni minori piace anche agli utenti che adottano appieno gli strumenti cloud e SaaS per flussi di lavoro di squadra migliori.

Facilita la collaborazione in team

Usa i backend remoti per condividere i dati sullo stato tra tutti i membri del tuo team Terraform. Ciò facilita la collaborazione perché offre all'intero team la visibilità sui cambiamenti dell'infrastruttura. I protocolli di backend condivisi combinati con la trasparenza della cronologia dello stato semplificano la gestione interna delle modifiche. Tutte le modifiche all'infrastruttura passano attraverso la pipeline consolidata, che aumenta l'agilità aziendale in tutta l'azienda.

Migliora la responsabilità utilizzando AWS CloudTrail

Esegui l'integrazione AWS CloudTrail con il bucket Amazon S3 per acquisire le chiamate API effettuate allo state bucket. Filtra CloudTrail gli eventi per tracciarli PutObject DeleteObject, e altre chiamate pertinenti.

CloudTrail i log mostrano l' AWS identità del principale che ha effettuato ogni chiamata API per la modifica dello stato. L'identità dell'utente può essere associata all'account di un computer o ai membri del team che interagiscono con lo storage di backend.

Combina CloudTrail i log con il controllo delle versioni dello stato di Amazon S3 per collegare le modifiche all'infrastruttura al principale che le ha applicate. Analizzando più revisioni, puoi attribuire eventuali aggiornamenti all'account del computer o al membro del team responsabile.

Se si verifica una modifica involontaria o dirompente, il controllo delle versioni dello stato offre funzionalità di rollback. CloudTrail traccia la modifica all'utente in modo da poter discutere dei miglioramenti preventivi.

Ti consigliamo inoltre di applicare le autorizzazioni IAM per limitare l'accesso allo State Bucket. Nel complesso, il controllo delle versioni e il CloudTrail monitoraggio di S3 supportano il controllo in tutte le modifiche all'infrastruttura. I team acquisiscono maggiori responsabilità, trasparenza e capacità di controllo nella storia dello stato di Terraform.

Separa i backend per ogni ambiente

Usa backend Terraform distinti per ogni ambiente applicativo. I backend separati isolano lo stato tra sviluppo, test e produzione.

Riduci la portata dell'impatto

Lo stato di isolamento aiuta a garantire che le modifiche negli ambienti inferiori non influiscano sull'infrastruttura di produzione. Gli incidenti o gli esperimenti negli ambienti di sviluppo e test hanno un impatto limitato.

Limita l'accesso alla produzione

Blocca le autorizzazioni per il backend dello stato di produzione per consentire l'accesso in sola lettura per la maggior parte degli utenti. Limita chi può modificare l'infrastruttura di produzione alla pipeline CI/CD e ai ruoli di Break Glass.

Semplifica i controlli di accesso

La gestione delle autorizzazioni a livello di backend semplifica il controllo degli accessi tra gli ambienti. L'utilizzo di bucket S3 distinti per ogni applicazione e ambiente significa che è possibile concedere ampie autorizzazioni di lettura o scrittura su interi bucket di backend.

Evita gli spazi di lavoro condivisi

Sebbene sia possibile utilizzare gli spazi di lavoro Terraform per separare gli stati tra gli ambienti, backend distinti offrono un isolamento maggiore. Se disponi di spazi di lavoro condivisi, gli incidenti possono comunque avere un impatto su più ambienti.

Mantenere i backend dell'ambiente completamente isolati riduce al minimo l'impatto di ogni singolo guasto o violazione. I backend separati allineano inoltre i controlli di accesso al livello di sensibilità dell'ambiente. Ad esempio, è possibile fornire protezione da scrittura per l'ambiente di produzione e un accesso più ampio per gli ambienti di sviluppo e test.

Monitora attivamente l'attività dello stato remoto

Il monitoraggio continuo dell'attività dello stato remoto è fondamentale per rilevare tempestivamente potenziali problemi. Cerca sblocchi, modifiche o tentativi di accesso anomali.

Ricevi avvisi in caso di sblocchi sospetti

La maggior parte delle modifiche di stato dovrebbe avvenire tramite pipeline CI/CD. Genera avvisi se gli stati sbloccati avvengono direttamente tramite le workstation degli sviluppatori, il che potrebbe segnalare modifiche non autorizzate o non testate.

Monitora i tentativi di accesso

Gli errori di autenticazione nei bucket di stato potrebbero indicare un'attività di ricognizione. Notate se più account stanno tentando di accedere allo stato o se compaiono indirizzi IP insoliti, che segnalano credenziali compromesse.