WORM Overview
Scenarios
OBS provides write-once-read-many (WORM) to protect objects from being deleted or tampered with within a specified period. OBS supports both bucket-level and object-level WORM. To prevent any user (including the bucket or object owner) from modifying or deleting all objects in a bucket for a specified period, configure bucket-level WORM. To prevent any user from modifying or deleting specific objects in a bucket for a specified period, configure object-level WORM.
Bucket-level WORM vs. Object-level WORM
| Item | Bucket-level WORM | Object-level WORM |
|---|---|---|
| Protection scope | Protects all objects uploaded to the bucket after WORM is configured. NOTE: Objects uploaded before WORM is enabled must use object-level WORM to be protected. | Protects specific objects. After WORM is enabled for a bucket, you can configure WORM for newly uploaded objects or existing objects in the bucket. |
| Configuration method | You can configure WORM when creating a bucket or after the bucket is created. | You must enable WORM for the bucket before you can configure WORM for individual objects. |
| Retention period | You can set the retention period in days or years. The retention period spans from the time the retention takes effect to that time plus the retention period.
For example, if you configure bucket-level WORM at 14:53:50 on May 11, 2026 and set the retention period to 3 days, newly uploaded objects will be locked from 14:53:50 on May 11, 2026 to 14:53:50 on May 14, 2026. | You can choose to inherit the bucket's retention period or configure a separate retention period. If you configure a separate retention period, objects are protected until the date you specify.
For example, if you configure object-level WORM at 14:53:50 on May 11, 2026 and set the date to May 20, 2026, the objects will be locked from 14:53:50 on May 11, 2026 to 23:59:59 on May 20, 2026. |
| Disabling WORM | Once WORM is enabled for a bucket, it cannot be disabled. However, you can choose not to configure WORM or cancel the default retention period. | Once WORM is configured for objects, it cannot be disabled and the default retention period cannot be canceled. You can only extend the retention period. |
| Priority | Object-level WORM takes precedence over bucket-level WORM. | |
Constraints
- Once WORM is enabled for a bucket, it cannot be disabled. However, you can disable the bucket's default retention period.
- Once WORM is enabled for a bucket, versioning cannot be suspended for that bucket.
- Buckets with WORM enabled do not support cross-region replication.
- A bucket-level WORM policy applies only to objects uploaded after the policy is configured. To protect existing objects, configure object-level WORM separately.
- WORM-protected objects cannot be migrated.
- The metadata of a WORM-protected object can still be modified.
- Parallel file systems do not support WORM.
Important Notes
- Before configuring object-level WORM, you must enable bucket-level WORM. If an object is protected by both bucket-level and object-level WORM, the object-level WORM policy takes precedence.
- The retention period of object-level WORM can only be extended but cannot be shortened.
- If you have deregistered your account or your account has been frozen, the WORM-protected objects will be permanently deleted.
- WORM does not protect parts generated during multipart uploads.
- When configuring bucket logging, do not store logs in a bucket with an active WORM retention policy. Because old files cannot be deleted, storage cost will continue to increase.
- If a bucket has WORM enabled, an append upload on this bucket will fail, with a 403 error returned.
- Only the compliance mode is supported.
Access Control
- To configure a bucket-level WORM policy, you must be the bucket owner or have the required permission. For authorization details, see Configuring a Default WORM Policy for a Bucket.
- To configure an object-level WORM policy, you must be the object owner or have the required permission. For authorization details, see Configuring WORM Retention for an Object.
How WORM Works with Other Features
Before enabling bucket-level WORM, you must enable versioning. Configuring WORM on OBS Console automatically enables versioning for the bucket, and versioning cannot be suspended afterward. If you configure WORM through APIs, you must first call the API that enables versioning for the bucket.
WORM protects objects as follows:
- WORM protects all object versions. During the retention period, no object version can be deleted or overwritten.
- Uploading an object with the same name creates a new version, which is also protected by WORM.
- WORM does not apply to delete markers. Delete markers can still be removed during the retention period.
- A lifecycle rule cannot delete WORM-protected objects, but can transition their storage class. After an object is no longer protected, it will be deleted when meeting the expiration rule in a lifecycle configuration.
- Delete markers are not protected by WORM. You can configure a lifecycle rule to automatically delete expired delete markers.
When WORM works with cross-region replication, the following behaviors occur:
- A bucket in a WORM retention period cannot be used as a source for replication. You cannot configure new replication rules for it, and any existing rules of the bucket are disabled during the retention period.
- When the destination bucket is in a WORM retention period, objects replicated from the source bucket are protected by the bucket-level WORM policy. Objects that were uploaded to the destination bucket before the WORM policy took effect are not protected. To protect these objects, configure an object-level WORM policy for them individually.
When WORM works with server-side encryption, the following behaviors occur:
- If both WORM and server-side encryption are configured for a bucket, they operate independently. You can apply WORM to encrypted objects or configure both server-side encryption and WORM when uploading objects.
- You can apply WORM to an existing object, but you cannot enable server-side encryption for an existing object.
- If an object cannot be modified or deleted, it may be in the WORM retention period or encrypted, and you lack the necessary encryption permissions.
What is your overall rating for this page?
Thank you very much for your feedback. We will continue working to improve the documentation.See the reply and handling status in My Cloud VOC.
For any further questions, feel free to contact us through the chatbot.
Chatbot

