使用 Cloud KMS 金鑰保護資源

您可以使用 Cloud Key Management Service 金鑰,而非 Google-owned and Google-managed encryption keys,保護 Compute Engine 磁碟、快照和機器映像檔。使用 Cloud KMS 金鑰,即可控管及管理加密金鑰,並符合特定法規遵循或監管規定。詳情請參閱「客戶自行管理的加密金鑰」一文。

在 Cloud KMS 中管理的金鑰稱為客戶自行管理的加密金鑰 (CMEK)。本文說明如何使用手動建立的 CMEK,建立及保護 Compute Engine 磁碟、機器映像檔、即時快照和標準快照。

如要使用 Cloud KMS Autokey 建立的 CMEK,請參閱「使用 Cloud KMS Autokey 建立受保護的資源」。

事前準備

  • 瞭解磁碟、映像檔、標準快照和虛擬機器 (VM) 執行個體。
  • 決定要在同一個 Google Cloud 專案中執行 Compute Engine 和 Cloud KMS,還是要在不同專案中執行。如要瞭解 Google Cloud 專案 ID 和專案編號,請參閱「識別專案」。
  • 針對執行 Cloud KMS 的 Google Cloud 專案,請執行下列步驟:
    1. 啟用 Cloud KMS API (如果尚未啟用)。

      啟用 API 時所需的角色

      如要啟用 API,您必須具備 serviceusage.services.enable 權限。如果您建立了專案,可能已透過「擁有者」角色 (roles/owner) 取得這項權限。否則,您可以透過「服務使用管理員」角色 (roles/serviceusage.serviceUsageAdmin) 取得這項權限。瞭解如何授予角色。

      啟用 API

  • 如要以機密模式建立新的 Hyperdisk Balanced 磁碟區,請查看相關限制和支援的地區,確認您的用途是否支援。
  • 如果尚未設定驗證,請先完成設定。 驗證可確認您的身分,以便存取 Google Cloud 服務和 API。如要從本機開發環境執行程式碼或範例,請選取下列其中一個選項,向 Compute Engine 進行驗證:

    請根據您打算如何使用本頁範例,選取對應的分頁標籤:

    控制台

    使用 Google Cloud 控制台存取 Google Cloud 服務和 API 時,您不需要設定驗證機制。

    gcloud

    1. 安裝 Google Cloud CLI。 完成後,執行下列指令來初始化 Google Cloud CLI:

      gcloud init

      若您採用的是外部識別資訊提供者 (IdP),請先 使用聯合身分登入 gcloud CLI。

  • 設定預設區域和可用區。
  • REST

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

      安裝 Google Cloud CLI。

      若您採用的是外部識別資訊提供者 (IdP),請先 使用聯合身分登入 gcloud CLI。

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

必要角色和權限

Compute Engine 服務代理的格式如下:

service-PROJECT_NUMBER@compute-system.iam.gserviceaccount.com

您可以使用 Google Cloud CLI 指派角色:

gcloud projects add-iam-policy-binding KMS_PROJECT_ID \
    --member serviceAccount:service-PROJECT_NUMBER@compute-system.iam.gserviceaccount.com \
    --role roles/cloudkms.cryptoKeyEncrypterDecrypter

更改下列內容:

  • KMS_PROJECT_ID:執行 Cloud KMS 的Google Cloud 專案 ID (即使與執行 Compute Engine 的專案相同)
  • PROJECT_NUMBER:執行 Compute Engine 資源的專案專案編號 (不是 Google Cloud 專案 ID) Google Cloud

為確保 Compute Engine 服務代理具備必要權限,可使用 Cloud KMS 金鑰保護資源,請要求管理員將專案的 Cloud KMS CryptoKey 加密者/解密者 (roles/cloudkms.cryptoKeyEncrypterDecrypter) IAM 角色授予 Compute Engine 服務代理。

如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。

這個預先定義的角色具備使用 Cloud KMS 金鑰保護資源所需的權限。如要查看確切的必要權限,請展開「Required permissions」(必要權限) 部分:

所需權限

您必須具備下列權限,才能使用 Cloud KMS 金鑰保護資源:

  • 如要輪替保護磁碟的加密金鑰,請按照下列步驟操作: compute.disks.updateKmsKey
  • 如要輪替保護快照的加密金鑰,請按照下列步驟操作: compute.snapshots.updateKmsKey

管理員或許也能透過自訂角色或其他預先定義的角色,將這些權限授予 Compute Engine 服務代理。

加密規格

用於保護 Compute Engine 資料的 Cloud KMS 金鑰為 AES-256 金鑰。這些金鑰是金鑰加密金鑰,會加密用於加密資料的資料加密金鑰,而非資料本身。

磁碟上的資料會使用 Google-owned and Google-managed encryption keys加密。如要瞭解 Google Cloud預設加密的相關規格,請參閱安全性說明文件中的「預設靜態資料加密」。

使用 Hyperdisk Balanced 和 Cloud HSM 的機密模式時,資料加密金鑰 (DEK) 會具備採用專屬硬體安全區提供的額外安全屬性。

