本页面介绍了软删除功能,该功能会将已删除或已覆盖的对象保留一段指定的时间,从而保护您的数据免遭意外或恶意删除。
概览
软删除会保留已删除的对象(无论是由删除命令还是由于覆盖被删除),从而确保捕获并保留存储桶数据。存储桶创建过程中会启用软删除。
如果您在启用了软删除的情况下从存储桶中删除对象,则会发生以下情况:
已删除的对象会进入软删除状态。在此状态下,您无法以任何方式修改对象,并且 Autoclass 和对象生命周期管理等 Cloud Storage 功能不适用于或不会影响软删除的对象。
软删除的对象对存储桶不可见,除非您明确列出或恢复软删除的对象,并且无法读取软删除的对象中包含的对象数据。
存储桶会将软删除的对象及被软删除时对象的元数据保留指定的保留时长(最长 90 天)。默认情况下,此保留时长为七天。
Cloud Storage 会在软删除保留时长过后永久删除对象。如果您在删除数据后不想继续保留数据,可以停用软删除政策。如需了解详情,请参阅管理软删除政策。
添加软删除政策之前的注意事项
新存储桶会默认启用软删除,保留时长为七天。您还可以在创建存储桶期间或之后指定最长 90 天的保留时长。如果现有存储桶未启用软删除,则可以为其添加软删除政策。在为现有存储桶添加或更改软删除政策之前,请考虑以下事项:
新的软删除保留时长仅适用于您在软删除政策生效后删除的对象。
更新存储桶的软删除政策不会影响其现有的软删除对象。现有的软删除对象会保留它们被删除时生效的时长。
例如,如果您的存储桶中有两个对象(对象 A 和对象 B),并且您在存储桶中启用了软删除政策且默认保留时长为七天,然后删除对象 A,则对象 A 会作为软删除的对象保留未来七天的时间,之后才会被永久删除。
如果您在删除对象 A 之前更新了存储桶中的软删除政策,然后删除对象 B,则新的软删除政策将仅适用于对象 B。对象 A 会在其初始软删除政策(七天)完成后被删除。
您可以根据需要停用软删除政策。如需了解详情,请参阅管理软删除政策。
如果您在停用期间对包含软删除对象的存储桶停用软删除政策,则 Cloud Storage 会在永久删除之前将软删除的对象保留指定的保留时长。
对存储桶停用软删除政策后,Cloud Storage 在执行删除操作后不会保留已删除的数据。
您无法强制删除软删除的对象。这是为了防止恶意或意外删除。为防止存储桶进一步保留软删除的数据,我们建议您停用存储桶的软删除政策。
软删除保留时长
创建 Cloud Storage 存储桶时,软删除功能默认处于启用状态,且保留时长为七天。在保留时长内,您可以恢复已删除的对象,但保留时长结束后,Cloud Storage 会永久删除这些对象。通过更新存储桶的配置,您可以将保留时长增加到 90 天,或者通过将保留时长设置为 0 来停用该功能。启用软删除的最短天数为 7 天。
软删除保留时长以秒为单位;但为了方便,某些工具(例如 Google Cloud 控制台和 Google Cloud CLI)可让您使用其他时间单位设置和查看保留时长。
以下转换适用于此类情况:
- 一天等于 86400 秒。
- 一个月等于 31 天,2678400 秒。
对于 gcloud CLI,您可以在指定保留期限时指定整数和单位,其中单位可以是 s
、d
或 m
,分别表示秒、天或月。例如,7d43200s
设置保留期限为 7 天 43,200 秒(七天半)。
您可以将保留时长上限设置为 7,776,000 秒(90 天),或者保留时长下限为 604,800 秒(7 天)。使用 REST API 时,您还可以将保留时长设置为值 0,这会停用软删除政策。
恢复行为
恢复软删除对象时,Cloud Storage 会在删除该软删除对象所在的存储桶中创建该对象的副本。恢复后对象的元数据与删除时删除的对象的元数据相同。软删除保留时长结束后,Cloud Storage 会永久删除软删除的对象。
您可以在软删除保留时长结束之前恢复软删除的对象。
- 为了确保恢复成功,您必须尽早开始恢复,以便在软删除保留时长内完成恢复,因为对象会在该时长结束后被永久删除。
- 您可以通过指定对象列表来同步恢复软删除的对象,也可以创建长时间运行的操作来批量恢复在两个时间戳之间删除的对象。
- Cloud Storage 始终会将对象恢复到最初删除对象所在的存储桶。
为存储桶启用软删除后,您无法永久删除现行对象或软删除的对象。删除某个现行对象后,它会被软删除。软删除的对象会在软删除保留时长结束后被永久删除。
如果您删除项目,则 Cloud Storage 会永久删除该项目中的所有存储桶和对象。在这种情况下,您无法使用软删除功能恢复对象和存储桶。因此,请务必采取措施限制对项目级删除数据的访问权限,例如为项目设置安全锁,或将业务关键型数据备份到其他项目中的存储桶。
恢复软删除的对象版本时,Cloud Storage 会将软删除的对象的副本恢复为现行版本。如果已存在现行版本,则软删除版本的副本会替换现行版本,并且之前存在的现行版本会被软删除。在这种情况下,存储桶会包含以下对象:
- 被替换的处于软删除状态的现行对象
- 之前软删除对象的两个副本(一个现行副本和一个仍为软删除的副本)
所有这些对象副本都会产生存储费用,直到软删除的对象在保留时长结束后被永久删除为止。 如需详细了解与软删除的对象关联的费用,请参阅 Cloud Storage 价格。
在替换现行对象时,Cloud Storage 还会复制恢复后软删除的对象的元数据。这意味着在恢复时,对象级安全元数据和存储类别等设置会设置为该特定对象版本的最近状态。
删除存储桶时,软删除的对象不会永久删除。但是,必须先恢复正确的存储桶版本,然后才能恢复其中的软删除对象。如需恢复软删除的存储桶,请与 Google Cloud 支持团队联系。其他功能注意事项
软删除与所有 Cloud Storage 功能都兼容。启用此功能后,它会与其他 Cloud Storage 功能进行以下交互:
-
对象生命周期管理规则仅对现行对象和非当前对象有效,不会影响软删除的对象。对象生命周期管理删除的所有对象都会被软删除,而不是被永久删除。
-
软删除通过删除被软删除而不是被永久删除的非当前对象的对象版本控制,提供了额外的一层保护。
-
分段上传会在对象最终确定后受软删除保护。软删除不会保护在对象最终确定之前删除的分段上传片段。
-
Autoclass 无权访问软删除的对象,因此系统不会为软删除的对象计算其管理费用。对象在启用了 Autoclass 的存储桶中被软删除后,该对象的存储类别会被冻结,直到软删除保留时长结束为止。恢复软删除的对象会将其恢复为 Standard Storage 类别,就像读取 Autoclass 存储桶中的冷对象也会将存储类别重置回 Standard Storage 一样。
-
如果您在使用上述任一或两个功能时启用软删除,则无法在存储桶锁定和对象锁定保留政策中指定的时长内删除现行对象。在针对现行对象的上述任何保留政策过期后,您可以删除这些对象。然后,对象会进入软删除状态,并在软删除保留时长内保留。
-
您可以在组织政策中设置针对软删除的政策限制条件。这样一来,您在创建新存储桶或更新现有存储桶时必须设置特定的软删除保留时长。
如果恢复对象的软删除版本,Pub/Sub 会在每次成功恢复对象时触发 OBJECT_FINALIZE 事件。
软删除无法恢复托管式文件夹的 IAM 政策。如果您软删除了某个对象并删除了为该对象授予 IAM 政策的托管文件夹,则您可能需要重新创建这些 IAM 政策,然后才能获得恢复软删除对象所需的权限。
-
如果您创建存储桶时未自行添加软删除设置,则 Cloud Storage 默认设置是创建具有 7 天软删除保留时长的存储桶。您可以通过使用标记来更改此默认设置。该标记可以将新存储桶的默认保留时长更改为 7 到 90 天之间的任何值,也可以更改默认设置以对新存储桶停用软删除。您也可以使用标记来默认停用软删除。