Testare e dimostrare il blocco di oggetti S3 su StorageGRID
Di Aron Klein
Object Lock fornisce un modello WORM per impedire l'eliminazione o la sovrascrittura degli oggetti. L'implementazione StorageGRID del blocco degli oggetti viene valutata da Cohasset per soddisfare i requisiti normativi, supportare la modalità di conservazione legale e di conformità per la conservazione degli oggetti e le policy di conservazione predefinite dei bucket.
Questa guida illustra l'API S3 Object Lock.
Conservazione a fini giudiziari
-
Object Lock legal hold è un semplice stato on/off applicato a un oggetto.
aws s3api put-object-legal-hold --bucket <bucket> --key <file> --legal-hold Status=ON --endpoint-url https://s3.company.com
-
Verificarlo con un'operazione GET.
aws s3api get-object-legal-hold --bucket <bucket> --key <file> --endpoint-url https://s3.company.com
{ "LegalHold": { "Status": "ON" } }
-
Disattivare la sospensione legale
aws s3api put-object-legal-hold --bucket <bucket> --key <file> --legal-hold Status=OFF --endpoint-url https://s3.company.com
-
Verificarlo con un'operazione GET.
aws s3api get-object-legal-hold --bucket <bucket> --key <file> --endpoint-url https://s3.company.com
{ "LegalHold": { "Status": "OFF" } }
Modalità compliance
-
La conservazione degli oggetti viene eseguita con un periodo di conservazione fino a data e ora.
aws s3api put-object-retention --bucket <bucket> --key <file> --retention '{"Mode":"COMPLIANCE", "RetainUntilDate": "2025-06-10T16:00:00"}' --endpoint-url https://s3.company.com
-
Verificare lo stato di conservazione
aws s3api get-object-retention --bucket <bucket> --key <file> --endpoint-url https://s3.company.com +
{ "Retention": { "Mode": "COMPLIANCE", "RetainUntilDate": "2025-06-10T16:00:00+00:00" } }
Conservazione predefinita
-
Impostare il periodo di conservazione in giorni e anni rispetto alla data di conservazione definita con l'api per oggetto.
aws s3api put-object-lock-configuration --bucket <bucket> --object-lock-configuration '{"ObjectLockEnabled": "Enabled", "Rule": { "DefaultRetention": { "Mode": "COMPLIANCE", "Days": 10 }}}' --endpoint-url https://s3.company.com
-
Verificare lo stato di conservazione
aws s3api get-object-lock-configuration --bucket <bucket> --endpoint-url https://s3.company.com
{ "ObjectLockConfiguration": { "ObjectLockEnabled": "Enabled", "Rule": { "DefaultRetention": { "Mode": "COMPLIANCE", "Days": 10 } } } }
-
Metti un oggetto nel bucket
aws s3api put-object --bucket <bucket> --key <file> --body "file" --endpoint-url https://s3.example.com
-
La durata di conservazione impostata sul bucket viene convertita in un indicatore data e ora di conservazione sull'oggetto.
aws s3api get-object-retention --bucket <bucket> --key <file> --endpoint-url https://s3.company.com
{ "Retention": { "Mode": "COMPLIANCE", "RetainUntilDate": "2022-03-02T15:22:47.202000+00:00" } }
Verificare l'eliminazione di un oggetto con una conservazione definita
Il blocco degli oggetti si basa sul controllo delle versioni. La conservazione viene definita su una versione dell'oggetto. Se si tenta di eliminare un oggetto con una conservazione definita e non viene specificata alcuna versione, viene creato un indicatore di eliminazione come versione corrente dell'oggetto.
-
Eliminare l'oggetto con la conservazione definita
aws s3api delete-object --bucket <bucket> --key <file> --endpoint-url https://s3.example.com
-
Elencare gli oggetti nel bucket
aws s3api list-objects --bucket <bucket> --endpoint-url https://s3.example.com
-
Notare che l'oggetto non è elencato.
-
-
Elencare le versioni per visualizzare il marker di eliminazione e la versione originale bloccata
aws s3api list-object-versions --bucket <bucket> --prefix <file> --endpoint-url https://s3.example.com
{ "Versions": [ { "ETag": "\"82e8bfb872e778a4687a26e6c0b36bc1\"", "Size": 47, "StorageClass": "STANDARD", "Key": "file.txt", "VersionId": "RDVDMjYwMTQtQkNDQS0xMUVDLThGOEUtNjQ3NTAwQzAxQTk1", "IsLatest": false, "LastModified": "2022-04-15T14:46:29.734000+00:00", "Owner": { "DisplayName": "Tenant01", "ID": "56622399308951294926" } } ], "DeleteMarkers": [ { "Owner": { "DisplayName": "Tenant01", "ID": "56622399308951294926" }, "Key": "file01.txt", "VersionId": "QjVDQzgzOTAtQ0FGNi0xMUVDLThFMzgtQ0RGMjAwQjk0MjM1", "IsLatest": true, "LastModified": "2022-05-03T15:35:50.248000+00:00" } ] }
-
Eliminare la versione bloccata dell'oggetto
aws s3api delete-object --bucket <bucket> --key <file> --version-id "<VersionId>" --endpoint-url https://s3.example.com
An error occurred (AccessDenied) when calling the DeleteObject operation: Access Denied