软删除

设置 用法

本页面介绍了软删除功能及其用途。软删除会将最近删除的所有对象保留一段指定的时间,从而为您的数据提供默认存储桶级保护,防止意外或恶意删除。

概览

软删除功能可让您将存储桶中所有已删除或覆盖的对象保留指定的时长。

存储在 Cloud Storage 存储桶中的对象是不可变的。如果您覆盖或更改某个对象的数据,则 Cloud Storage 会删除其早期版本并将其替换为新版本。软删除会保留所有已删除的对象(无论是通过删除命令还是由于覆盖),实质上会在配置的保留时长内捕获对存储桶数据所做的所有更改。

创建 Cloud Storage 存储桶时,软删除功能默认处于启用状态,且保留时长为七天。在保留时长内,您可以恢复已删除的对象,但保留时长结束后,Cloud Storage 会永久删除这些对象。通过更新存储桶的配置,您可以将保留时长增加到 90 天,或者通过将保留时长设置为 0 来停用该功能。启用软删除的最短天数为 7 天。

如果您在启用了软删除的情况下从存储桶中删除对象,Cloud Storage 会执行以下操作:

  • 将已删除的对象转换为软删除状态。在此状态下,该对象对存储桶不可见,除非您明确列出或恢复软删除的对象。
  • 将该软删除的对象保留长达所配置的保留时长。在此期间,您无法以任何方式(包括通过对象生命周期规则Autoclass 等功能)修改此对象。
  • 保护对象最新版本的元数据(世代编号)。此元数据可以是对象最近删除的版本的元数据,也可以是现行对象(如果存在)的元数据。
  • 在软删除保留时长结束后,从存储桶中永久删除对象。

恢复软删除对象时,Cloud Storage 会在删除该软删除对象所在的存储桶中创建该对象的副本。恢复后对象的元数据与删除时删除的对象的元数据相同。软删除保留时长结束后,Cloud Storage 会永久删除软删除的对象。

为存储桶启用软删除后,您无法永久删除现行对象或软删除的对象。删除某个现行对象后,它会被软删除。软删除的对象会在软删除保留时长结束后被永久删除。

如果您删除项目,则 Cloud Storage 会永久删除该项目中的所有存储桶和对象。在这种情况下,您无法使用软删除功能恢复对象和存储桶。因此,请务必采取措施限制对项目级删除数据的访问权限,例如为项目设置安全锁,或将业务关键型数据备份到其他项目中的存储桶。

软删除政策

您可以为新存储桶或现有存储桶添加软删除政策

  • 为存储桶添加软删除政策后,Cloud Storage 会将您从该存储桶删除的所有对象保留指定的软删除保留时长。

您可以通过更改存储桶的保留时长来更新存储桶的现有软删除政策

  • 新的软删除保留时长仅适用于更改生效后删除的对象。
  • 更新后的保留时长不适用于现有的软删除对象。现有的软删除对象会保留它们被删除时生效的时长。

    例如,您的存储桶中有两个对象:对象 A 和对象 B。您在存储桶中启用软删除政策,默认保留时长为七天。您删除了对象 A。几天后,您将软删除保留时长更改为十天,然后删除对象 B。Cloud Storage 会继续保留对象 A,直到它受到保护七天为止,而对象 B 会保留十天。

您可以从存储桶中移除软删除政策

  • Cloud Storage 会在存储桶中所有软删除的对象被移除之前将其保留软删除政策中指定的时长。
  • Cloud Storage 会永久移除您在软删除政策停用后删除的所有对象。

软删除保留时长

软删除保留时长以秒为单位;但为了方便,某些工具(例如 Google Cloud 控制台Google Cloud CLI)允许您使用其他时间单位设置和查看保留时长。以下转换适用于此类情况:

  • 一天等于 86400 秒。
  • 一个月等于 31 天,2678400 秒。

您可以将保留时长上限设置为 7,776,000 秒(90 天)。

