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 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.

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

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.

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. 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] (https://console.cubbit.eu).
  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" in basso, cliccare sul pulsante "Object Lock enabled" e infine confermare cliccando sul pulsante "Create bucket".

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

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

Impostare un retention period predefinito sul bucket​

È possibile impostare un retention period predefinito per il bucket, in giorni o anni.

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

Cubbit Console - Imposta un retention period predefinito sul bucket

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

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.

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

nota

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.

Cubbit Console - Imposta un retention period predefinito sul bucket in Governance