限制

  • 您無法使用 CMEK 加密現有資源。只有在建立磁碟、映像檔和快照時,才能使用 CMEK 加密。

  • 從 CMEK 加密的即時快照建立磁碟時,必須指定用於加密來源磁碟的金鑰。使用其他 CMEK 加密資源 (例如磁碟複製和標準快照) 時,您不必指定金鑰。

  • 從以 CMEK 加密的磁碟建立區域範圍快照 (預先發布) 時,您必須使用與快照位於相同位置的區域 CMEK 建立快照。這可確保快照的區域隔離,並提高快照的可靠性。

  • 您無法在本機 SSD 磁碟使用自有金鑰,因為金鑰是由 Google Cloud 基礎架構代管,VM 終止後就會刪除。

  • 區域資源 (磁碟) 只能透過下列其中一個 Cloud KMS 位置的金鑰加密:

    • 與磁碟位於相同區域的金鑰。
    • 與磁碟位於相同地理位置的多區域金鑰。
    • 全域位置的金鑰。

    舉例來說,可用區 us-west1-a 中的磁碟可由全球位置、us-west1 區域或 us 多區域中的金鑰加密。

    全域資源 (例如映像檔和快照) 可由任何位置的金鑰加密。詳情請參閱「Cloud KMS 的位置類型」。

  • 您無法變更或移除映像檔或即時快照的加密金鑰。

  • 您無法移除磁碟或快照的加密金鑰,也無法將金鑰從 CMEK 變更為 Google-owned and managed key。請改為建立磁碟或快照的副本,並為副本指定新的加密類型。

    詳情請參閱「從磁碟中移除 CMEK」和「從快照中移除 CMEK」。

  • 您無法輪替或變更線上 Confidential Hyperdisk 磁碟區的 CMEK,也無法變更線上 Hyperdisk 磁碟區的 CMEK,這些磁碟區會連結至不支援的機器類型。

  • 您只能輪替或變更下列磁碟類型的 CMEK:

    • 所有 Persistent Disk 磁碟區
    • 如果磁碟和快照並非使用Google Cloud的 Terraform 供應商建立,
    • 離線 Hyperdisk 磁碟區
    • 離線機密 Hyperdisk 磁碟區
    • 連結至第一代或第二代機型的線上 Hyperdisk 磁碟區
    • 連接至下列第三代或第四代機型的線上 Hyperdisk 磁碟區:

      • A3、A4、A4X 和 A4X Max
      • C3D
      • C4N
      • H3 和 H4D
      • M3、M4 和 M4N
      • Z3 和 Z4D
      • 所有 TPU 版本
      • 所有裸機機型
  • 如要變更或輪替磁碟或快照的 CMEK,必須使用 gcloud CLI 或 REST,無法使用 Google Cloud 控制台。

  • 如要使用與加密來源磁碟不同的 CMEK 建立快照,必須使用 gcloud CLI 或 REST,無法使用 Google Cloud 控制台。

  • 如果您使用 Google Cloud 的 Terraform 供應商建立或管理 CMEK 加密磁碟和快照,則無法變更或輪替 CMEK。請勿嘗試使用 gcloud CLI 或 REST 變更或輪替 CMEK。

  • 如果您是透過複製磁碟建立 Hyperdisk 磁碟區,除非已刪除來源磁碟和來源磁碟的所有其他副本,否則無法變更金鑰。

手動或自動建立金鑰

您可以手動建立 Cloud KMS 金鑰,也可以使用 Cloud KMS Autokey。Autokey 會自動佈建及指派金鑰,簡化 Cloud KMS 金鑰的建立和管理作業。有了 Autokey,您就不必預先佈建金鑰環、金鑰和服務帳戶。而是在建立 Compute Engine 資源時,視需要產生。詳情請參閱「Autokey 總覽」。

手動建立金鑰環和金鑰

針對執行 Cloud KMS 的 Google Cloud 專案,請按照「建立金鑰環和金鑰」一文所述,建立金鑰環和金鑰。

使用 CMEK 加密新的永久磁碟

在建立 VM 或磁碟時提供金鑰,即可加密新的永久磁碟。

控制台

  1. 前往 Google Cloud 控制台的「Disks」(磁碟) 頁面。

    前往「Disks」(磁碟) 頁面

  2. 按一下 [Create disk] (建立磁碟),然後輸入新磁碟的屬性。
  3. 在「Encryption」(加密) 底下,選取 [Customer-managed key] (客戶管理的金鑰)。
  4. 在下拉式選單中,選取要用來加密這個磁碟的 Cloud KMS 金鑰。
  5. 如要建立磁碟,請按一下「Create」(建立)。

gcloud

使用 gcloud compute disks create 指令建立加密磁碟,並使用 --kms-key 旗標指定金鑰。

gcloud compute disks create DISK_NAME \
  --kms-key projects/KMS_PROJECT_ID/locations/REGION/keyRings/KEY_RING/cryptoKeys/KEY

更改下列內容:

  • DISK_NAME:新磁碟的名稱
  • KMS_PROJECT_ID:擁有 Cloud KMS 金鑰的專案
  • REGION:金鑰所在的區域
  • KEY_RING:金鑰所屬金鑰環的名稱
  • KEY:用於加密磁碟的金鑰名稱

REST

建構 POST 要求,傳送至 instances.insert 方法。如要加密磁碟,請搭配使用 diskEncryptionKey 屬性和 kmsKeyName 屬性。舉例來說,您可以在建立 VM 時,使用下列指令,透過 Cloud KMS 金鑰加密新磁碟:

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

{
"machineType": "zones/ZONE/machineTypes/MACHINE_TYPE",
"disks": [
 {
  "type": "PERSISTENT",
  "diskEncryptionKey": {
    "kmsKeyName": "projects/KMS_PROJECT_ID/locations/REGION/keyRings/KEY_RING/cryptoKeys/KEY"
  },
  "initializeParams": {
   "sourceImage": "SOURCE_IMAGE"
  },
  "boot": true
 }
],
...
}

更改下列內容:

  • PROJECT_ID:執行 Compute Engine 的Google Cloud 專案 ID
  • ZONE:要建立 VM 的可用區
  • MACHINE_TYPE:機型,例如 c3-standard-4
  • KMS_PROJECT_ID:擁有 Cloud KMS 金鑰的專案
  • REGION:磁碟所在的區域
  • KEY_RING:金鑰所屬金鑰環的名稱
  • KEY:用於加密磁碟的金鑰名稱
  • SOURCE_IMAGE:建立 VM 時要使用的映像檔,例如 projects/debian-cloud/global/images/debian-13-trixie-v20260902

同樣地,您可以使用 disks.insert 方法建立新的獨立永久磁碟,並使用 Cloud KMS 金鑰加密:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/disks?sourceImage=SOURCE_IMAGE
{
 "name": "DISK_NAME",
 "diskEncryptionKey": {
   "kmsKeyName": "projects/KMS_PROJECT_ID/locations/REGION/keyRings/KEY_RING/cryptoKeys/KEY"
  },
 "type": "projects/PROJECT_ID/zones/ZONE/diskTypes/DISK_TYPE"
}

