Vai al contenuto principale

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.

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 caricati nel bucket, oppure impostare un retention period su singoli oggetti. Gli oggetti esistenti non vengono bloccati retroattivamente quando si imposta un default sul bucket; solo gli oggetti caricati successivamente lo ereditano.

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.

A new object inherits the bucket default retention periodPUTOBJECTLOCKCONFIGURATIONbucketDefault retention · 30 daysRule · DefaultRetentionMode · COMPLIANCEapplies to everynew objectnew object versionRetain until creation + 30 dayslocked by bucket default
Il retention period predefinito impostato sul bucket viene ereditato da ogni oggetto caricato successivamente.

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.

PutObjectRetention overrides the bucket default for a single objectPUTOBJECTRETENTIONoverride · retain until 2024-02-16T00:00:00Zbucket default · 30 daysoverride · retain untillockednowdefault expiry2024-02-16
La retention a livello di oggetto sovrascrive il default del bucket solo per quell'oggetto specifico.

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.

A legal hold preserves an object version indefinitelyPUTOBJECTLEGALHOLD · STATUS=ONLegal hold · until the hold is removedheld∞nownot a date — the object stays locked until the hold is removed
I legal hold non sono basati sul tempo: l'oggetto resta bloccato finché il legal hold non viene rimosso.

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à, lo 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.

Il bypass della retention in modalità Governance non influisce su un legal hold esistente: una versione dell'oggetto con un legal hold resta protetta e non può essere eliminata o sovrascritta finché il legal hold non viene rimosso.

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.

Deleting a specific version of a locked object is blockedDELETE · ?versionId=v2v3 · unlockedv2 · lockedretention activev1 · unlockedDELETE ?versionId=v2403AccessDenied · retained
Una delete che punta a una versione bloccata viene rifiutata; la versione resta al suo posto.

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.

Object Lock e lifecycle configuration​

Object Lock impedisce l'eliminazione delle versioni bloccate degli oggetti, ma non rimuove da solo le versioni precedenti. Per eliminare le versioni noncurrent dopo la scadenza della retention, configura una regola NoncurrentVersionExpiration nella lifecycle configuration del bucket.

L'eliminazione tramite lifecycle rispetta Object Lock: una versione noncurrent viene saltata finché ha un legal hold attivo o il suo periodo di retention non è scaduto. La versione diventa idonea all'eliminazione solo dopo la scadenza del periodo di retention e, se presente, dopo la rimozione del legal hold.

Ciò consente di applicare una finestra di retention continuando a eliminare le versioni una volta che diventano idonee all'eliminazione tramite lifecycle. PutBucketLifecycleConfiguration sostituisce la configurazione esistente; per maggiori dettagli, vedi Lifecycle Configuration.

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. Un bucket creato senza Object Lock non può essere convertito: è necessario creare un nuovo bucket con Object Lock abilitato e copiare gli oggetti correnti al suo interno. La cronologia delle versioni e le date di retention esistenti non vengono trasferite.
  • 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. Gli esempi usano il placeholder <your-endpoint-gateway>: sostituiscilo con l'endpoint gateway assegnato al tuo account (vedi Endpoint gateway per recuperarlo dalla console).

Creare un bucket con l'object locking abilitato​

Iniziamo ad abilitare l'object locking su un bucket nuovo di zecca.

Come abbiamo appena detto, secondo il protocollo S3, l'unico modo per abilitare il blocco su un bucket è durante la sua creazione.

  1. Accedere alla Cubbit Console.
  2. Fare clic sul pulsante "Create bucket" in alto a destra.
  3. Inserire il nome del bucket nella sezione superiore denominata "Bucket name".
  4. Nella sezione "Object Lock", abilitare "Object Lock enabled".
  5. Facoltativamente, abilitare "Retention enabled" e configurare la modalità di retention predefinita (Compliance mode o Governance mode) e il periodo di retention (in giorni o anni).
  6. Fare clic sul pulsante "Create bucket".

Object Lock da solo non applica un retention period: abilitare "Retention enabled" per bloccare automaticamente i nuovi caricamenti, oppure impostare una retention a livello di oggetto o un legal hold sui singoli oggetti.

Cubbit Console - Creare il bucket con l&#39;object locking

Si dovrebbe vedere un nuovo bucket, con il versioning e l'object locking abilitati.

nota

Le impostazioni di retention si applicano agli oggetti caricati dopo il salvataggio delle impostazioni e possono essere modificate successivamente dalle impostazioni del bucket. Gli oggetti esistenti non vengono bloccati retroattivamente. Object Lock, invece, non può essere abilitato dopo la creazione del bucket.

Impostare un retention period predefinito sul bucket​

È possibile impostare un retention period predefinito su un bucket esistente con Object Lock abilitato, in giorni o anni. Il nuovo default si applica agli oggetti caricati dopo il salvataggio della configurazione; gli oggetti già presenti nel bucket mantengono la retention corrente, a meno che non sia impostata una retention a livello di oggetto.

  1. Aprire l'elenco dei bucket nella Cubbit Console.
  2. Fare clic sull'icona con i tre puntini a destra del bucket e selezionare "Manage".
  3. Nella sezione "Object Lock", abilitare "Retention enabled".
  4. Scegliere la modalità di retention, "Compliance mode" o "Governance mode".
  5. Impostare il periodo di retention in giorni o anni.
  6. Fare clic su "Save".

Cubbit Console - Imposta un retention period predefinito sul bucket

nota

Per i bucket creati con Object Lock, l'opzione "Object Lock enabled" è di sola lettura dopo la creazione. È possibile modificare solo le impostazioni di retention.

Per le differenze tra le due modalità e le regole di bypass della governance, vedi Le modalità Compliance e Governance.

Bloccare un oggetto specifico fino a una data di retention​

È quindi possibile impostare un retention period per un oggetto specifico.

È 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":

Cubbit Console - Bloccare un oggetto specifico fino a una data di retention

È possibile impostare un legal hold su un oggetto specifico.

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":

Cubbit Console - Blocca un oggetto specifico a tempo indeterminato con un fermo legale