☁ Cloud e DevOps

Object storage: bucket, classi di archiviazione e errori da evitare

Come funziona l'object storage compatibile S3, differenze con i dischi, classi di archiviazione, versioning, permessi e bucket resi pubblici per errore.

Foto caricate dagli utenti, backup, file di log, video, documenti generati: gran parte dei dati di un'applicazione moderna non sta in un database né sul disco di un server, ma in un object storage. È il servizio di archiviazione più usato nel cloud, economico e quasi illimitato, ma funziona in modo diverso da un disco tradizionale, e alcuni errori di configurazione sono tra le cause più frequenti di fughe di dati.

Cos'è l'object storage

In un object storage i dati sono salvati come oggetti dentro contenitori chiamati bucket. Ogni oggetto ha tre componenti:

  • una chiave, cioè il suo nome completo, come fatture/2026/marzo/0042.pdf;
  • i dati veri e propri;
  • dei metadati, come il tipo di contenuto, la data e etichette personalizzate.

Le barre nella chiave sembrano cartelle, ma non lo sono: lo spazio dei nomi è piatto, e le «cartelle» sono solo un modo di visualizzare prefissi comuni. Gli oggetti si leggono e si scrivono tramite API HTTP, non montando un disco.

L'interfaccia introdotta da Amazon S3 è diventata uno standard di fatto: molti altri fornitori e diversi software installabili offrono API compatibili S3, così che gli stessi strumenti e le stesse librerie funzionano con servizi diversi.

Differenze con dischi e file system

Aspetto Disco a blocchi File system di rete Object storage
Accesso Montato su una macchina Montato su più macchine Via API HTTP da ovunque
Modifica parziale di un file Sì Sì No, si riscrive l'oggetto intero
Capacità Fissa, da dimensionare Ampia Praticamente illimitata
Costo per gigabyte Alto Medio Basso
Adatto a Database, sistema operativo File condivisi tra server File statici, backup, archivi, dati per analisi

L'object storage non è adatto a dati che cambiano continuamente in piccole parti, come i file di un database. È invece ideale per file che si scrivono una volta e si leggono molte volte.

Classi di archiviazione

I fornitori offrono più classi con prezzi diversi in base alla frequenza di accesso prevista:

  • standard: per dati usati spesso, con il costo di archiviazione più alto e nessun costo di recupero;
  • accesso infrequente: archiviazione più economica, ma si paga per ogni lettura e spesso c'è una durata minima di conservazione;
  • archivio: costo molto basso, ma il recupero può richiedere minuti o ore ed è a pagamento.

Le regole di ciclo di vita spostano automaticamente gli oggetti tra classi in base all'età, ed eliminano quelli scaduti. Una regola tipica per i backup: classe standard per trenta giorni, poi archivio, poi cancellazione dopo un anno.

Funzioni da attivare

Versioning

Con il versioning attivo, sovrascrivere o cancellare un oggetto non lo distrugge: la versione precedente resta recuperabile. Protegge da errori umani e da programmi che sovrascrivono file per sbaglio. Va abbinato a una regola che elimini le versioni vecchie dopo un certo periodo, altrimenti lo spazio occupato cresce senza limiti.

Blocco degli oggetti

Per i backup, il blocco degli oggetti impedisce modifiche e cancellazioni fino a una data stabilita, anche da parte degli amministratori. È una difesa efficace contro il ransomware e contro chi ottiene credenziali con permessi di cancellazione.

Cifratura

La maggior parte dei servizi cifra i dati a riposo per impostazione predefinita. Per dati particolarmente sensibili si possono usare chiavi gestite da te, così che il fornitore non possa decifrarli senza il tuo consenso.

L'errore più grave: il bucket pubblico

Molte fughe di dati note sono nate da un bucket configurato per essere leggibile da chiunque. Spesso il motivo era banale: servire alcune immagini di un sito, e per comodità si è reso pubblico l'intero contenitore, compresi documenti e backup che non dovevano esserlo.

Le regole per evitarlo:

  1. Tieni i bucket privati per impostazione predefinita e attiva il blocco dell'accesso pubblico a livello di account, se il fornitore lo offre.
  2. Separa i contenuti pubblici da quelli privati in bucket diversi, mai nello stesso con permessi misti.
  3. Servi i file pubblici tramite una CDN che legga dal bucket con credenziali proprie, invece di esporre il bucket direttamente.
  4. Usa URL firmati per dare accesso temporaneo a un file privato, per esempio per scaricare una fattura: il link funziona solo per pochi minuti e solo per quell'oggetto.
  5. Dai alle applicazioni permessi minimi: un servizio che carica foto non ha bisogno di leggere i backup né di cancellare oggetti.

Altri dettagli pratici

  • Costi delle richieste: oltre allo spazio, si pagano spesso le operazioni. Milioni di file minuscoli possono costare più in richieste che in archiviazione.
  • Traffico in uscita: scaricare grandi quantità di dati verso Internet o un altro fornitore può essere la voce più alta della fattura.
  • Elenco degli oggetti: elencare bucket con milioni di oggetti è lento. Conviene progettare le chiavi con prefissi significativi, come data o identificativo del cliente.

Nel mio lavoro, quando analizzo un'infrastruttura esistente, il controllo dei permessi dei bucket è tra le prime verifiche: richiede pochi minuti e scopre problemi seri più spesso di quanto si pensi.

In sintesi

  • L'object storage salva oggetti in bucket e vi si accede via API HTTP, spesso compatibili S3.
  • È ideale per file statici, backup e archivi, non per dati che cambiano in piccole parti.
  • Classi di archiviazione e regole di ciclo di vita riducono i costi dei dati poco usati.
  • Versioning, blocco degli oggetti e cifratura proteggono da errori, ransomware e accessi indesiderati.
  • Tieni i bucket privati, separa i contenuti pubblici e usa CDN e URL firmati per condividere i file.
MM
Marco Marzaduri

Marco Marzaduri si occupa di cybersecurity, informatica forense e sviluppo web. Laureato in informatica e in psicologia, unisce l'analisi tecnica alla comprensione del fattore umano.

Leggi anche