更改下列內容:

  • PROJECT_ID:執行 Compute Engine 的Google Cloud 專案 ID
  • ZONE:要在哪個可用區建立磁碟
  • SOURCE_IMAGE:建立磁碟時要使用的映像檔,例如 projects/debian-cloud/global/images/debian-13-trixie-v20260902
  • DISK_NAME:新磁碟的名稱
  • KMS_PROJECT_ID:擁有 Cloud KMS 金鑰的專案
  • REGION:磁碟所在的區域
  • KEY_RING:金鑰所屬金鑰環的名稱
  • KEY:用於加密磁碟的金鑰名稱
  • DISK_TYPE:要建立的磁碟類型

在機密模式中建立 Hyperdisk Balanced 磁碟

您可以使用Google Cloud 控制台、Google Cloud CLI 或 REST,在機密模式下建立新的 Hyperdisk Balanced 磁碟。如要建立非機密模式的磁碟,請按照「從以 CMEK 加密的快照建立永久磁碟」一文中的步驟操作。

控制台

  1. 前往 Google Cloud 控制台的「Disks」(磁碟) 頁面。

    前往「Disks」(磁碟)

  2. 按一下 [Create disk] (建立磁碟),然後輸入新磁碟的屬性。
  3. 在「Disk settings」(磁碟設定) 部分,選擇「Hyperdisk Balanced」(Hyperdisk Balanced) 做為磁碟類型。
  4. 選用。變更磁碟的預設磁碟「Size」(大小)、「Provisioned IOPS」(佈建的 IOPS) 和「Provisioned Throughput」(佈建的處理量) 設定。
  5. 在「Encryption」(加密) 區段中,選取「Cloud KMS key」(Cloud KMS 金鑰)。
  6. 在金鑰清單中,選取要用來加密這個磁碟的 Cloud HSM 金鑰。
  7. 在「機密運算」部分,選取「啟用機密運算服務」。
  8. 如要建立磁碟,請按一下「建立」。

gcloud

使用 gcloud compute disks create 指令,以 Hyperdisk Balanced 機密模式加密新磁碟。使用 --confidential-compute 旗標啟用機密模式,並使用 --kms-key 旗標指定金鑰。

gcloud compute disks create DISK_NAME \
  --type=hyperdisk-balanced \
  --kms-key projects/KMS_PROJECT_ID/locations/REGION/keyRings/KEY_RING/cryptoKeys/KEY \
  --confidential-compute

更改下列內容:

  • DISK_NAME:新磁碟的名稱
  • KMS_PROJECT_ID:Cloud HSM 金鑰所屬的專案
  • REGION:金鑰所在的區域
  • KEY_RING:金鑰所屬金鑰環的名稱
  • KEY:用於加密磁碟的金鑰名稱

REST

建構 POST 要求,傳送至 instances.insert 方法。如要使用 Hyperdisk Balanced 機密模式加密磁碟,請搭配 kmsKeyName 屬性使用 diskEncryptionKey 屬性,並設定 enableConfidentialCompute 旗標。舉例來說,您可以在建立 VM 時,使用下列項目透過 Cloud HSM 金鑰加密新磁碟:

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

{
"machineType": "zones/ZONE/machineTypes/MACHINE_TYPE",
"disks": [
 {
  "type": "DISK_TYPE",
  "diskEncryptionKey": {
    "kmsKeyName": "projects/KMS_PROJECT_ID/locations/REGION/keyRings/KEY_RING/cryptoKeys/KEY"
  },
  "initializeParams": {
   "sourceImage": "SOURCE_IMAGE",
   "enableConfidentialCompute": true
  },
  "boot": true
 }
],
"networkInterfaces": [
  {
   "network": "global/networks/default"
  }
]
}

更改下列內容:

  • DISK_TYPE:要建立的磁碟類型,例如 hyperdisk-balanced
  • PROJECT_ID:執行 Compute Engine 的 Google Cloud 專案 ID
  • ZONE:要在其中建立 VM 的可用區
  • MACHINE_TYPE:機型,例如 n2d-standard-4
  • KMS_PROJECT_ID:: Cloud HSM 金鑰的擁有者專案
  • REGION:磁碟所在的區域
  • KEY_RING:金鑰所屬金鑰環的名稱
  • KEY:用於加密磁碟的金鑰名稱
  • SOURCE_IMAGE:建立 VM 時,支援 Confidential VM 的映像檔,例如 projects/debian-cloud/global/images/debian-13-trixie-v20260902

同樣地,您可以使用 disks.insert 方法,為 Hyperdisk Balanced 建立新的機密模式:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/disks?sourceImage=SOURCE_IMAGE
{
 "name": "DISK_NAME",
 "diskEncryptionKey": {
   "kmsKeyName": "projects/KMS_PROJECT_ID/locations/REGION/keyRings/KEY_RING/cryptoKeys/KEY"
  },
 "type": "projects/PROJECT_ID/zones/ZONE/diskTypes/DISK_TYPE",
 "enableConfidentialCompute": true
}

更改下列內容:

  • PROJECT_ID:執行 Compute Engine 的Google Cloud 專案 ID
  • ZONE:要在哪個可用區建立磁碟
  • SOURCE_IMAGE:建立磁碟時支援 Confidential VM 的映像檔,例如 projects/debian-cloud/global/images/debian-13-trixie-v20260902
  • DISK_NAME:新磁碟的名稱
  • KMS_PROJECT_ID:擁有 Cloud HSM 金鑰的專案
  • REGION:磁碟所在的區域
  • KEY_RING:金鑰所屬金鑰環的名稱
  • KEY:用於加密磁碟的金鑰名稱
  • DISK_TYPE:要建立的磁碟類型,例如 hyperdisk-balanced。

建立 CMEK 加密快照

您可以為任何磁碟建立受 CMEK 保護的快照,除非來源磁碟受客戶提供的加密金鑰保護。如果來源磁碟是以 CMEK 加密,您可以使用相同的 CMEK 或不同的 CMEK 加密快照。

您無法將 CMEK 加密快照轉換為使用Google-owned and managed key ,除非您建立新磁碟,然後建立該磁碟的快照。

CMEK 加密磁碟的快照為增量。

控制台

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

    前往「Snapshots」(快照) 頁面

  2. 按一下 [Create snapshot] (建立快照)。
  3. 在「Source disk」(來源磁碟) 底下,選擇快照的來源磁碟。快照會自動使用與來源磁碟相同的金鑰加密。

gcloud

