概述
腾讯云对象存储(Cloud Object Storage,COS)提供了对象锁定功能,支持用户设定保留期限内的对象不可改写、不可删除。
对象锁定功能当前为对象级别,支持用户为单个或多个对象设置保留期限。用户也可以通过开启存储桶的对象锁定配置,对新上传到存储桶的对象默认设置对象锁定。
注意:
对象一旦设置了对象锁定,不支持解除对象锁定、不支持缩短保留期限,只允许延长保留期限。
多 AZ 存储桶仅广州地域支持开启Worm,且不支持在对象上传后修改锁定状态。如需要为多 AZ 桶开启 Worm 请 联系我们 开通白名单,详情见 MAZ 存储桶开启对象锁定。
说明:
基于对象锁定功能,对象存储 COS 可满足严格的电子记录保留要求,包括 SEC Rule 17a-4(f)、FINRA 4511、CFTC 1.31等合规要求。
SEC 17A-4 法规是美国证券交易委员会根据1934年美国证券交易法而颁布的法规,该法规概述了数据保留、索引、可访问性要求,适用于从事股票,债券和期货等金融证券交易或经纪业务公司,根据该法规,许多类型交易记录必须保留并不可重写和擦除,期限为两年内可立即访问,至少六年内为非立即访问。
存储桶开启对象锁定功能
在为对象加锁之前,存储桶需要先开启 WORM 功能。需要注意的是,开启对象锁定功能,仅是将存储桶标记为“可使用对象锁定功能”的状态,并不会自动对桶内所有对象加锁。存储桶开启 WORM 功能后,用户可以选择为指定对象开启对象锁定,或保持不锁定的状态。
存储桶的对象锁定配置一旦开启后,不支持关闭。开启对象锁定配置的存储桶,会受到以下限制:
不支持开启版本控制。若存储桶已开启版本控制,则无法开启对象锁定配置。
不支持开启存储桶复制。原因是,存储桶复制要求必须开启版本控制。
不支持开启智能分层配置。若存储桶已开启智能分层配置,则无法开启对象锁定配置。
不支持使用追加上传(Append)。
使用方法
您可以通过 API 方式为存储桶开启对象锁定配置。
使用 REST API
为对象设置保留期限
保留期限
存储桶开启对象锁定功能后,用户可为桶内对象配置锁定保留期限。COS 在对象的元数据中存储了一个时间戳用于标识锁定的过期时间(RetainUntilDate),在保留期限之前:
对象不可删除、修改。
对象的存储类型不可修改。
对象 HTTP 头部和用户元数据都不可修改,包括 Content-Type、Content-Encoding、 Content-Language、Content-Disposition、Cache-Control、Expires、x-cos-meta-。
用户可以单独为指定对象配置保留期限。对象上传时,支持通过
x-cos-object-lock-retain-until-date
头部配置保留期限;对象上传后,支持通过 PUT Object Retention
接口配置保留期限。使用方法
您可以通过API 为对象设置保留期限。
使用 REST API
在上传时为对象设置保留期限
调用上传接口(PutObject、InitiateMultipartUploads、PostObject),并同时传入对象锁定相关的头部或表单域。详情请参见以下 API 文档:
在上传后为对象设置保留期限,详情请参见 PUT Object Retention。
查看对象的保留期限,详情请参见 GET Object Retention。
为存储桶设置默认保留天数
COS 支持为存储桶添加默认的对象锁定保留期限,单位为天。当用户上传对象未携带对象锁定头部时,会自动根据存储桶配置的保留天数为对象加锁。但是,当用户上传对象携带了对象锁定头部时,则会忽略存储桶配置,根据头部设置保留期限。
说明:
存储桶默认保留天数可以缩短、延长、关闭。
配置存储桶默认保留天数,只会对后续新增的对象生效,不会影响存量对象的锁定状态。
下面举例说明存储桶默认配置对对象保留期限的影响。
对象上传时间 | 存储桶默认配置 | 对象上传时头部 | 对象的锁定到期时间 |
2023-01-01T18:30:00Z | 7天 | x-cos-object-lock-retain-until-date: 2023-01-02T18:30:00Z | 2023-01-02T18:30:00Z |
2023-01-01T18:30:00Z | 7天 | x-cos-object-lock-retain-until-date: 2023-01-20T18:30:00Z | 2023-01-20T18:30:00Z |
2023-01-01T18:30:00Z | 7天 | 未携带 | 2023-01-08T18:30:00Z |
2023-01-01T18:30:00Z | 未配置 | x-cos-object-lock-retain-until-date: 2023-01-02T18:30:00Z | 2023-01-02T18:30:00Z |
2023-01-01T18:30:00Z | 未配置 | x-cos-object-lock-retain-until-date: 2023-01-20T18:30:00Z | 2023-01-20T18:30:00Z |
2023-01-01T18:30:00Z | 未配置 | 未携带 | 不锁定 |
使用方法
您可以通过 API 设置存储桶的对象锁定默认配置。
REST API
您可以直接通过以下 API 管理对象锁定:
限制说明
1. 对象锁定功能目前仅对白名单客户开放,请 联系我们。
2. 多 AZ 存储桶具有更多限制,如需要开启 Worm 请 联系我们 开通白名单,详情见 MAZ 存储桶开启对象锁定。
3. 对象锁定不支持版本控制功能,已开启对象锁定的存储桶不支持开启版本控制,存储桶版本控制处于开启、暂停状态,均不支持开启对象锁定。
4. 对象锁定不支持存储桶复制功能,由于对象锁定不兼容版本控制功能,且在存储桶复制规则下源存储桶、目标存储桶必须开启版本控制,所以开启对象锁定的存储桶无法作为存储桶复制的源存储桶、目标存储桶。
5. 对象锁定不支持智能分层功能。已开启对象锁定的存储桶不支持开启智能分层配置,存储桶开启智能分层配置后,不支持开启对象锁定。
6. 对象锁定与生命周期规则的关系。对象处于保留期内,生命周期配置的沉降、删除操作均不生效;对象超过保留期后,生命周期配置的沉降、删除操作可正常生效。
生命周期规则 | 对象锁定保留期 | 生命周期执行表现 |
20天沉降对象 | 30天保留期 | 上传后第20天,对象不沉降,上传后第31天对象沉降。 |
20天删除对象 | 30天保留期 | 上传后第20天,对象不删除,上传后第31天对象被删除。 |
20天沉降对象 | 10天保留期 | 上传后20天对象正常沉降。 |
20天删除对象 | 10天保留期 | 上传后20天对象正常删除。 |
7. 对存储桶开启对象锁定后,文件碎片不受对象锁定规则限制,用户可以清除存储桶内的文件碎片。
8. 对象锁定功能开启后无法关闭。
9. 开启对象锁定后,存储桶和对象 ACL 可以修改。
MAZ 存储桶开启对象锁定
1. MAZ 存储桶开启 Worm 需要单独申请白名单。
2. 仅广州地域的 MAZ 存储桶支持开启 Worm,其他地域 MAZ 桶不支持开启 Worm。
3. MAZ 存储桶内的对象,一旦上传后不支持修改对象的锁定状态(即不支持调用 PutObjectRetention 操作,包括为未加锁对象开启锁定,或延长已加锁对象的保留时间)。
4. (推荐用法)建议用户在存储桶创建后,直接开启对象锁定并设定一个保留天数,后续上传到桶的对象会自动按照保留天数添加锁定。
说明:
设置好保留天数后不建议修改该天数,原因是修改后的天数仅会对后续新增对象生效,存量对象的锁定期限保持不变,随意修改天数容易导致存量、新增对象的保留天数不同,不便于管理。