Object lock
Intro
Object Lock è una funzione di S3 per i bucket versionati supportata da Cubbit. Questa funzione offre un ulteriore livello di protezione per i dati consentendo di bloccare gli oggetti per evitare cancellazioni o sovrascritture accidentali o non autorizzate. Object Lock è particolarmente utile quando si tratta di conservazione dei dati e di conformità alle normative, motivo per cui è diventato sempre più importante per molte aziende.
Cubbit supporta sia object retention basata sulla durata che Legal Hold retention indefinita.
Retention periods e legal hold
Object Lock consente di applicare due diversi metodi per impedire l'eliminazione o la modifica degli oggetti: i retention periods e il legal hold.
Retention periods
I retention periods sono criteri basati sul tempo che impediscono l'eliminazione o la modifica degli oggetti fino al raggiungimento di una data o di un tempo specifico. È possibile impostare retention periods su singoli oggetti o su un intero bucket.
In un bucket, è possibile impostare il retention period predefinito da applicare a tutti gli oggetti del bucket, oppure impostare un retention period su singoli oggetti. Quando è in vigore un retention period, l'oggetto non può essere eliminato o modificato fino alla scadenza del retention period.
Per lavorare coi retention periods, è possibile utilizzare l'API S3 PutObjectLockConfiguration
per impostare la configurazione di retention predefinita su un bucket, che verrà applicata a tutti gli oggetti che verranno caricati in esso.
Altrimenti, è possibile impostare un retention period per i singoli oggetti utilizzando l'API S3 PutObjectRetention
. In questo modo si sovrascrive la configurazione predefinita della retention del bucket per quell'oggetto specifico.
Legal holds
Il legal hold è un altro metodo per impedire la cancellazione o la modifica di un oggetto, ma non è basato sul tempo. Al contrario, i legal hold sono progettati per mantenere gli oggetti conservati indefinitamente fino a quando non vengono rimossi. È possibile impostare un legal hold su singoli oggetti, ma non su un intero bucket.
Quando è attivo un legal hold, l'oggetto non può essere cancellato o modificato finché non viene rimosso. I legal holds possono essere utilizzati per scopi legali o di conformità alle normative.
Per impostare un legal hold su un oggetto, è possibile utilizzare l'API S3 PutObjectLegalHold
.
Le modalità Compliance e Governance
Object Lock ha due modalità: compliance e governance. La modalità compliance è progettata per scopi di conformità normativa, mentre la modalità governance è progettata per la gestione generale degli oggetti.
In entrambe le modalità, la scopo principale resta lo stesso: impedire la cancellazione o la modifica di una particolare versione di un oggetto. La modifica al periodo di retention di un oggetto è permessa solo se si estende il periodo stesso.
Tale header tuttavia richiede che l'utente possieda la speciale permission: S3:BypassGovernanceRetention
o, in alternativa, che l'utente sia ROOT. Inoltre, la richiesta passante deve avere l'header x-amz-bypass-governance-retention:true
settato. Bypassando le restrizioni è quindi possibile cancellare una specifica versione di un oggetto o modificarne il periodo di retention, anche riducendolo.
Gli oggetti bloccati
Cubbit blocca qualsiasi tentativo di cancellare una versione specifica di un oggetto che è bloccata, sia a causa di un legal hold che di un periodo di retention non ancora scaduto.
Tuttavia, le normali operazioni di cancellazione senza specificare l'ID della versione seguono il comportamento normale nei bucket con versioni e viene creato un delete marker.
Requisiti per l'object locking
Ci sono alcuni requisiti da ricordare quando si lavora con questa funzione, che sono strettamente legati al bucket versioning.
- È possibile attivare l'object locking solo durante la creazione del bucket. Non è possibile attivarlo in un secondo momento.
- Quando si crea un bucket con l'object locking abilitato, il versioning del bucket viene abilitato automaticamente.
- Non è possibile disattivare l'object locking o sospendere il versioning per un bucket creato con l'object locking attivato.
How to
La seguente sezione spiega come lavorare con questa funzione, sia utilizzando la Cubbit Console che i comandi della CLI di AWS s3api
.
Creare un bucket con l'object locking abilitato
Iniziamo ad abilitare l'object locking su un bucket nuovo di zecca.
- Cubbit Console
- AWS S3 API
Come abbiamo appena detto, secondo il protocollo S3, l'unico modo per abilitare il blocco su un bucket è durante la sua creazione.
- Accedere alla [Cubbit Console] (https://console.cubbit.eu).
- Fare clic sul pulsante "Create bucket" in alto a destra.
- Inserire il nome del bucket nella sezione superiore denominata "Bucket name".
- Nella sezione "Object Lock" in basso, cliccare sul pulsante "Object Lock enabled" e infine confermare cliccando sul pulsante "Create bucket".
Si dovrebbe vedere un nuovo bucket, con il versioning e l'object locking abilitati.
È un'API CreateBucket
in cui si specifica anche --object-lock-enabled-for-bucket
:
aws s3api create-bucket --endpoint https://s3.cubbit.eu --bucket my-cubbit-bucket --object-lock-enabled-for-bucket
Impostare un retention period predefinito sul bucket
È possibile impostare un retention period predefinito per il bucket, in giorni o anni.
- Cubbit Console
- API di AWS S3
È possibile accedere a questo menu sia in fase di creazione del bucket che successivamente, semplicemente aprendo il menu del bucket facendo clic sull'icona con i tre puntini a destra e cliccando sul pulsante "Manage":
È un'API PutObjectLockConfiguration
:
aws s3api put-object-lock-configuration --endpoint https://s3.cubbit.eu --bucket my-cubbit-bucket --object-lock-configuration "ObjectLockEnabled=Enabled,Rule={DefaultRetention={Mode=COMPLIANCE,Days=30}}"
Bloccare un oggetto specifico fino a una data di retention
È quindi possibile impostare un retention period per un oggetto specifico.
- Cubbit Console
- AWS S3 API
È possibile accedere a questo menu aprendo il menu degli oggetti, facendo clic sull'icona con i tre puntini a destra e facendo clic sul pulsante "Object details":
È un'API PutObjectRetention
:
aws s3api put-object-retention --endpoint https://s3.cubbit.eu --bucket my-cubbit-bucket --retention "Mode=COMPLIANCE,RetainUntilDate=2024-02-16T00:00:00+00:00"
Bloccare un oggetto specifico a tempo indeterminato con un legal hold
È possibile impostare un legal hold su un oggetto specifico.
- Cubbit Console
- AWS S3 API
Come sopra, è possibile accedere a questo menu aprendo il menu degli oggetti, cliccando sull'icona con i tre puntini a destra e facendo clic sul pulsante "Object details":
È un'API PutObjectLegalHold
:
aws s3api put-object-legal-hold --endpoint https://s3.cubbit.eu --bucket my-cubbit-bucket --legal-hold "Status=ON"
Impostare un retention period predefinito sul bucket in modalità Governance
Come sopra, è possibile impostare un retention period predefinito per il bucket, in giorni o anni, stavolta con la modalità GOVERNANCE. Come indicato in descrizione, utenti con specifici permessi IAM possono sovrascrivere o eliminare versioni protette degli oggetti durante il periodo di retention.
- Cubbit Console
- AWS S3 API
È possibile accedere a questo menu sia in fase di creazione del bucket che successivamente, semplicemente aprendo il menu del bucket facendo clic sull'icona con i tre puntini a destra e cliccando sul pulsante "Manage":
Bypassare la modalità di Governance non influenza lo stato di Legal Hold di una versione dell'oggetto. Se una versione dell'oggetto ha abilitato la Legal Hold, questa Legal Hold rimane attiva e impedisce le richieste di sovrascrivere o eliminare la versione dell'oggetto.
Per bypassare una configurazione di retention di Governance è necessario il permesso s3:BypassGovernanceRetention
.
È un'API PutObjectLockConfiguration
:
aws s3api put-object-lock-configuration --endpoint https://s3.cubbit.eu --bucket my-cubbit-bucket --object-lock-configuration "ObjectLockEnabled=Enabled,Rule={DefaultRetention={Mode=GOVERNANCE,Days=30}}"