如要建立以 CMEK 加密的快照,請使用 --kms-key 旗標指定 Cloud KMS 金鑰。如果來源磁碟已使用 CMEK 加密,則可使用相同金鑰或指定其他金鑰。

如果來源磁碟是以 CMEK 加密,且您未指定 --kms-key 旗標,系統會自動使用來源磁碟所用的金鑰加密快照。

您可以根據快照設定定義的儲存位置政策建立快照,也可以使用您選擇的其他儲存位置。詳情請參閱「選擇快照儲存位置」。

  • 如要在快照設定中指定的預先定義或自訂預設位置建立快照,請使用 gcloud compute snapshots create 指令。

    gcloud compute snapshots create SNAPSHOT_NAME \
        --source-disk-zone=SOURCE_ZONE \
        --source-disk=SOURCE_DISK_NAME \
        --snapshot-type=SNAPSHOT_TYPE \
        --kms-key=projects/KMS_PROJECT_ID/locations/KEY_REGION/keyRings/KEY_RING/cryptoKeys/SNAPSHOT_KEY
    
  • 如要覆寫快照設定,在自訂儲存位置建立快照,請加入 --storage-location 旗標,指出快照的儲存位置。

    gcloud compute snapshots create SNAPSHOT_NAME \
        --source-disk-zone=SOURCE_ZONE \
        --source-disk=SOURCE_DISK_NAME \
        --snapshot-type=SNAPSHOT_TYPE \
        --storage-location=STORAGE_LOCATION \
        --kms-key=projects/KMS_PROJECT_ID/locations/KEY_REGION/keyRings/KEY_RING/cryptoKeys/SNAPSHOT_KEY
    
  • (預先發布版) 如要在允許的區域建立區域範圍快照,請加入 --region 旗標,指出快照的建立位置。

      gcloud beta compute snapshots create SNAPSHOT_NAME \
          --region=SNAPSHOT_SCOPE_REGION \
          --source-disk=SOURCE_DISK_NAME \
          --source-disk-zone=SOURCE_ZONE \
          --snapshot-type=SNAPSHOT_TYPE \
          --kms-key=projects/KMS_PROJECT_ID/locations/KEY_REGION/keyRings/KEY_RING/cryptoKeys/SNAPSHOT_KEY
    

更改下列內容:

  • SNAPSHOT_NAME:快照的名稱。
  • SOURCE_ZONE:來源磁碟的可用區。
  • SOURCE_DISK_NAME:要建立快照的磁碟區名稱。
  • KMS_PROJECT_ID:包含儲存在 Cloud Key Management Service 中加密金鑰的專案。
  • KEY_REGION:Cloud KMS 金鑰所在的區域。
  • KEY_RING:Cloud KMS 金鑰所在金鑰環的名稱。
  • SNAPSHOT_KEY:用於加密快照的 Cloud KMS 金鑰名稱。
  • SNAPSHOT_TYPE:快照類型,可以是 STANDARD 或 ARCHIVE。 如未指定快照類型,系統會建立 STANDARD 快照。
  • STORAGE_LOCATION:選用:如果是全域範圍的快照,請指定要儲存快照的 Cloud Storage 多重區域或 Cloud Storage 區域。您只能指定一個儲存位置。

    只有在您想覆寫快照設定中預先定義或自訂的預設儲存位置時,才需要使用 --storage-location 參數。

  • SNAPSHOT_SCOPE_REGION:選用:如果是區域範圍的快照,則為快照範圍所在的區域。如果加入這個參數,就無法使用 --storage-location 參數。系統會自動將 STORAGE_LOCATION 設為 SNAPSHOT_SCOPE_REGION。

REST

如要建立以 CMEK 加密的快照,請在要求主體中指定 snapshotEncryptionKey 屬性。如果來源磁碟已使用 CMEK 加密,您可以沿用該金鑰,也可以指定其他金鑰。

您可以在快照設定定義的儲存位置政策中建立快照,也可以使用自選的其他儲存位置。詳情請參閱「選擇快照儲存位置」。

  • 如要在快照設定中指定的預先定義或自訂預設位置建立快照,請向 snapshots.insert 方法發出 POST 要求:

    POST https://compute.googleapis.com/compute/v1/projects/DESTINATION_PROJECT_ID/global/snapshots
    {
        "name": "SNAPSHOT_NAME",
        "sourceDisk": "projects/SOURCE_PROJECT_ID/zones/SOURCE_ZONE/disks/SOURCE_DISK_NAME",
        "snapshotEncryptionKey":  {
         "kmsKeyName": "projects/KMS_PROJECT_ID/locations/KEY_REGION/keyRings/KEY_RING/cryptoKeys/SNAPSHOT_KEY"
        },
        "snapshotType": "SNAPSHOT_TYPE"
    }
    
  • 或者,如要覆寫快照設定,並在自訂儲存位置建立快照,請向 snapshots.insert 方法發出 POST 要求,並在要求中加入 storageLocations 屬性:

    POST https://compute.googleapis.com/compute/v1/projects/DESTINATION_PROJECT_ID/global/snapshots
    {
        "name": "SNAPSHOT_NAME",
        "sourceDisk": "projects/SOURCE_PROJECT_ID/zones/SOURCE_ZONE/disks/SOURCE_DISK_NAME",
        "snapshotEncryptionKey":  {
         "kmsKeyName": "projects/KMS_PROJECT_ID/locations/KEY_REGION/keyRings/KEY_RING/cryptoKeys/SNAPSHOT_KEY"
        },
        "snapshotType": "SNAPSHOT_TYPE",
        "storageLocations": [
            "STORAGE_LOCATION"
        ],
    }
    
  • (預先發布) 如要在允許的區域中建立區域範圍快照,請向 snapshots.insert 方法發出 POST 要求,並定義建立區域:

    POST https://compute.googleapis.com/compute/beta/projects/DESTINATION_PROJECT_ID/regions/SNAPSHOT_SCOPE_REGION/snapshots
    {
      "name": "SNAPSHOT_NAME",
      "sourceDisk": "projects/SOURCE_PROJECT_ID/regions/SOURCE_REGION/disks/SOURCE_DISK_NAME",
      "snapshotType": "SNAPSHOT_TYPE",
      "snapshotEncryptionKey": {
        "kmsKeyName":"projects/KMS_PROJECT_ID/locations/KEY_REGION/keyRings/KEY_RING/cryptoKeys/SNAPSHOT_KEY",
      },
    }
    

