設定回收桶保留政策

根據預設,Compute Engine 會將刪除的標準快照保留在回收桶中,保留期限為三天,之後就會永久刪除快照。您可以修改資源回收筒保留政策,縮短保留期限或停用資源回收筒。

本文說明如何查看及設定回收桶保留政策。

如要查看回收桶內容或從回收桶還原快照,請參閱「管理回收桶」。

事前準備

  • 如果尚未設定驗證,請先完成設定。 驗證可確認您的身分,以便存取 Cloud de Confiance by S3NS 服務和 API。如要從本機開發環境執行程式碼或範例,請選取下列其中一個選項,向 Compute Engine 進行驗證:

    選取這個頁面上您打算如何使用範例的分頁:

    控制台

    使用 Cloud de Confiance 控制台存取 Cloud de Confiance by S3NS 服務和 API 時,無須設定驗證。

    gcloud

    1. 安裝 Google Cloud CLI,然後 使用聯合身分登入 gcloud CLI。登入後,執行下列指令來初始化 Google Cloud CLI:

      gcloud init
  • 設定預設地區和區域。
  • REST

    如要在本機開發環境中使用本頁的 REST API 範例,請使用您提供給 gcloud CLI 的憑證。

      安裝 Google Cloud CLI,然後 使用聯合身分登入 gcloud CLI。

    詳情請參閱 Cloud de Confiance 驗證說明文件中的「使用 REST 進行驗證」。

必要角色和權限

如要取得查看及管理資源回收筒保留政策所需的權限,請要求管理員授予您專案的「Compute 管理員」 (roles/compute.admin) IAM 角色。如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。

這個預先定義的角色具備查看及管理回收桶資料保留政策所需的權限。如要查看確切的必要權限,請展開「Required permissions」(必要權限) 部分:

所需權限

如要查看及管理回收桶資料保留政策,必須具備下列權限:

  • 如要在資源回收筒保留政策中設定、修改及刪除規則,請按照下列步驟操作: compute.snapshotRecycleBinPolicy.patch
  • 如要查看回收桶保留政策,請執行下列步驟: compute.snapshotRecycleBinPolicy.get
  • 如要查看標準快照的回收桶保留政策: 點選快照上的 compute.snapshots.getEffectiveRecycleBinRule

您或許還可透過自訂角色或其他預先定義的角色取得這些權限。

回收桶保留政策的運作方式

資源回收筒保留政策是一組全域規則,可定義所有專案和機構中標準快照的保留期限。

回收桶資料保留政策具有下列功能:

  • 三天的預設保留期限稱為「系統預設規則」。你無法移除系統預設規則,但可以覆寫。

  • 如要覆寫系統預設規則,您可以新增分別套用至專案或機構的專案或機構預設規則。您也可以在回收桶資料保留政策中新增以標記為基礎的規則。

  • 系統會依下列方式解決保留政策中的規則衝突:

    1. 以標記為準的規則會覆寫專案和機構的預設規則。
    2. 如果標準快照同時適用多項以標記為準的規則,系統會套用保留期限最長的規則。不過,即使專案預設規則的保留期限較長,也不會覆寫以標記為準的規則。
    3. 專案預設規則會覆寫機構預設規則。
    4. 如果沒有任何規則適用於標準快照,系統就會套用預設規則。

    詳情請參閱「垃圾桶保留政策中的規則階層」。

  • 雖然 Google 不建議停用資源回收筒,但您可以為專案、機構或標記建立保留期限為零天的規則,藉此停用資源回收筒。刪除規則後,系統會立即清除所有符合規則的標準快照。

  • 回收桶保留政策的變更不會套用至現有的可復原快照,也就是回收桶中現有的已刪除標準快照。

限制

  • 系統僅支援標準快照。刪除封存快照、即時快照、磁碟和映像檔後,系統會立即永久清除這些項目。
  • 回收桶保留政策的變更不會套用至現有的可復原快照,也就是回收桶中現有的已刪除標準快照。
  • 如要為標記指定保留政策規則,標記必須已存在。
  • 您只能為專案、機構或標記設定保留政策規則。
  • 如果為標記設定保留政策規則,保留政策只會套用至有該標記的標準快照。如果快照、即時快照、磁碟和任何其他資源有該標記,則不相容於資源回收筒,刪除後會永久清除。

設定或移除專案或機構的預設保留期限

如要在專案或機構中覆寫三天的系統預設規則,或停用資源回收筒,請為專案或機構設定預設保留政策規則。

您可以使用 gcloud CLI 或 REST。

gcloud CLI

