Su Amazon S3 è possibile caricare oggetti (file), scegliere una classe di archiviazione, definire chi può accedervi, impostare l'eliminazione automatica e molto altro. La fatturazione è oraria e ogni oggetto può essere eliminato in qualsiasi momento per non pagarne più l'archiviazione.

Tra le funzionalità introdotte da AWS c'è Object Lock: un meccanismo che impedisce l'eliminazione o la sovrascrittura degli oggetti. È pensato per proteggere da rimozioni accidentali o malevole i dati destinati a una conservazione a lungo termine, sia per finalità di compliance sia di archiviazione.
Quando crea un bucket, può scegliere una Retention Mode di Object Lock, che determina come AWS limiterà l'eliminazione degli oggetti:
- Governance mode — Gli oggetti sono protetti da scrittura, ma gli utenti con permessi speciali possono ignorare o rimuovere il blocco.
- Compliance mode — Gli oggetti sono completamente immutabili per tutto il periodo di retention impostato. Nessuno, nemmeno l'utente root o il supporto AWS, può eliminarli in quell'arco di tempo.
In entrambe le modalità può definire un periodo di retention compreso tra 1 giorno e 100 anni, calcolato singolarmente per ciascun oggetto a partire dal caricamento su S3.
Una volta abilitato Object Lock su un bucket, può definire la modalità di blocco e il periodo di retention di ogni oggetto al momento del caricamento. Se non specifica questi parametri durante l'upload, verranno applicati quelli predefiniti.
Se in seguito modifica le impostazioni predefinite, queste avranno effetto solo sui nuovi oggetti: quelli esistenti manterranno la configurazione di blocco con cui erano stati caricati.

Soffermiamoci sulla Compliance mode:
Se la abilita, una volta caricato un oggetto nessun ruolo IAM né utente — nemmeno l'utente root — potrà eliminarlo prima della fine del periodo di retention. Neppure il supporto AWS potrà aiutarla a cancellarlo in anticipo.
Otterrà il seguente errore:
"Access Denied because object protected by object lock."
Perché conviene bloccarlo?
Per limitare i danni in caso di compromissione di un account AWS.
Mi spiego: quando un attaccante riesce ad accedere a un account AWS, segue tipicamente tre schemi:
- Ransom & distruzione: cifra i backup, chiede un riscatto ed elimina le risorse per generare caos.
- Crypto mining: avvia costose istanze GPU-compute in tutte le region disponibili per minare criptovalute.
- Prosciugamento finanziario: effettua il provisioning di risorse costose come metal instance e volumi EBS di grandi dimensioni, oppure acquista nodi Redshift Reserved per far lievitare i costi.
Una mossa particolarmente subdola consiste nel creare un bucket S3 con Object Lock a lungo termine in Compliance mode e caricarvi file di enormi dimensioni tramite istanze EC2 zombie, o persino contenuti la cui detenzione è illegale.
In seguito, durante una revisione dei costi o il rilevamento di un'anomalia, potrebbe scoprire un bucket contenente enormi quantità di dati non eliminabili, con un costo di migliaia o decine di migliaia di dollari al mese, e nessun modo per rimuoverli.
Come si elimina, allora, un bucket con oggetti protetti dalla Compliance mode?
Non si può.
L'unica strada è chiudere l'intero account AWS con tutte le sue risorse: una bella seccatura, soprattutto per gli ambienti di produzione.
Dovrà migrare l'intero workload su un nuovo account AWS, un'operazione che può richiedere settimane o addirittura mesi, paragonabile a una migrazione completa dell'ambiente.
Come si blocca?
Con le Resource Control Policy (RCP): una funzionalità di AWS Organizations che consente di applicare policy a tutti gli account dell'organizzazione (escluso il management account) per risorse come i bucket S3.
Può creare una resource policy che neghi qualsiasi tentativo di abilitare Object Lock (purtroppo non è possibile limitarla alla sola Compliance Mode). Chi proverà ad applicarla riceverà un errore Access Denied.
Suggerimento: può anche autorizzare solo utenti specifici (ad esempio il team di sicurezza) ad aggirare la restrizione, bloccando tutti gli altri. In questo modo mantiene il controllo senza esporre l'account a rischi inutili.
Ecco un esempio di RCP che blocca completamente l'uso della Compliance mode, sia per i bucket esistenti sia per quelli nuovi:
Ho applicato la policy, creato un nuovo bucket e, quando ho provato ad abilitare la Compliance mode, ho ricevuto il seguente errore:

Considerazioni finali:
Se vuole davvero ridurre al minimo i danni economici a lungo termine dovuti a configurazioni errate o accessi non autorizzati, Le consiglio vivamente di applicare questa policy.
Tra l'altro, la Compliance mode non è limitata a S3: è presente anche in:
- EBS Snapshots — backup dei volumi (dischi) EC2
- AWS Backup Vault — il servizio AWS Backup
Valuti di bloccare anche questi, a seconda del Suo profilo di rischio.
Scopra altre risorse utili su doit.com/services: il prossimo passo verso il successo La sta aspettando!