更改下列內容:

  • DESTINATION_PROJECT_ID:您要在當中建立快照的專案 ID。
  • SNAPSHOT_NAME:快照的名稱。
  • SOURCE_PROJECT_ID:來源磁碟專案的 ID。
  • SOURCE_ZONE:來源磁碟的可用區。
  • SOURCE_DISK_NAME:要建立快照的磁碟名稱。
  • KMS_PROJECT_ID:包含儲存在 Cloud Key Management Service 中的加密金鑰的專案。
  • KEY_REGION:Cloud KMS 金鑰所在的區域。
  • KEY_RING:Cloud KMS 金鑰所在金鑰環的名稱。
  • SNAPSHOT_KEY:用於加密快照的 Cloud KMS 金鑰名稱。
  • SNAPSHOT_TYPE:快照類型,可以是 STANDARD 或 ARCHIVE。 如果未指定快照類型,系統會建立 STANDARD 快照。
  • STORAGE_LOCATION:選用:如果是全域範圍的快照,請指定要儲存快照的 Cloud Storage 多區域或 Cloud Storage 區域。您只能指定一個儲存位置。

    只有在想覆寫快照設定中預先定義或自訂的預設儲存位置時,才使用 storageLocations 參數。

  • SNAPSHOT_SCOPE_REGION:選用:如果是區域範圍的快照,則為快照範圍所在的區域。如果加入這個參數,就無法使用 storageLocations 參數。STORAGE_LOCATION 會自動設為 SNAPSHOT_SCOPE_REGION。

使用 CMEK 加密匯入的映像檔

將自訂映像檔匯入至 Compute Engine 時,您可以為新的映像檔加密。匯入映像檔前,請務必建立並壓縮磁碟映像檔,然後將壓縮檔上傳至 Cloud Storage。

控制台

  1. 前往 Google Cloud 控制台的「Images」(映像檔) 頁面。

    前往「圖片」

  2. 點選「建立映像檔」。
  3. 在「Source disk」(來源磁碟) 部分,選取要建立映像檔的磁碟。
  4. 在「Encryption」(加密) 部分,選取「Customer-managed key」(客戶自行管理的金鑰)。
  5. 在下拉式選單中,選取要用來加密這個映像檔的 Cloud KMS 金鑰。
  6. 繼續執行映像檔建立程序。

gcloud

如要匯入及加密映像檔,請使用 gcloud compute images create 指令。如果是客戶自行管理的加密,請指定映像檔的 Cloud KMS 金鑰。

gcloud compute images create IMAGE_NAME \
    --source-disk=SOURCE_DISK  \
    --kms-key projects/KMS_PROJECT_ID/locations/REGION/keyRings/KEY_RING/cryptoKeys/KEY

更改下列內容:

  • IMAGE_NAME:要建立的圖片名稱
  • SOURCE_DISK:要建立快照的磁碟名稱
  • KMS_PROJECT_ID:包含 Cloud KMS 金鑰的專案
  • REGION:Cloud KMS 金鑰所在的區域
  • KEY_RING:包含 Cloud KMS 金鑰的金鑰環
  • KEY:用於加密新磁碟的金鑰名稱

REST

如要加密匯入的映像檔,請向 images.insert 方法建構 POST 要求。指定壓縮檔的 URI,將 imageEncryptionKey 屬性新增至圖片建立要求,並在 kmsKeyName 屬性中指定圖片加密金鑰。

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/images

{
 "rawDisk": {
  "source": "http://storage.googleapis.com/example-image/example-image.tar.gz"
  },
 "name": "IMAGE_NAME",
 "sourceType": "RAW",
 "imageEncryptionKey": {
   "kmsKeyName": "projects/KMS_PROJECT_ID/locations/REGION/keyRings/KEY_RING/cryptoKeys/KEY"
   }
}

更改下列內容:

  • PROJECT_ID:要建立加密映像檔的專案
  • IMAGE_NAME:要建立的圖片名稱
  • KMS_PROJECT_ID:Cloud KMS 金鑰所在的專案
  • REGION:Cloud KMS 金鑰所在的區域
  • KEY_RING:包含 Cloud KMS 金鑰的金鑰環
  • KEY:用於加密來源磁碟的金鑰名稱

依據以 CMEK 加密的快照建立磁碟

如要從加密快照建立新磁碟,請按照下列步驟操作:

控制台

  1. 前往 Google Cloud 控制台的「Disks」(磁碟) 頁面。

    前往「Disks」(磁碟) 頁面

  2. 按一下 [Create disk] (建立磁碟),然後輸入新磁碟的屬性。
  3. 在「Source type」(來源類型) 部分,選取要使用的快照或映像檔。
  4. 選用:如要指定新的加密金鑰,請在「Encryption」(加密) 中指定要使用的加密金鑰類型,然後提供加密金鑰資訊。

    如要移除客戶自行管理或客戶提供的加密金鑰,請在「Encryption」(加密) 部分使用預設值 Google-managed encryption key。

  5. 繼續建立磁碟。

gcloud

  • 如要從全域範圍的加密快照建立新磁碟,請使用 gcloud compute disks create 指令。

    gcloud compute disks create DISK_NAME \
      --zone=ZONE \
      --source-snapshot=SNAPSHOT_NAME \
      --kms-key=projects/KMS_PROJECT_ID/locations/REGION/keyRings/KEY_RING/cryptoKeys/KEY
    
  • (預先發布版) 如要從區域範圍的加密快照建立新磁碟,請使用 gcloud compute disks create 指令,並指定來源快照區域。

    gcloud compute disks create DISK_NAME \
      --zone=ZONE \
      --source-snapshot=SNAPSHOT_NAME \
      --source-snapshot-region=SOURCE_REGION \
      --kms-key=projects/KMS_PROJECT_ID/locations/REGION/keyRings/KEY_RING/cryptoKeys/KEY
    

