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

Retention period predefinito sul bucketRetention period predefinito sul bucket

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.

Blocca un oggetto specifico fino a una data di retentionBlocca un oggetto specifico fino a una data di retention

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.

Blocca un oggetto specifico a tempo indeterminato con un legal holdBlocca un oggetto specifico a tempo indeterminato con un legal hold

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.

La differenza tra le due modalità consiste nel fatto che la modalità governance permette di bypassare le restrizioni specificando lo specifico header x-amz-bypass-governance-retention:true nelle request riguardanti la cancellazione di una versione o la modifica del periodo di retention. Tale header tuttavia richiede che l'utente possieda la speciale permission: S3:BypassGovernanceRetention o, in alternativa, che l'utente sia ROOT. 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.

Gli oggetti bloccati non possono essere cancellatiGli oggetti bloccati non possono essere cancellati

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.

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'object lockingCubbit Console - Creare il bucket con l'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 bucketCubbit 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 retentionCubbit 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 legaleCubbit 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":

note

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 GovernanceCubbit Console - Imposta un retention period predefinito sul bucket in Governance