使用 gcloud beta compute snapshot-recycle-bin-policy update 指令。使用 --set-rule=default 旗標設定預設資料保留政策規則,並使用 --standard-snapshots-retention-duration-days 旗標指定規則的保留期限。

  • 如要為機構設定預設保留政策,請使用下列指令:

    gcloud beta compute snapshot-recycle-bin-policy update \
      --set-rule=default \
      --standard-snapshots-retention-duration-days=DEFAULT_RETENTION_PERIOD_DAYS \
      --organization=ORGANIZATION_ID
    

    將下列項目替換為對應值:

    • DEFAULT_RETENTION_PERIOD_DAYS:專案或機構的保留期限 (以天為單位)。指定介於 0 至 7 之間的值。如要停用資源回收筒,請指定 0。
    • ORGANIZATION_ID:選用。 機構的 ID,您要為該機構設定預設保留規則。例如:123456789012。你必須指定組織 ID 或專案 ID,但不能同時指定兩者。

    如要為專案設定預設保留政策,請在上述指令中將 --organization 旗標替換為 --project=<var>PROJECT_ID</var>,其中 PROJECT_ID 是專案的 ID。

  • 如要移除專案或機構的預設保留規則,請使用相同指令,但指定 --remove-rule=default,而非 --set-rule=default。

    舉例來說,如要移除機構的預設保留政策規則,請執行下列操作:

    gcloud beta compute snapshot-recycle-bin-policy update \
      --organization=ORGANIZATION_ID \
      --remove-rule=default
    

    將 ORGANIZATION_ID 替換為組織 ID。

REST

建構 PATCH 要求,以呼叫 snapshotRecycleBinPolicy 方法。

在要求主體中,加入 rules 物件,指定預設的資源回收筒保留期限 (以天為單位)。

  • 如要為專案新增或修改保留政策,請按照下列步驟操作:

    PATCH  https://compute.s3nsapis.fr/compute/beta/projects/PROJECT_ID/global/snapshotRecycleBinPolicy
    {
    "rules": {
      "default": {
        "standardSnapshots": {
          "retentionDurationDays": DEFAULT_RETENTION_PERIOD_DAYS
        }
      }
    }
    }
    

    將下列項目替換為對應值:

    • PROJECT_ID:專案 ID,例如 dev-project。
    • DEFAULT_RETENTION_PERIOD_DAYS:預設保留期限 (以天為單位)。指定介於 0 至 7 之間的值。 如要停用資源回收筒,請指定 0。
  • 如要新增或修改機構的保留政策,請發出 PATCH 要求 (如上例所示),但使用下列網址:

    PATCH https://compute.s3nsapis.fr/compute/beta/organizations/ORGANIZATION_ID/global/snapshotRecycleBinPolicy/

    要求主體與上一個範例相同。

    將 ORGANIZATION_ID 替換為組織 ID。例如:123456789012。

  • 如要移除專案或機構的預設保留規則,請發出類似的 PATCH 要求,但請為 default 規則指定 null。

    舉例來說,如要移除機構的預設保留規則,請按照下列步驟操作:

    PATCH https://compute.s3nsapis.fr/compute/beta/organizations/ORGANIZATION_ID/global/snapshotRecycleBinPolicy/
    {
    "rules": {
       "default": null
     }
    }
    

    將 ORGANIZATION_ID 替換為組織 ID。

設定或移除標記的保留政策

如要為具有特定標記的標準快照設定特定保留期限,請在專案或組織層級設定以標記為準的規則。以代碼為準的規則會覆寫專案或機構的預設規則,並具有下列特徵:

  • 組織或專案層級的標記規則會套用至組織或專案中所有含有標記的標準快照。
  • 只有在專案層級規則的保留期限較長時,才會覆寫組織層級的標記規則。

    舉例來說,如果專案層級的標記規則保留期限為 1 天,組織層級的標記規則保留期限為 2 天,則系統會採用組織層級的規則。

詳情請參閱「垃圾桶保留政策中的規則階層」。

您可以使用 gcloud CLI 或 REST。

gcloud CLI

如要為標記設定資料保留政策規則,請使用 gcloud beta compute snapshot-recycle-bin-policy update 指令。使用 --set-rule 標記指定標記名稱,並使用 --standard-snapshots-retention-duration-days 標記指定標記的資源回收筒保留期限 (以天為單位)。

gcloud beta compute snapshot-recycle-bin-policy update \
  --set-rule=TAG_NAMESPACED_NAME \
  --standard-snapshots-retention-duration-days=RETENTION_PERIOD_DAYS \
  --organization=ORGANIZATION_ID

