Vai al contenuto principale

Come gestire la conservazione degli oggetti di un bucket bloccato

Un bucket creato con Enable Object Lock (WORM) blocca ogni oggetto per 365 giorni dopo la sua scrittura, in modalità COMPLIANCE. Questa guida mostra come verificare questo blocco e, con i comandi standard di S3 Object Lock, conservare un oggetto più a lungo: conservazione propria dell'oggetto, proroga, blocco legale (legal hold).

Queste operazioni si eseguono con un client S3. La console e l'API Hikube mostrano solo la conservazione predefinita del bucket.

Prerequisiti​

Un blocco non si rimuove

Una conservazione in modalità COMPLIANCE non può essere né ridotta né rimossa. L'oggetto non potrà essere eliminato, né il bucket svuotato, prima della scadenza. Verificate la data prima di eseguire un comando.

Comprendere i due meccanismi​

MeccanismoDurataChi lo applicaRimozione
Conservazione (retention)Fino a una data (RetainUntilDate)Il bucket, alla scrittura di ogni oggetto (365 giorni), oppure voi, oggetto per oggettoAutomatica alla scadenza; può solo essere prorogata
Blocco legale (legal hold)Senza scadenzaVoi, oggetto per oggettoQuando lo rimuovete (Status=OFF)

I due si sommano: un oggetto può essere eliminato solo quando la sua conservazione è scaduta e il suo blocco legale è stato rimosso.

Passaggi​

1. Verificare il blocco del bucket​

aws --endpoint-url "$S3_ENDPOINT" s3api get-object-lock-configuration \
--bucket "$BUCKET_NAME"

Risultato atteso:

{
"ObjectLockConfiguration": {
"ObjectLockEnabled": "Enabled",
"Rule": {
"DefaultRetention": {
"Mode": "COMPLIANCE",
"Days": 365
}
}
}
}

DefaultRetention è la conservazione applicata a ogni oggetto scritto senza una conservazione propria.

2. Caricare un oggetto con una conservazione propria​

Per conservare un oggetto oltre 365 giorni (un archivio normativo di dieci anni, per esempio), assegnategli una data di scadenza al caricamento. Scegliete una data successiva alla scadenza predefinita (365 giorni dopo il caricamento): la conservazione propria di un oggetto serve a conservarlo più a lungo.

# Data di scadenza: ISO 8601, in UTC
RETAIN_UNTIL="2036-12-31T00:00:00Z"

aws --endpoint-url "$S3_ENDPOINT" s3api put-object \
--bucket "$BUCKET_NAME" --key archives/report-2026.pdf --body ./report-2026.pdf \
--object-lock-mode COMPLIANCE \
--object-lock-retain-until-date "$RETAIN_UNTIL"

3. Leggere la conservazione di un oggetto​

aws --endpoint-url "$S3_ENDPOINT" s3api get-object-retention \
--bucket "$BUCKET_NAME" --key archives/report-2026.pdf

Risultato atteso:

{
"Retention": {
"Mode": "COMPLIANCE",
"RetainUntilDate": "2036-12-31T00:00:00+00:00"
}
}

4. Prorogare la conservazione di un oggetto​

Una conservazione può solo essere prorogata: la nuova data deve essere successiva alla scadenza attuale, altrimenti la richiesta viene rifiutata.

aws --endpoint-url "$S3_ENDPOINT" s3api put-object-retention \
--bucket "$BUCKET_NAME" --key archives/report-2026.pdf \
--retention '{"Mode":"COMPLIANCE","RetainUntilDate":"2040-12-31T00:00:00Z"}'

5. Applicare o rimuovere un blocco legale​

Il blocco legale impedisce l'eliminazione di un oggetto senza data di scadenza, per esempio durante un contenzioso o un audit:

# Applicare il blocco
aws --endpoint-url "$S3_ENDPOINT" s3api put-object-legal-hold \
--bucket "$BUCKET_NAME" --key archives/report-2026.pdf \
--legal-hold Status=ON

# Verificare il blocco
aws --endpoint-url "$S3_ENDPOINT" s3api get-object-legal-hold \
--bucket "$BUCKET_NAME" --key archives/report-2026.pdf

# Rimuovere il blocco
aws --endpoint-url "$S3_ENDPOINT" s3api put-object-legal-hold \
--bucket "$BUCKET_NAME" --key archives/report-2026.pdf \
--legal-hold Status=OFF

Rimuovere il blocco legale non rimuove la conservazione: l'oggetto resta protetto fino alla sua scadenza.

Modalità GOVERNANCE​

La modalità GOVERNANCE è accettata, ma gli utenti di un bucket non hanno il permesso di aggirare una conservazione: --bypass-governance-retention restituisce AccessDenied. Un oggetto in GOVERNANCE è quindi, in pratica, immutabile quanto in COMPLIANCE fino alla scadenza. Usate COMPLIANCE, che dichiara ciò che verrà applicato.

Risoluzione dei problemi​

SintomoCausa probabileAzione
get-object-lock-configuration fallisceBucket creato senza bloccoIl blocco si attiva solo alla creazione: create un bucket bloccato e copiatevi gli oggetti
AccessDenied su put-object-retention o put-object-legal-holdUtente in Read-onlyUsate un utente in Read / Write
Proroga rifiutataNuova data precedente alla scadenza attualeScegliete una data successiva alla scadenza attuale (passo 3)
Data rifiutata al caricamentoData passata o formato erratoData futura, in formato ISO 8601 UTC (2036-12-31T00:00:00Z)
AccessDenied all'eliminazione di un oggettoConservazione in corso o blocco legale applicatoLeggete la conservazione (passo 3) e il blocco legale (passo 5) dell'oggetto

Per approfondire​