Make sure CopyObject, CompleteMultipartUpload and moving objects respect the lock information
Closed this issue · 15 comments
Goal
This issue is to make meaningful progress on Object Lock implementation within core and edge services. Specifically, to support immutable backups in backup software products like Veeam.
What needs to be done? • Acceptance Criteria
Modify the corresponding to CopyObject, CompleteMultipartUpload and perhaps FinishMoveObject endpoints on the satellite to comply with the following:
- make sure that it's not possible to mutate locked object versions using these endpoints
Summary
Depends on…
Links
- https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html
- https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html
- an easy-to-read and insightful introduction to Object Lock: Using S3 Object Lock
Change satellite/metabase: adjust copying objects for Object Lock mentions this issue.
Change pb: add retention to FinishCopyObjectRequest mentions this issue.
Change satellite/metainfo: adjust CopyObject endpoints for Object Lock mentions this issue.
Change pb: remove retention from BeginCopyObjectRequest mentions this issue.
Change pb: add retention to FinishMoveObjectRequest mentions this issue.
Change mod: bump storj.io/common mentions this issue.
Change satellite/metabase: adjust moving objects for Object Lock mentions this issue.
Change satellite/metabase: test moving with retention mentions this issue.
Change satellite/metainfo: adjust FinishMoveObject endpoint for Object Lock mentions this issue.
Change satellite/metabase: add more tests for moving locked objects mentions this issue.
Change satellite/metainfo: add TestEndpoint_CopyObjectWithRetention mentions this issue.
Change satellite/metabase: make FinishCopyObject's errors consistent mentions this issue.
Change satellite/metabase: wrap Retention.Verifies in copy/move code mentions this issue.
Change satellite/metainfo: add TestEndpoint_MoveObjectWithRetention mentions this issue.
Change satellite/metainfo: add ErrObjectExpiration to ConvertMetabaseErr mentions this issue.