更改下列內容:

  • DISK_NAME:新磁碟的名稱
  • SNAPSHOT_NAME:加密快照的名稱

    如要使用圖片而非快照,請將 --source-snapshot SNAPSHOT_NAME 替換為 --image IMAGE_NAME。

  • KMS_PROJECT_ID:選用:包含 Cloud KMS 金鑰的專案

  • REGION:選用:Cloud KMS 金鑰所在的區域

  • SOURCE_REGION:來源快照的範圍區域

  • ZONE:新磁碟所在的可用區

  • KEY_RING:選用:包含 Cloud KMS 金鑰的金鑰環

  • KEY:選用:用於加密新磁碟的 Cloud KMS 金鑰名稱

    如要加密新磁碟,可以採取下列任一做法:

    • 如要指定新的客戶自行管理加密金鑰,請使用 --kms-key 旗標。
    • 如要使用預設的 Google-owned and Google-managed encryption key,請勿加入 --kms-key 旗標。

REST

  • 如要從全域範圍的加密快照建立新磁碟,請建構對 compute.disks.insert 方法的 POST 要求。使用 sourceSnapshot 屬性指定快照。

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/disks
    
    {
      "name": "DISK_NAME",
      "sourceSnapshot": "projects/SNAPSHOT_PROJECT_ID/global/snapshots/SNAPSHOT_NAME",
      "diskEncryptionKey": {
        "kmsKeyName": "projects/KMS_PROJECT_ID/locations/REGION/keyRings/KEY_RING/cryptoKeys/KEY"
      }
    }
    
  • (預先發布版) 如要從區域範圍的加密快照建立新磁碟,請建構對 compute.disks.insert 方法的 POST 要求。使用 sourceSnapshot 屬性指定快照。

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/disks
    
    {
      "name": "DISK_NAME",
      "sourceSnapshot": "projects/SNAPSHOT_PROJECT_ID/regions/SOURCE_REGION/snapshots/SNAPSHOT_NAME",
      "type": "projects/PROJECT_ID/zones/ZONE/diskTypes/DISK_TYPE",
      "zone": "projects/PROJECT_ID/zones/ZONE"
      "diskEncryptionKey": {
        "kmsKeyName": "projects/KMS_PROJECT_ID/locations/REGION/keyRings/KEY_RING/cryptoKeys/KEY"
      }
    }
    

更改下列內容:

  • PROJECT_ID:要建立新磁碟的專案
  • ZONE:要建立新磁碟的可用區
  • SOURCE_REGION:來源快照的範圍區域
  • DISK_NAME:新磁碟的名稱
  • DISK_TYPE:磁碟類型的完整或部分網址,例如 PROJECT_ID/zones/ZONE/diskTypes/pd-ssd
  • SNAPSHOT_PROJECT_ID:包含 快照的專案
  • SNAPSHOT_NAME:加密快照的名稱

    如要使用圖片而非快照,請將 sourceSnapshot 替換為 sourceImage。

  • KMS_PROJECT_ID:選用:包含 Cloud KMS 金鑰的專案

  • REGION:選用:Cloud KMS 金鑰所在的區域

  • KEY_RING:選用:包含 Cloud KMS 金鑰的金鑰環

  • KEY:選用:用於加密新磁碟的 Cloud KMS 金鑰名稱

    如果您加入 diskEncryptionKey,系統會使用指定的 Cloud KMS 金鑰加密磁碟。如未加入 diskEncryptionKey,系統會使用 Google-owned and Google-managed encryption key加密磁碟。

將以 CMEK 加密的開機磁碟連接至新的 VM

控制台

  1. 前往 Google Cloud 控制台的「建立執行個體」頁面。

    前往「建立執行個體」

  2. 指定 VM 詳細資料,然後在「開機磁碟」部分,按一下「變更」。接著,按照下列步驟操作:

    1. 按一下 [Existing disks] (現有磁碟)。
    2. 在「Disk」(磁碟) 清單中,選取要連接至 VM 的現有磁碟。
    3. 按一下「選取」。
  3. 繼續執行 VM 建立程序。

gcloud

如要在建立新 VM 時連結加密磁碟,請使用 gcloud compute instances create 指令。使用 --disk 旗標指定加密的開機磁碟,如以下範例所示:

gcloud compute instances create VM_NAME \
  ...
  --disk name=DISK_NAME,boot=yes

更改下列內容:

  • VM_NAME:要建立的 VM 名稱
  • DISK_NAME:加密磁碟的名稱

REST

建構 POST 要求,傳送至 compute.instances.insert 方法。使用 disks 屬性指定加密的開機磁碟,如以下範例所示:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances
{
  ...
  "disks": [
    {
      "deviceName": "DISK_ALIAS",
      "source": "projects/PROJECT_ID/zones/ZONE/disks/DISK_NAME"
    }
  ]
}

更改下列內容:

  • PROJECT_ID:要建立新 VM 的專案
  • ZONE:要建立新 VM 的可用區
  • DISK_ALIAS:不重複的裝置名稱,在執行 Linux 作業系統的 VM /dev/disk/by-id/google-* 目錄中,做為磁碟別名。您可以在執行個體中使用這個名稱,指稱要掛接、調整大小或執行其他作業的磁碟。如未指定裝置名稱,VM 會選擇預設裝置名稱套用至這個磁碟,格式為 persistent-disk-x,其中 x 是 Compute Engine 指派的數字。這個欄位僅適用於永久磁碟卷。
  • DISK_NAME:加密磁碟的名稱

輪替磁碟或快照的 CMEK

為降低金鑰遭入侵的潛在後果,建議您定期輪替 CMEK。如要進一步瞭解 CMEK 輪替,請參閱「金鑰輪替」。

如要輪替保護磁碟或快照的 CMEK,可以使用 gcloud CLI 或 REST,但無法使用Google Cloud 控制台或 Google Cloud的 Terraform 供應商。

gcloud

如要將用於加密磁碟、封存快照或標準快照的 Cloud KMS 金鑰輪替至新的金鑰版本,請使用 gcloud compute disks update-kms-key 指令或 gcloud compute snapshots update-kms-key 指令。

  • 如要輪替加密磁碟的金鑰版本,請按照下列步驟操作:

    gcloud compute disks update-kms-key DISK_NAME \
    --zone ZONE
    
  • 如要輪替用於加密標準快照的金鑰版本,請按照下列步驟操作:

    gcloud compute snapshots update-kms-key SNAPSHOT_NAME
    

