Support S3 versioning
- Do we want to support S3 versioning ? I think we mostly don't care
- If we want to do it, think how to do it
- Do it
At the beginning of the development, I said it could be interesting to have a delay between the deletion of an object and its effective removal of the cluster. Such behavior can be achieved by enabling bucket versioning + adding a lifecycle policy.
Having these 2 features could enable many people to implement a backup strategy "for free", including us.
For example, currently I am investigating ways to backup Garage buckets by mirroring them on minio with s3s3mirror. By activating versioning on Minio + a lifecycle policy, it will be possible to restore any file during a given period (eg. 100 days) even if it has been wrongly deleted or modified by an operator, a faulty software or a user.
I have two usecases for a versioning system:
The simple backup described above, just to assist users who say "I accidentally deleted a file and I'd like it back please"
Thwarting any potential ransomware attacks that happen to figure out how to 'encrypt' files in an object store (though this would require that disabling the versioning to be additionally restricted to admin's only)
Deleting a branch is permanent. It CANNOT be undone. Continue?