使用 Compute Engine,以客戶自行管理的加密金鑰 (CMEK) 加密 TPU VM 開機磁碟

根據預設,Cloud TPU 會加密靜態客戶內容。Cloud TPU 會為您處理加密作業,您不必採取其他動作。這項做法稱為「Google 預設加密機制」

如要控管加密金鑰,您可以在 Cloud KMS 中使用客戶自行管理的加密金鑰 (CMEK),搭配整合 CMEK 的服務 (包括 Cloud TPU)。使用 Cloud KMS 金鑰可讓您控管保護等級、位置、輪替時間表、使用權限和存取權,以及加密範圍。使用 Cloud KMS 也能查看稽核記錄,以及控管金鑰生命週期。 您可以在 Cloud KMS 中控制及管理這些金鑰,而不是由 Google 擁有及管理用來保護您資料的對稱金鑰加密金鑰 (KEK)

使用 CMEK 設定資源後,存取 Cloud TPU 資源的體驗與使用 Google 預設加密機制類似。如要進一步瞭解加密選項,請參閱「客戶自行管理的加密金鑰 (CMEK)」。

如要使用 CMEK,請建立金鑰環。 在建立 TPU VM 或配量的相同位置建立金鑰環。舉例來說,us-central1-a 區域中的 TPU VM 只能使用 us-central1 地區中的金鑰。

接著,在金鑰環中建立金鑰。建立 CMEK 後,允許 Compute Engine 服務帳戶存取您的金鑰。

授予金鑰使用權限

將 Cloud KMS 金鑰的 Cloud KMS CryptoKey Encrypter/Decrypter (roles/cloudkms.cryptoKeyEncrypterDecrypter) IAM 角色授予專案中的 Compute Engine 服務代理人 Google Cloud 。授予這個角色後,Compute Engine 服務就能存取及使用您的加密金鑰。

如要將 roles/cloudkms.cryptoKeyEncrypterDecrypter 角色授予 Compute Engine 服務代理人,請選取下列其中一個選項:

gcloud

執行下列指令:

gcloud kms keys add-iam-policy-binding KEY_NAME \
    --location LOCATION \
    --keyring RING_NAME \
    --member serviceAccount:service-PROJECT_NUMBER@compute-system.iam.gserviceaccount.com \
    --role roles/cloudkms.cryptoKeyEncrypterDecrypter \
    --project KEY_PROJECT_ID

更改下列內容:

  • KEY_NAME:金鑰名稱。
  • LOCATION:您建立金鑰環的位置。
  • RING_NAME:金鑰環的名稱。
  • PROJECT_NUMBER:您的 Google Cloud 專案編號。
  • KEY_PROJECT_ID:主要專案 ID。

控制台

  1. 前往 Google Cloud 控制台的「金鑰管理」頁面。

    前往「金鑰管理」頁面

  2. 按一下包含金鑰的金鑰環名稱。

  3. 按一下要修改的金鑰名稱。

  4. 按一下「權限」

  5. 按一下「授予存取權」。 「授予存取權」窗格隨即開啟。

  6. 在「新增主體」欄位中,輸入 Compute Engine 服務代理名稱:

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

    PROJECT_NUMBER 替換為 Google Cloud 專案編號。

  7. 在「Select a role」(選取角色) 選單中,選取「Cloud KMS CryptoKey Encrypter/Decrypter」(Cloud KMS CryptoKey 加密者/解密者)

  8. 按一下 [儲存]

使用 CMEK 建立 TPU VM

建立 TPU VM 或代管執行個體群組 (MIG) 的執行個體範本時,可以使用 --boot-disk-kms-key 標記指定 CMEK。

使用 CMEK 建立單一 TPU VM 執行個體

如要在建立單一 TPU VM 時指定 CMEK,請在 gcloud compute instances create 指令中使用 --boot-disk-kms-key 標記:

  gcloud compute instances create TPU_NAME \
    --machine-type=MACHINE_TYPE \
    --image-family=IMAGE_FAMILY \
    --image-project=IMAGE_PROJECT \
    --zone=ZONE \
    --maintenance-policy=TERMINATE \
    --boot-disk-kms-key=projects/KEY_PROJECT_ID/locations/REGION/keyRings/RING_NAME/cryptoKeys/KEY_NAME

替換下列預留位置:

  • TPU_NAME:TPU VM 的名稱。
  • MACHINE_TYPE:TPU VM 的機型,例如 ct6e-standard-8t
  • IMAGE_FAMILY:TPU VM 的作業系統映像檔系列。如要安裝特定 OS 版本,請使用 --image 旗標。如要進一步瞭解 OS 映像檔,請參閱「OS 映像檔」。
  • IMAGE_PROJECT:包含 OS 映像檔的專案。如果是 TPU 映像檔,則為 ubuntu-os-accelerator-images
  • ZONE:TPU VM 的區域,例如 us-central1-b
  • KEY_PROJECT_ID:包含加密金鑰的專案。
  • REGION:您建立金鑰環的區域。
  • RING_NAME:金鑰環的名稱。
  • KEY_NAME:金鑰名稱。

建立具備 CMEK 的單一主機切片 MIG