更改下列內容:

  • DISK_NAME:加密磁碟的名稱
  • ZONE:加密磁碟所在的可用區
  • SNAPSHOT_NAME:加密快照的名稱

REST

如要將用於加密磁碟、封存快照或標準快照的 Cloud KMS 金鑰輪替至新的金鑰版本,請建構 PATCH 要求,傳送至 compute.disks.updateKmsKey 方法或 compute.snapshots.updateKmsKey 方法。

  • 如要輪替加密區域磁碟的金鑰版本,請按照下列步驟操作:

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/disks/DISK_NAME/updateKmsKey
    
  • 如要輪替用於加密區域磁碟的金鑰版本,請按照下列步驟操作:

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/disks/DISK_NAME/updateKmsKey
    
  • 如要輪替用於加密全域範圍標準快照的金鑰版本,請按照下列步驟操作:

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/snapshots/SNAPSHOT_NAME/updateKmsKey
    
  • (預先發布版) 如要輪替用於加密區域範圍標準快照的金鑰版本,請按照下列步驟操作:

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/snapshots/SNAPSHOT_NAME/updateKmsKey
    

更改下列內容:

  • PROJECT_ID:加密磁碟或快照所在的專案
  • ZONE:加密磁碟所在的可用區
  • REGION:區域磁碟或區域範圍快照所在的區域
  • DISK_NAME:加密磁碟的名稱
  • SNAPSHOT_NAME:加密快照的名稱
  • REGION:區域磁碟或區域範圍快照所在的區域

回應會包含 name 項目,其作業值代表金鑰輪替:

  "name": "operation-YYYYYYYYYYYYY-YYYYYYYYYYYYY-YYYYYYYY-YYYYYYYY"
  

接著,您可以發出 GET 要求,輪詢作業狀態,判斷 API 呼叫是否成功:

  GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/operations/OPERATION_NAME
  

更改下列內容:

  • PROJECT_ID:加密磁碟或快照所在的專案
  • ZONE:加密磁碟所在的可用區
  • OPERATION_NAME:CMEK 輪替作業的名稱,格式為 operation-YYYYYYYYYYYYY-YYYYYYYYYYYYY-YYYYYYYY-YYYYYYYY

回應會包含 progress 值,代表金鑰輪替的狀態。如果 progress 為 100,表示作業成功。

輪替金鑰不會停用或刪除先前的金鑰版本。詳情請參閱「輪替金鑰後」。

變更磁碟或快照的 CMEK

您可以將磁碟、封存快照或標準快照的加密方式變更為其他 CMEK (例如在專案遷移期間或為了符合新的法規遵循要求),而且不會造成停機。

變更 CMEK 會使用新金鑰重新加密資源的資料加密金鑰 (DEK)。這項程序不會變更 DEK,也不會影響執行中工作負載的效能。

如要變更保護磁碟或快照的 CMEK,可以使用 gcloud CLI 或 REST,但無法使用Google Cloud 控制台或 Terraform。

gcloud

如要變更磁碟或標準快照的 Cloud KMS 金鑰,請搭配使用 --kms-key 旗標與 gcloud compute disks update-kms-key 指令或 gcloud compute snapshots update-kms-key 指令。

  • 如要變更可用區磁碟的金鑰,請按照下列步驟操作:

    gcloud compute disks update-kms-key DISK_NAME \
    --kms-key=projects/KEY_PROJECT_ID/locations/global/keyRings/KEY_RING/cryptoKeys/NEW_KEY_NAME \
    --zone=ZONE
    
  • 如要變更區域磁碟的金鑰,請按照下列步驟操作:

    gcloud compute disks update-kms-key DISK_NAME \
    --kms-key=projects/KEY_PROJECT_ID/locations/global/keyRings/KEY_RING/cryptoKeys/NEW_KEY_NAME \
    --region=REGION
    
  • 如要變更全域快照的鍵,請按照下列步驟操作:

    gcloud compute snapshots update-kms-key SNAPSHOT_NAME \
    --kms-key=projects/KEY_PROJECT_ID/locations/global/keyRings/KEY_RING/cryptoKeys/NEW_KEY_NAME
    
  • 如要變更區域範圍快照的金鑰,請按照下列步驟操作:

    gcloud beta compute snapshots update-kms-key SNAPSHOT_NAME \
    --kms-key=projects/KEY_PROJECT_ID/locations/global/keyRings/KEY_RING/cryptoKeys/NEW_KEY_NAME \
    --regions=REGION
    

更改下列內容:

  • DISK_NAME:加密磁碟的名稱。
  • NEW_KMS_KEY:新 CMEK 的完整資源 ID。
  • ZONE:磁碟所在的可用區。
  • REGION:磁碟或快照所在的區域。
  • SNAPSHOT_NAME:加密快照的名稱。

REST

如要變更金鑰,請向 compute.disks.updateKmsKey 方法或 compute.snapshots.updateKmsKey 方法傳送 POST 要求,並在要求主體中加入 kmsKeyName。

  • 如要變更可用區磁碟的金鑰,請按照下列步驟操作:

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/disks/DISK_NAME/updateKmsKey
    
    {
    "kmsKeyName": "projects/KEY_PROJECT_ID/locations/global/keyRings/KEY_RING/cryptoKeys/NEW_KEY_NAME"
    }
    
  • 如要變更區域磁碟的金鑰,請按照下列步驟操作:

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/disks/DISK_NAME/updateKmsKey
    
    {
    "kmsKeyName": "projects/KEY_PROJECT_ID/locations/global/keyRings/KEY_RING/cryptoKeys/NEW_KEY_NAME"
    }
    
  • 如要變更全域快照的鍵,請按照下列步驟操作:

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/snapshots/SNAPSHOT_NAME/updateKmsKey
    
    {
    "kmsKeyName": "projects/KEY_PROJECT_ID/locations/global/keyRings/KEY_RING/cryptoKeys/NEW_KEY_NAME"
    }
    
  • 如要變更區域範圍快照的金鑰,請按照下列步驟操作:

    POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/regions/REGION/snapshots/SNAPSHOT_NAME/updateKmsKey
    
    {
    "kmsKeyName": "projects/KEY_PROJECT_ID/locations/global/keyRings/KEY_RING/cryptoKeys/NEW_KEY_NAME"
    }
    

