Gestione della conservazione dei log in AWS: regole del ciclo di vita S3 e migliori pratiche per Terraform
Uno dei modi più semplici per far crescere i costi cloud inosservati è attraverso la conservazione dei log. Molte organizzazioni comprendono l'importanza di raccogliere log, meno ancora capiscono come ottimizzare e utilizzare i dati ottenuti dai log, e ancora meno capiscono quanto tempo questi log debbano essere conservati. È importante capire con quale frequenza la tua azienda accede a questi log e se la tua attuale strategia di archiviazione è ancora in linea con le esigenze aziendali.
Lavorando con un cliente per rivedere la nostra strategia di loging, abbiamo scoperto un modello comune: i log venivano conservati più a lungo del necessario, i costi di stoccaggio continuavano a crescere e non esisteva una politica standardizzata del ciclo di vita tra gli ambienti.
Per affrontare questo problema, abbiamo sviluppato una politica formale di conservazione dei log supportata dalla gestione del ciclo di vita di Amazon S3 e dall'Infrastructure as Code (IaC). Il risultato è stato un approccio più coerente alla gestione dei log, costi di stoccaggio ridotti e una strategia di conservazione meglio allineata ai requisiti operativi e di conformità.
Inizia con lo scopo, non con le classi di archiviazione
Uno degli errori più grandi che commettono le organizzazioni è partire dalla tecnologia piuttosto che dalle esigenze aziendali.
Molte politiche di retention si basano su scenari "e se":
- E se ci servissero i registri di due anni fa?
- E se un'indagine richiedesse dati storici di 12 mesi fa?
- E se qualcuno chiedesse documenti che non abbiamo più?
Sebbene queste domande siano ragionevoli, spesso portano a trattenere tutto indefinitamente.
Inizia invece con alcune domande semplici:
- Qual è il vero scopo di questi tronchi?
- Quanto spesso vengono consultati?
- Quando vengono accessibili, che valore aziendale offrono?
- Esistono requisiti di conformità che determinano i periodi di conservazione?
- Chi detiene la decisione di conservare i registri?
- Come possiamo ridurre i costi di stoccaggio senza sacrificare nulla?
Sebbene questo vari da azienda a azienda, in molti casi i team scoprono che i log più vecchi di qualche mese sono raramente accessibili e forniscono un valore operativo limitato. Sono lì per rassicurarsi, e prima che tu te ne accorga, hai terabyte su terabyte di costi indesiderati che generano spazio e disordine
L'obiettivo finale dovrebbe essere conservare i log abbastanza a lungo da supportare indagini, risoluzione di problemi, conformità e audit, evitando al contempo costi di archiviazione inutili.
Ambienti diversi hanno esigenze diverse
Non tutti gli ambienti richiedono lo stesso periodo di conservazione.
I log di produzione spesso supportano audit, risposta agli incidenti e indagini di sicurezza. I log di sviluppo sono tipicamente utilizzati per il debug a breve termine e possono essere solitamente conservati per periodi molto più brevi.
La nostra strategia di fidelizzazione si basava su requisiti specifici per l'ambiente. Di seguito un esempio di come può apparire questa situazione.
Produzione
Trattenuta: 12 mesi
I log di produzione richiedono la massima conservazione perché supportano:
- Indagini sulla sicurezza
- Risposta agli incidenti
- Requisiti di conformità e audit
- Analisi operativa storica
Strategia del ciclo di vita:
- Giorni 0–30: S3 Standard
- Giorni 31–90: S3 Standard-IA
- Giorni 91–365: Recupero flessibile del ghiacciaio S3
- Cancella dopo 12 mesi
QA
Conservazione: 90 giorni
I log QA supportano principalmente:
- Validazione del rilascio
- Analisi di regressione
- Risoluzione dei problemi storici
Strategia del ciclo di vita:
- Giorni 0–60: S3 Standard-IA
- Cancella dopo 90 giorni
Sviluppo
Conservazione: 30 giorni
I log di sviluppo sono utilizzati principalmente per:
- Debug delle applicazioni
- Risoluzione dei problemi
- Supporto allo sviluppo
Strategia del ciclo di vita:
- Giorni 0–30: S3 Standard-IA
- Cancella dopo 30 giorni
Adattando la fidelizzazione a ciascun ambiente, abbiamo evitato di applicare costosi requisiti di mantenimento a livello di produzione dove non erano necessari.
Scegliere le classi giuste di storage S3
Amazon S3 offre diverse classi di storage, ciascuna progettata per diversi modelli di accesso.
La lezione chiave è che la selezione delle classi di storage dovrebbe essere guidata dall'uso effettivo piuttosto che dalle assunzioni.
Alcune domande da considerare:
- Con quale frequenza i log vengono frequentemente consultati?
- Ci sono alcuni tronchi che valgono più di altri?
- Com'è configurato il nostro attuale bucket S3?
- Vengono raramente accessibili dopo il primo mese?
- Quanto velocemente devono essere recuperati?
- I costi di recupero sono accettabili?
Per il nostro caso d'uso:
S3 Standard
Utilizzato per i registri di produzione appena creati dove l'accesso immediato è importante.
S3 Standard-IA
Utilizzato quando i log sono ancora occasionalmente accessibili, ma non richiedono più l'urgenza degli standard.
Recupero flessibile del ghiacciaio S3
Utilizzato per archivi a lungo termine dove l'accesso è raro, ma il recupero rimane possibile se necessario.
AWS fornisce una panoramica completa delle classi di storage S3 disponibili e dei loro compromessi, che si può trovare qui:
https://aws.amazon.com/s3/storage-classes/
Infrastructure as Code rende la governance più semplice
Una politica di mantenimento è preziosa solo se viene applicata in modo coerente.
Invece di configurare manualmente le regole del ciclo di vita tra gli ambienti, abbiamo implementato le nostre politiche utilizzando Terraform.
Questo ha portato diversi benefici:
- Configurazioni riutilizzabili del ciclo di vita
- Modifiche controllate in versione
- Revisione tra pari tramite pull request
- Distribuzione coerente tra gli ambienti
- Riduzione del rischio di deriva della configurazione
Infrastructure as Code ha trasformato la gestione della retention da uno sforzo di configurazione una tantum in un processo operativo ripetibile.
Proteggiti dagli errori
Le politiche del ciclo di vita automatizzano la cancellazione e le transizioni di archiviazione. Questo li rende potenti, ma anche potenzialmente pericolosi.
Prima di abilitare scadenza e transizioni automatiche:
- Abilita la versione del bucket S3
- Convalidare le regole del ciclo di vita in un ambiente non produttivo
- Conferma i calcoli di tempistica della transizione
- Comportamento di scadenza degli oggetti di test
- Verifica i flussi di lavoro di recupero
- Assicurati che i secchi adeguati siano mirati
Il versioning offre un ulteriore livello di protezione contro cancellazioni accidentali o regole del ciclo di vita mal configurate.
Test prima della produzione
Abbiamo stabilito un semplice processo di validazione prima del lancio:
- Crea un bucket dedicato allo sviluppo.
- Archive development logs nel bucket.
- Applica le politiche proposte per il ciclo di vita.
- Valida le transizioni di classe di storage.
- Verifica il comportamento di scadenza.
- Documenta i risultati.
- Ottieni l'approvazione prima di passare ad altri dev bucket,
- Promozione verso ambienti superiori
Questo approccio ci ha permesso di individuare precocemente i problemi di configurazione minimizzando i rischi.
La governance conta
La conservazione dei log non dovrebbe essere di proprietà di un singolo ingegnere.
Politiche di retention di successo richiedono la collaborazione tra:
- Team DevOps
- Squadre di sicurezza
- Squadre di conformità
- Leadership nelle infrastrutture
La proprietà chiara aiuta a garantire che i periodi di mantenimento rimangano allineati ai requisiti aziendali e normativi man mano che i sistemi si evolvono.
Considerazioni finali
La politica di conservazione dei log più efficace non è necessariamente quella che conserva i log più a lungo.
È quella che bilancia:
- Costo
- Conformità
- Sicurezza
- Visibilità operativa
- Semplicità
Le organizzazioni spesso conservano i dati a causa di esigenze future ipotetiche piuttosto che di reali esigenze aziendali. Comprendendo come vengono utilizzati i log, allineando i periodi di conservazione alle esigenze specifiche dell'ambiente, sfruttando le classi di storage S3 appropriate e le transizioni di storage, e implementando politiche tramite IaC, i team possono ridurre significativamente i costi di storage mantenendo la visibilità di cui hanno effettivamente bisogno.
Soprattutto, ricorda che ogni organizzazione è diversa. La strategia del ciclo di vita descritta qui ha funzionato bene per il nostro caso, ma i periodi di conservazione, le classi di archiviazione e le tempistiche archivistiche dovrebbero sempre essere guidati dai tuoi requisiti operativi e dagli obblighi di conformità.
Autore
Ti è piaciuto quello che hai sentito? Hai domande su cosa sia giusto per te? Ci piacerebbe parlare! Contattaci