如要在 MIG 中使用 CMEK,請在建立執行個體範本時指定金鑰。

  1. 使用 --boot-disk-kms-key 旗標建立執行個體範本:

    gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME \
        --machine-type=MACHINE_TYPE \
        --maintenance-policy=TERMINATE \
        --image-family=IMAGE_FAMILY \
        --image-project=IMAGE_PROJECT \
        --boot-disk-kms-key=projects/KEY_PROJECT_ID/locations/REGION/keyRings/RING_NAME/cryptoKeys/KEY_NAME
    

    替換下列預留位置:

    • INSTANCE_TEMPLATE_NAME:執行個體範本的名稱。
    • MACHINE_TYPE:TPU VM 的機型,例如 ct6e-standard-8t
    • IMAGE_FAMILY:TPU VM 的作業系統映像檔系列。如要安裝特定 OS 版本,請使用 --image 旗標。如要進一步瞭解 OS 映像檔,請參閱「OS 映像檔」。
    • IMAGE_PROJECT:包含 OS 映像檔的專案。如果是 TPU 映像檔,則為 ubuntu-os-accelerator-images
    • KEY_PROJECT_ID:包含加密金鑰的專案。
    • REGION:您建立金鑰環的區域。
    • RING_NAME:金鑰環的名稱。
    • KEY_NAME:金鑰名稱。
  2. 依據範本建立 MIG:

    gcloud compute instance-groups managed create MIG_NAME \
        --size=MIG_SIZE \
        --template=INSTANCE_TEMPLATE_NAME \
        --zone=ZONE \
        --size=MIG_SIZE
    

    替換下列預留位置:

    • MIG_NAME:MIG 名稱。
    • MIG_SIZE:MIG 中的 TPU VM 數量。
    • INSTANCE_TEMPLATE_NAME:要使用的執行個體範本名稱。
    • ZONE:TPU VM 的區域,例如 us-central1-b
    • MIG_SIZE:MIG 中的 TPU VM 數量。如果是單一主機 TPU VM,請將大小設為 1。

建立具備多主機配量和 CMEK 的 MIG

建立多主機分片 MIG 時,請在執行個體範本中指定加密金鑰。

  1. 建立執行個體範本。

    gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME
        --machine-type=MACHINE_TYPE \
        --maintenance-policy=TERMINATE \
        --image-family=IMAGE_FAMILY \
        --image-project=IMAGE_PROJECT \
        --boot-disk-kms-key=projects/KEY_PROJECT_ID/locations/REGION/keyRings/RING_NAME/cryptoKeys/KEY_NAME
    

    替換下列預留位置:

    • INSTANCE_TEMPLATE_NAME:執行個體範本的名稱。
    • MACHINE_TYPE:TPU VM 的機型,例如 ct6e-standard-8t
    • IMAGE_FAMILY:TPU VM 的作業系統映像檔系列。如要安裝特定 OS 版本,請使用 --image 旗標。如要進一步瞭解 OS 映像檔,請參閱「OS 映像檔」。
    • IMAGE_PROJECT:包含 OS 映像檔的專案。如果是 TPU 映像檔,則為 ubuntu-os-accelerator-images
    • KEY_PROJECT_ID:包含加密金鑰的專案。
    • REGION:您建立金鑰環的區域。
    • RING_NAME:金鑰環的名稱。
    • KEY_NAME:金鑰名稱。
  2. 建立工作負載政策。

    下列指令會建立工作負載政策:

    gcloud compute resource-policies create workload WORKLOAD_POLICY_NAME \
    --type=high-throughput \
    --accelerator-topology=TOPOLOGY
    

    替換下列預留位置:

    • WORKLOAD_POLICY_NAME:工作負載政策的名稱。
    • TOPOLOGY:TPU VM 的拓撲,例如 4x4x8
  3. 建立 MIG。

    gcloud compute instance-groups managed create MIG_NAME \
        --size=MIG_SIZE \
        --target-size-policy-mode=bulk \
        --template=INSTANCE_TEMPLATE_NAME \
        --zone=ZONE \
        --default-action-on-vm-failure=do-nothing \
        --workload-policy=WORKLOAD_POLICY_NAME
    

    替換下列預留位置:

    • MIG_NAME:MIG 的名稱。
    • MIG_SIZE:MIG 中的 VM 數量。系統會根據工作負載政策中指定的拓撲驗證這個值。
    • INSTANCE_TEMPLATE_NAME:執行個體範本的名稱。
    • ZONE:MIG 的區域
    • WORKLOAD_POLICY_NAME:工作負載政策的名稱。

如要瞭解如何使用 GKE 建立含有 CMEK 的 TPU VM,請參閱 GKE 文件中的「使用客戶管理的加密金鑰」。

已刪除或撤銷的 CMEK

如果撤銷或刪除 CMEK,使用以遭刪除或撤銷 CMEK 加密開機磁碟的任何 TPU VM,都不會自動關機。在關閉或重新啟動 VM 之前,TPU VM 仍可存取加密開機磁碟上的資料。這樣一來,如果恢復已撤銷或刪除金鑰的存取權,就能復原資料。重新啟用金鑰後,您就能啟動或修復 TPU VM,開機磁碟也會成功解密及載入。