將下列項目替換為對應值:

  • TAG_NAMESPACED_NAME:標記的命名空間限定名稱,包括其值。例如:my-project-id/tag-key/tag-value 或 my-organization-id/tag-key/tag-value。
  • RETENTION_PERIOD_DAYS:保留期限 (以天為單位),從 0 變更為 7。如要為具有這個標記的快照停用回收桶,請指定 0。
  • ORGANIZATION_ID:選用。 規則套用的機構 ID。例如:123456789012。您必須指定組織 ID 或專案 ID,但不能同時指定兩者。

如要為專案設定預設保留政策,請在上述指令中將 --organization 旗標替換為 --project=<var>PROJECT_ID</var>,其中 PROJECT_ID 是專案的 ID。

如要移除標記的資料保留政策規則,請使用相同指令,但指定 --remove-rule=TAG_NAMESPACED_NAME 而非 --set-rule。舉例來說,如要移除機構的標記規則,請執行下列指令:

gcloud beta compute snapshot-recycle-bin-policy update \
  --organization=ORGANIZATION_ID \
  --remove-rule=TAG_NAMESPACED_NAME

REST

如要為標記設定資料保留政策規則,請向 snapshotRecycleBinPolicy 方法建構 PATCH 要求。在要求主體中,加入 rules 物件,指定標記名稱和保留期限 (以天為單位)。

  • 如要為專案中的標記設定或更新資料保留政策規則,請按照下列步驟操作:
PATCH https://compute.s3nsapis.fr/compute/beta/projects/PROJECT_ID/global/snapshotRecycleBinPolicy/
{
  "rules": {
    "TAG_NAMESPACED_NAME_1": {
      "standardSnapshots": { 
        "retentionDurationDays": RETENTION_PERIOD_DAYS
      }
    }
  }
}

將下列項目替換為對應值:

  • PROJECT_ID:專案 ID。
  • TAG_NAMESPACED_NAME:標記的命名空間限定名稱,包括其值。例如:my-project-id/env/prod 或 my-organization-id/env/build。
  • RETENTION_PERIOD_DAYS:保留期限 (以天為單位),從 0 變更為 7。如要為具有這個標記的快照停用回收桶,請指定 0。

  • 如要為機構中的標記設定或更新保留政策規則,請如上述範例發出 PATCH 要求,但使用下列網址。

PATCH https://compute.s3nsapis.fr/compute/beta/organizations/ORGANIZATION_ID/global/snapshotRecycleBinPolicy/

將 ORGANIZATION_ID 替換為機構 ID。要求主體如先前範例所述。

  • 如要移除標記的保留政策規則,請建構 PATCH 要求,如上述範例所示,但請為標記型規則指定 null。舉例來說,如要移除專案中以標記為準的保留政策規則:
PATCH https://compute.s3nsapis.fr/compute/beta/projects/PROJECT_ID/global/snapshotRecycleBinPolicy
{
  "rules": {
    "TAG_NAMESPACED_NAME_1": null
  }
}

查看專案或組織的回收桶保留政策

如要判斷專案或機構是否設有回收桶的自訂規則、查看任何以標記為準的規則,或檢查回收桶是否已停用,請查看專案或機構回收桶保留政策中的規則。

如要查看專案或機構的資源回收筒保留政策中的規則,請使用 gcloud CLI 或 REST。

gcloud CLI

如要查看專案或機構的資源回收筒保留政策 (包括以標記為準的規則),請使用 gcloud beta compute snapshot-recycle-bin-policy describe 指令:

  • 如要查看機構的回收桶資料保留政策,請按照下列步驟操作:

    gcloud beta compute snapshot-recycle-bin-policy describe \
      --organization=ORGANIZATION_ID
    

    將 ORGANIZATION_ID 替換為機構的 ID。

  • 如要查看專案的回收桶保留政策,請按照下列步驟操作:

    gcloud beta compute snapshot-recycle-bin-policy describe \
    --project=PROJECT_ID
    

    將 PROJECT_ID 替換為專案 ID。

輸出內容是規則物件清單,類似於下列內容。輸出內容會包含三天的系統預設規則。

  rules:
    default:
      standardSnapshots:
        retentionDurationDays: '2'
    database-project/Testing-tag-key/build:
      standardSnapshots:
        retentionDurationDays: '0'
    database-project/Testing-tag-key/critical:
      standardSnapshots:
        retentionDurationDays: '5'
    systemRules:
      default:
        standardSnapshots:
          retentionDurationDays: '3'

每項規則的 retentionDurationDays 欄位會以天為單位,指出規則的保留期限。在本範例中,專案 database-project 有三項規則:

  • 所有含有 Testing-tag-key/critical 標記的快照都適用五天規則。
  • 立即刪除所有含有 Testing-tag-key/build 標記的快照。
  • 專案中所有其他快照的預設保留期限為兩天。