更改下列內容:

  • PROJECT_ID:包含磁碟或快照的專案。
  • ZONE:磁碟所在的可用區。
  • REGION:磁碟或快照所在的區域。
  • DISK_NAME:磁碟名稱。
  • NEW_KEY_NAME:新 CMEK 的名稱。
  • SNAPSHOT_NAME:加密快照的名稱。

從磁碟移除 CMEK

您無法從磁碟移除 CMEK,也無法變更加密金鑰的類型。你可以採取下列任一做法:

如要建立使用 Google-owned and managed key CMEK 加密磁碟的磁碟,請按照下列步驟操作:

  1. 建立加密磁碟的快照。
  2. 使用新的加密快照建立新磁碟。

建立新磁碟後,系統會使用 Google Cloud 預設加密機制保護磁碟內容。您可以使用 CMEK 或預設加密機制,加密從該磁碟建立的後續快照。

從快照中移除 CMEK

您無法從快照中移除 CMEK,也無法變更加密金鑰的類型。 您可以變更快照,改用其他 CMEK,或建立快照副本,並使用 Google-owned and managed key加密副本。

如要建立使用 Google-owned and managed key CMEK 加密快照的快照,請按照下列步驟操作:

  1. 從快照建立新磁碟。 建立新磁碟時,請選取所需的加密類型。

  2. 建立新磁碟的快照:

停用或銷毀 CMEK

如果不再需要 CMEK 或想防止使用,請停用或刪除金鑰。刪除、停用或移除金鑰的 IAM 權限,也稱為「撤銷」金鑰。

撤銷金鑰對加密資源的影響

撤銷加密金鑰時,受金鑰保護的資源會受到下列影響:

  • 如果 VM 連接的任一磁碟金鑰遭到撤銷,則無法啟動該 VM。
  • 如果使用金鑰的磁碟已連接至執行中的 VM,且您已為 VM 啟用「VM shutdown on key revocation」(在金鑰撤銷時關閉 VM),Compute Engine 會在 7 小時內關閉 VM。
  • 您無法將金鑰已撤銷的磁碟連接至 VM,也無法從該磁碟建立快照。
  • 您無法使用以已撤銷金鑰加密的映像檔或快照建立磁碟。

如果停用金鑰,只要啟用金鑰,即可撤銷上述影響。金鑰一經銷毀,就無法復原先前的影響。

設定在 Cloud KMS 金鑰撤銷時關閉 VM

您可以將 VM 設為在撤銷 Cloud KMS 金鑰時自動關機,該金鑰可協助保護連結至 VM 的磁碟。如要撤銷金鑰,可以停用或刪除金鑰。啟用這項設定後,VM 會在金鑰撤銷後 7 小時內關機。

如果再次啟用金鑰,您可以使用金鑰保護的連接磁碟重新啟動 VM。啟用金鑰後,VM 不會自動重新啟動。

控制台

如要將 VM 設為在 Cloud KMS 金鑰撤銷時關機,請按照下列步驟操作:

  1. 開始建立 VM,其中包含受 Cloud KMS 金鑰保護的磁碟。
  2. 開啟「網路、磁碟、安全性、管理、單一用戶群」選單。
  3. 展開「Management」(管理) 部分。
  4. 在「Customer Managed Encryption Key (CMEK) revocation policy」(客戶自行管理的加密金鑰 (CMEK) 撤銷政策) 下方,選取「Shut down」(關機)。

gcloud

使用 gcloud compute instances create 指令建立 VM,並加入 --key-revocation-action-type=stop。

gcloud compute instances create VM_NAME \
  --image IMAGE \
  --key-revocation-action-type=stop

REST

使用 instances.insert 方法建立 VM,並將 "keyRevocationActionType" 屬性設為 "STOP"。以下範例會從公開映像檔建立 VM。

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

{
  "machineType": "zones/MACHINE_TYPE_ZONE/machineTypes/MACHINE_TYPE",
  "name": "VM_NAME",
  "disks": [
    {
      "initializeParams": {
        "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
      },
      "boot": true
    }
  ],
  "keyRevocationActionType": "STOP"
}

或者,您也可以設定執行個體範本,透過 Google Cloud CLI 或 REST 建立 VM,在金鑰遭撤銷時關閉 VM。

控制台

您可以透過執行個體範本建立 VM,在 Cloud KMS 金鑰遭到撤銷時關閉 VM。

  1. 開始建立新的執行個體範本,其中包含受 Cloud KMS 金鑰保護的磁碟。
  2. 開啟「網路、磁碟、安全性、管理、單一租戶」選單。
  3. 展開「管理」部分。
  4. 在「客戶自行管理的加密金鑰 (CMEK) 撤銷政策」下方,選取「關閉」。

gcloud

使用 gcloud compute instance-templates create 指令建立執行個體範本,並加入 --key-revocation-action-type=stop。

gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME \
  --key-revocation-action-type=stop

REST

建構對 instanceTemplates.insert 方法的 POST 要求。在要求主體中,您必須明確定義所有必要設定欄位。如要讓依據這個範本建立的 VM 在金鑰撤銷時關閉,請指定 "keyRevocationActionType":"STOP"。舉例來說,如果執行個體範本含有最低限度的必要欄位,且會建立在金鑰撤銷時關機的 VM,則看起來會像這樣:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceTemplates

{
  "name": "example-template",
  "properties": {
  "machineType": "e2-standard-4",
  "networkInterfaces": [
    {
      "network": "global/networks/default",
      "accessConfigs": [
        {
          "name": "external-IP",
          "type": "ONE_TO_ONE_NAT"
        }
      ]
    }
  ],
  "disks":
  [
    {
      "type": "PERSISTENT",
      "boot": true,
      "mode": "READ_WRITE",
      "initializeParams":
      {
        "sourceImage": "projects/debian-cloud/global/images/family/debian-13"
      }
    }
  ],
  "keyRevocationActionType": "STOP"
  }
}

建立 VM 並設定為在 Cloud KMS 撤銷時關機後,請建立並連接使用 Cloud KMS 金鑰加密的 Persistent Disk。

後續步驟