对于 gcloud CLI,您可以在指定保留期限时指定整数和单位,其中单位可以是 sdm,分别表示秒、天或月。例如,7d43200s 设置保留期限为 7 天 43,200 秒(七半天)。

恢复对象和存储桶

您可以在软删除保留时长结束之前恢复软删除的对象。

  • 为了确保恢复成功,您必须尽早开始恢复,以便在软删除保留时长内完成恢复,因为对象会在该时长结束后被永久删除。
  • 您可以通过指定对象列表来同步恢复软删除的对象,也可以创建长时间运行的操作来批量恢复在两个时间戳之间删除的对象。
  • Cloud Storage 始终会将对象恢复到最初删除对象所在的存储桶。

恢复软删除的对象版本时,Cloud Storage 会将软删除的对象的副本恢复为现行版本。如果已存在现行版本,则软删除版本的副本会替换现行版本,并且之前存在的现行版本会被软删除。在这种情况下,存储桶会包含以下对象:

  • 被替换的处于软删除状态的现行对象
  • 之前软删除对象的两个副本(一个现行副本和一个仍为软删除的副本)

所有这些对象副本都会产生存储费用,直到软删除的对象在保留时长结束后被永久删除为止。

在替换现行对象时,Cloud Storage 还会复制恢复后软删除的对象的元数据。这意味着在恢复时,对象级安全元数据和存储类别等设置会设置为该特定对象版本的最近状态。

删除存储桶时,软删除的对象不会永久删除。但是,必须先恢复正确的存储桶版本,然后才能恢复其中的软删除对象。如需恢复软删除的存储桶,请与 Google Cloud 支持团队联系。

其他功能注意事项

软删除与所有 Cloud Storage 功能都兼容。启用此功能后,它会与其他 Cloud Storage 功能进行以下交互:

  • 对象生命周期管理 (OLM) 规则仅对现行对象和非当前对象有效,不会影响被软删除后的对象。OLM 删除的所有对象都会被软删除,而不是被永久删除。
  • 对象版本控制提供了所有现有功能,但删除非当前对象(通过指定世代编号)会使该对象被软删除,而不是被永久删除。在这种情况下,软删除成为对象版本控制之上的第二层保护。
  • 分段上传会在对象最终确定后受软删除保护。软删除不会保护在对象最终确定之前删除的分段上传片段。
  • Autoclass 功能可管理所有现行对象(包括受对象版本控制保护的非当前对象)的存储类别。Autoclass 无权访问软删除的对象。因此,系统不会评估软删除对象的 Autoclass 管理费用。对象在启用了 Autoclass 的存储桶中被软删除后,该对象的存储类别会被冻结,直到软删除保留时长结束为止。恢复软删除的对象会将其恢复为 Standard Storage 类别,就像读取 Autoclass 存储桶中的冷对象也会将存储类别重置回 Standard Storage 一样。
  • 存储桶锁定对象保留锁定功能可防止在为这些功能设置的保留时长内从现行存储桶中删除对象。但是,通过软删除,您可以删除现行对象并在需要时恢复它们。

    如果您在使用上述任一或两个功能时启用软删除,则无法在存储桶锁定和对象锁定保留政策中指定的时长内删除现行对象。在针对现行对象的上述任何锁定过期后,您可以删除这些对象。然后,对象会进入软删除状态,并在软删除保留时长内保留。

  • 您可以在组织政策中设置针对软删除的政策限制条件。

    这会强制您在创建新存储桶或更新现有存储桶时设置特定的软删除保留时长。

  • 如果恢复对象的软删除版本,Pub/Sub 会在每次成功恢复对象时触发 OBJECT_FINALIZE 事件。

  • 软删除无法恢复托管式文件夹的 IAM 政策。如果您软删除了某个对象并删除了为该对象授予 IAM 政策的托管文件夹,则您可能需要重新创建这些 IAM 政策,然后才能获得恢复软删除对象所需的权限。

后续步骤