Aller au contenu principal

Comment gérer la rétention des objets d'un bucket verrouillé

Un bucket créé avec Activer le verrouillage (Object Lock / WORM) verrouille chaque objet 365 jours après son écriture, en mode COMPLIANCE. Ce guide montre comment consulter ce verrouillage et, avec les commandes S3 Object Lock standard, conserver un objet plus longtemps : rétention propre à l'objet, prolongation, verrou juridique (legal hold).

Ces opérations se font avec un client S3. La console et l'API Hikube n'exposent que la rétention par défaut du bucket.

Prérequis​

Un verrou ne se retire pas

Une rétention en mode COMPLIANCE ne peut être ni raccourcie ni retirée. L'objet ne pourra pas être supprimé, ni le bucket vidé, avant l'échéance. Vérifiez la date avant de lancer une commande.

Comprendre les deux mécanismes​

MécanismeDuréeQui le poseLevée
RétentionJusqu'à une date (RetainUntilDate)Le bucket, à l'écriture de chaque objet (365 jours), ou vous, objet par objetAutomatique à l'échéance ; ne peut être que prolongée
Verrou juridique (legal hold)Sans échéanceVous, objet par objetQuand vous le retirez (Status=OFF)

Les deux se cumulent : un objet ne peut être supprimé qu'une fois sa rétention échue et son verrou juridique retiré.

Étapes​

1. Consulter le verrouillage du bucket​

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

Résultat attendu :

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

DefaultRetention est la rétention appliquée à tout objet écrit sans rétention propre.

2. Envoyer un objet avec sa propre rétention​

Pour conserver un objet au-delà de 365 jours (archive réglementaire de dix ans, par exemple), donnez-lui une date d'échéance à l'envoi. Choisissez une date postérieure à l'échéance par défaut (365 jours après l'envoi) : la rétention propre à un objet sert à le garder plus longtemps.

# Date d'échéance : ISO 8601, en UTC
RETAIN_UNTIL="2036-12-31T00:00:00Z"

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

3. Lire la rétention d'un objet​

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

Résultat attendu :

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

4. Prolonger la rétention d'un objet​

Une rétention ne peut être que prolongée : la nouvelle date doit être postérieure à l'échéance actuelle, sinon la requête est refusée.

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

5. Poser ou retirer un verrou juridique​

Le verrou juridique bloque la suppression d'un objet sans date d'échéance, par exemple pendant un litige ou un audit :

# Poser le verrou
aws --endpoint-url "$S3_ENDPOINT" s3api put-object-legal-hold \
--bucket "$BUCKET_NAME" --key archives/rapport-2026.pdf \
--legal-hold Status=ON

# Consulter le verrou
aws --endpoint-url "$S3_ENDPOINT" s3api get-object-legal-hold \
--bucket "$BUCKET_NAME" --key archives/rapport-2026.pdf

# Retirer le verrou
aws --endpoint-url "$S3_ENDPOINT" s3api put-object-legal-hold \
--bucket "$BUCKET_NAME" --key archives/rapport-2026.pdf \
--legal-hold Status=OFF

Retirer le verrou juridique ne lève pas la rétention : l'objet reste protégé jusqu'à son échéance.

Mode GOVERNANCE​

Le mode GOVERNANCE est accepté, mais les utilisateurs d'un bucket n'ont pas la permission de contourner une rétention : --bypass-governance-retention renvoie AccessDenied. Un objet en GOVERNANCE est donc, en pratique, aussi immuable qu'en COMPLIANCE jusqu'à son échéance. Utilisez COMPLIANCE, qui dit ce qui sera appliqué.

Dépannage​

SymptômeCause probableAction
get-object-lock-configuration échoueBucket créé sans verrouillageLe verrouillage ne s'active qu'à la création : créez un bucket verrouillé et copiez-y les objets
AccessDenied sur put-object-retention ou put-object-legal-holdUtilisateur en Lecture seuleUtilisez un utilisateur en Lecture / Écriture
Prolongation refuséeNouvelle date antérieure à l'échéance actuelleChoisissez une date postérieure à l'échéance actuelle (étape 3)
Date refusée à l'envoiDate passée ou format incorrectDate future, au format ISO 8601 en UTC (2036-12-31T00:00:00Z)
AccessDenied à la suppression d'un objetRétention en cours ou verrou juridique poséLisez la rétention (étape 3) et le verrou juridique (étape 5) de l'objet

Pour aller plus loin​