REST

如要查看專案或機構的所有保留政策規則 (包括以標記為準的規則),請對 snapshotRecycleBinPolicy.get 方法建構 GET 要求。

  • 如要查看機構的保留政策,請按照下列步驟操作:

    GET https://compute.s3nsapis.fr/compute/beta/organizations/ORGANIZATION_ID/global/snapshotRecycleBinPolicy
    

    將 ORGANIZATION_ID 替換為機構 ID。

  • 如要查看專案的保留政策,請按照下列步驟操作:

    GET https://compute.s3nsapis.fr/compute/beta/projects/PROJECT_ID/global/snapshotRecycleBinPolicy
    

    將 PROJECT_ID 替換為專案 ID。

回覆內容大致如下。輸出內容會包含系統預設的三天規則。

  {
    "rules": {
     "default": {
      "standardSnapshots": {
        "retentionDurationDays": "2"
      }
    },
    "database-project/Testing-tag-key/build": {
      "standardSnapshots": {
        "retentionDurationDays": "0"
      }
    },
    "database-project/Testing-tag-key/critical": {
      "standardSnapshots": {
        "retentionDurationDays": "5"
      }
    },
     "systemRules": {
      "default": {
       "standardSnapshots": {
         "retentionDurationDays": "3"
      }
     }
    }
  }
 }

每項規則的「retentionDurationDays」欄位會以天為單位,顯示規則的保留期限。在本範例中,專案 database-project 有三項規則:

  • 所有含有 Testing-tag-key/critical 標記的快照都適用五天規則。
  • 立即刪除所有含有 Testing-tag-key/build 標記的快照。
  • 專案中所有其他快照的預設保留期限為兩天。

如果保留期限為零,Compute Engine 會在刪除快照後立即永久清除快照。否則,保留期限會指出 Compute Engine 將快照保留在資源回收筒的時間長度,之後就會永久刪除。

查看代碼的回收桶保留期限

如要查看標記的保留政策,請擷取定義標記的專案或組織的保留政策。

查看特定快照的回收桶保留期限

如要判斷標準快照在刪除後是否會保留在資源回收筒中,以及保留多久,請查看保留期限。如果保留期限為零,系統會在刪除快照後立即永久清除。否則,保留期限會指出快照刪除後,在回收桶中保留的時間長度。

您可以使用Cloud de Confiance 控制台、gcloud CLI 或 REST,檢查特定快照的保留期限。

Cloud de Confiance 控制台

  1. 前往 Cloud de Confiance 控制台的「Snapshots」(快照) 頁面。

前往「快照」頁面

  1. 在「快照」分頁中,查看專案中的快照清單。

  2. 在「Name」(名稱) 欄中,按一下標準快照的名稱。系統會顯示所選快照的「快照詳細資料」頁面。

  3. 「回收桶保留期限」屬性會顯示快照的回收桶保留期限。

gcloud CLI

如要查看特定快照的保留期限,請使用 gcloud beta compute snapshots get-effective-recycle-bin-rule 指令。

gcloud beta compute snapshots get-effective-recycle-bin-rule \
  SNAPSHOT_NAME \
  --project=PROJECT_ID

將下列項目替換為對應值:

  • PROJECT_ID:包含快照的專案 ID。
  • SNAPSHOT_NAME:快照名稱。

輸出結果會與下列內容相似:

retentionDurationDays: '5'

retentionDurationDays 欄位會指出快照回收桶的保留期限 (以天為單位)。

REST

如要查看特定快照的保留期限,請向 getEffectiveRecycleBinRule 方法建構 GET 要求。

GET https://compute.s3nsapis.fr/compute/beta/projects/PROJECT_ID/global/snapshots/SNAPSHOT_NAME/getEffectiveRecycleBinRule

將下列項目替換為對應值:

  • PROJECT_ID:包含快照的專案 ID。
  • SNAPSHOT_NAME:快照名稱。

回覆類似以下內容:

{
  "retentionDurationDays": "5"
}

retentionDurationDays 欄位會指出快照回收桶的保留期限 (以天為單位)。

如果保留期限為零,Compute Engine 會在刪除快照後立即永久清除。否則,保留期限會指出 Compute Engine 將快照保留在資源回收筒的時間長度,之後就會永久刪除。

如要判斷快照適用保留政策中的哪些規則,請將快照的標記與專案和組織的保留政策中的標記和預設規則進行比較。

如要變更標準快照的保留期限,請選擇下列任一選項:

後續步驟