避免意外刪除 VM

本文件說明如何在執行個體資源上設定 deletionProtection 屬性,以免刪除特定的 VM 執行個體。如要進一步瞭解 VM 執行個體,請參閱執行個體說明文件。

在執行工作負載時,某些 VM 執行個體對應用程式或服務的執行可能尤其重要,例如執行 SQL 伺服器的執行個體、用作授權管理員的伺服器等。這些 VM 執行個體可能需要時時刻刻保持運作,因此得採取保護措施,以免 VM 遭到刪除。

設定 deletionProtection 旗標,可保護 VM 執行個體以防不慎刪除。如有使用者嘗試刪除設有 deletionProtection 旗標的 VM 執行個體,該要求會失敗。使用者的角色必須具有 compute.instances.create 權限,才可重設旗標,允許刪除資源。

事前準備

規格

  • 防刪除功能無法防止下列動作:

  • 一般 VM 和先占 VM 均可使用防刪除功能。

  • 防刪除功能無法使用在屬於代管執行個體群組的 VM 上,但可用在屬於非受管執行個體群組的執行個體上。

  • 無法在執行個體範本中指定防刪除功能。

權限

如要執行這項工作,您必須擁有以下權限或者對資源具有以下 IAM 角色

權限

  • compute.instances.create

角色

  • compute.admin
  • compute.instanceAdmin.v1

於建立執行個體時設定防刪除功能

根據預設,系統會停用執行個體的刪除保護功能。如要啟用防刪除功能,請參閱以下操作說明。

Console

  1. 前往「VM instances」(VM 執行個體) 頁面。

    前往「VM instances」(VM 執行個體) 頁面

  2. 如果出現系統提示,請選取您的專案,然後按一下 [Continue] (繼續)。
  3. 按一下 [Create instance] (建立執行個體) 按鈕。
  4. 展開 [Management, security, disks, networking, sole tenancy] (管理、安全性、磁碟、網路、單獨租用) 區段。
  5. 勾選「Management」(管理)下方的 [Enable deletion protection] (啟用防刪除功能) 核取方塊。

    VM 刪除核取方塊螢幕截圖

  6. 繼續執行 VM 建立程序。

gcloud

建立 VM 執行個體時,請加入 --deletion-protectionno-deletion-protection 旗標。根據預設,系統會停用防刪除功能。如要啟用,請使用:

gcloud compute instances create [INSTANCE_NAME] --deletion-protection

其中的 [INSTANCE_NAME] 是需要的執行個體的名稱。

於建立時停用防刪除功能:

gcloud compute instances create [INSTANCE_NAME] --no-deletion-protection

API

在 API 中建立 VM 執行個體時,請在要求主體中加入 deletionProtection 屬性。例如:

POST https://compute.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/instances

{
  "name": "[INSTANCE_NAME]",
  "deletionProtection": "true",
  ...
}

如要停用防刪除功能,請將 deletionProtection 設為 false

切換現有執行個體的防刪除功能

無論執行個體的目前狀態為何,均可切換現有執行個體的防刪除功能。確切來說,不用停止執行個體,也可以啟用或停用防刪除功能。

Console

  1. 前往「VM instances」(VM 執行個體) 頁面。

    前往「VM instances」(VM 執行個體) 頁面

  2. 如果出現系統提示,請選取您的專案,然後按一下 [Continue] (繼續)
  3. 請按一下想要切換防刪除功能的執行個體名稱。執行個體詳細資料頁面隨即會顯示。
  4. 在執行個體詳細資料頁面上,完成以下步驟:

    1. 按一下頁面頂端的 [Edit] (編輯) 按鈕。
    2. 在「Deletion Protection」(防刪除功能) 下方,勾選方塊可啟用防刪除功能,取消勾選則可停用。

      VM 刪除核取方塊螢幕截圖

    3. 儲存變更。

gcloud

使用 gcloud 工具,以 --deletion-protection--no-deletion-protection 旗標執行 update 指令:

gcloud compute instances update [INSTANCE_NAME] \
    [--deletion-protection | --no-deletion-protection]

舉例來說,如要啟用名為 example-vm 的執行個體的防刪除功能:

gcloud compute instances update example-vm --deletion-protection

API

在 API 中,可使用 delectionProtection 查詢參數,向 setDeletionProtection 方法發出 POST 要求。例如:

POST https://compute.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/instances/[INSTANCE_NAME]/setDeletionProtection?deletionProtection=true

要停用防刪除功能,請將 deletionProtection 設為 false。請勿透過此要求提供要求主體。

判斷執行個體是否已啟用防刪除功能

您可以判斷執行個體是否已在 gcloud tool 或 API 中啟用防刪除功能。

Console

  1. 前往「VM instances」(VM 執行個體) 頁面。

    前往「VM instances」(VM 執行個體) 頁面

  2. 如果出現系統提示,請選取您的專案,然後按一下 [Continue] (繼續)
  3. 在「VM instances」(VM 執行個體) 頁面上,下拉 [Columns] (欄) 選單,然後啟用 [Deletion protection] (防刪除功能)。

    VM 刪除選項螢幕截圖

  4. 此時會顯示具有防刪除功能圖示的新欄。如果 VM 已啟用防刪除功能,執行個體名稱旁會出現圖示。

gcloud

gcloud 工具中,執行 instances describe 指令,並搜尋防刪除功能的欄位。例如:

gcloud compute instances describe example-instance | grep "deletionProtection"

該工具會傳回 deletionProtection 屬性的值,並設為 truefalse

deletionProtection: false

API

在 API 中,發出 GET 要求並尋找 deletionProtection 欄位:

GET https://compute.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/instances/[INSTANCE_NAME]

後續步驟

本頁內容對您是否有任何幫助?請提供意見:

傳送您對下列選項的寶貴意見...

這個網頁
Compute Engine 說明文件