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:
- Tieni i bucket privati per impostazione predefinita e attiva il blocco dell'accesso pubblico a livello di account, se il fornitore lo offre.
- Separa i contenuti pubblici da quelli privati in bucket diversi, mai nello stesso con permessi misti.
- Servi i file pubblici tramite una CDN che legga dal bucket con credenziali proprie, invece di esporre il bucket direttamente.
- 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.
- 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.