使用客戶自行管理的加密金鑰保護備份資料

本指南說明如何搭配使用客戶自行管理的加密金鑰 (CMEK) 和 Backup and DR,提升備份安全。您將瞭解如何授予必要權限、建立已啟用 CMEK 的備份儲存空間,以及將這些儲存空間套用至資源,確保備份資料受到您在 Cloud Key Management Service 中控管的金鑰保護。這項設定對於滿足法規遵循要求,以及進一步控管資料加密作業至關重要。

如要進一步瞭解 Backup and DR 中的 CMEK 概念和支援的工作負載類型,請參閱使用 Backup and DR 服務的客戶自行管理加密金鑰 (CMEK) 總覽。

事前準備

開始使用 CMEK 前,請先完成下列步驟:

  1. 啟用 Cloud Key Management Service API。

    啟用 API

    將 PROJECT_ID 替換為您要管理金鑰的專案 ID。

  2. 建立 Cloud Key Management Service 金鑰環和金鑰:建立金鑰時,請務必選取與備份保存庫位置一致的位置。區域中的備份保存庫必須使用來自相同區域的金鑰。

  3. 視需要建立備份和災難復原服務代理:在專案中建立第一個備份和災難復原資源 (例如管理控制台或 backup vault) 時,系統通常會自動建立服務代理。如需在建立任何 Backup and DR 資源前授予服務代理程式權限,請手動觸發建立程序:

    gcloud beta services identity create --service=backupdr.googleapis.com --project=PROJECT_ID
    

    將 PROJECT_ID 替換為專案 ID。

已啟用 CMEK 的 backup vault 所需的權限

Backup and DR 服務代理程式需要權限,才能使用指定的 Cloud KMS 金鑰,在備份保存庫中加密及解密資料。

<0

如要取得使用 CMEK 加密及解密備份保存庫中資料所需的權限,請要求管理員在備份保存庫專用的 Cloud KMS 金鑰中,授予下列 IAM 角色:

  • Backup and DR 服務代理人 (service-VAULT_PROJECT_NUMBER@gcp-sa-backupdr.iam.gserviceaccount.com): Cloud KMS CryptoKey 加密者/解密者 (roles/cloudkms.cryptoKeyEncrypterDecrypter)

    將 VAULT_PROJECT_NUMBER 替換為備份保存庫所在專案的專案編號。

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

這些預先定義的角色具備使用 CMEK 加密及解密 backup vault 中資料所需的權限。如要查看確切的必要權限,請展開「Required permissions」(必要權限) 部分:

所需權限

如要使用 CMEK 加密及解密備份保存庫中的資料,您必須具備下列權限:

  • 如要使用金鑰版本加密資料,請執行下列操作: cloudkms.cryptoKeyVersions.useToEncrypt
  • 如要使用金鑰版本解密資料,請執行下列操作: cloudkms.cryptoKeyVersions.useToDecrypt
  • 如要取得有關金鑰位置的中繼資料: cloudkms.locations.get
  • 如要列出重要地點,請按照下列步驟操作: cloudkms.locations.list
  • 如要取得金鑰專案的中繼資料: resourcemanager.projects.get

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

如要將必要角色授予 gcp-sa-backupdr 服務代理,請按照下列說明操作:

控制台

  1. 前往 Google Cloud 控制台的「備份保存庫」頁面。

    前往備份儲存空間

  2. 按一下「建立備份保存庫」。

  3. 輸入備份保存庫的必要詳細資料,例如名稱和位置。

  4. 在「Encryption」(加密) 部分中,選取「Customer-managed encryption key (CMEK)」(客戶自行管理的加密金鑰 (CMEK)),即可使用自己的金鑰。

  5. 按一下「選取客戶代管的金鑰」,然後從挑選器中選擇要使用的 Cloud KMS 金鑰。

  6. 授予服務代理權限:

    • 選取金鑰後,控制台會檢查備份和災難復原服務代理是否具備使用該金鑰的權限。服務代理名稱為 service-VAULT_PROJECT_NUMBER@gcp-sa-backupdr.iam.gserviceaccount.com。

    • 如果您對金鑰擁有足夠的權限 (例如 roles/cloudkms.admin),且服務代理人尚未取得存取權,控制台可能會自動為所選金鑰的 Backup and DR 服務代理人授予 roles/cloudkms.cryptoKeyEncrypterDecrypter 角色。

    • 如果系統提示,請確認授權,允許 Backup and DR 使用您的 CMEK 加密及解密保存庫中的資料。

    • 如果無法使用自動授予選項,或您沒有授予角色的權限,就必須手動將 roles/cloudkms.cryptoKeyEncrypterDecrypter 角色授予服務代理程式。如需操作說明,請參閱「gcloud」分頁。

  7. 視需要設定其他備份保存庫設定。

  8. 點選「建立」。

gcloud

gcloud kms keys add-iam-policy-binding KEY_NAME \
    --location=KMS_LOCATION \
    --keyring=KEY_RING \
    --member=serviceAccount:service-VAULT_PROJECT_NUMBER@gcp-sa-backupdr.iam.gserviceaccount.com \
    --role=roles/cloudkms.cryptoKeyEncrypterDecrypter \
    --project=KMS_PROJECT_ID

替換變數:

  • KEY_NAME:CMEK 金鑰的名稱。

  • KMS_LOCATION:金鑰環所在的區域。

  • KEY_RING:金鑰環的名稱。

  • VAULT_PROJECT_NUMBER:備份保存庫所在的專案編號。

  • KMS_PROJECT_ID:管理 CMEK 金鑰的專案 ID。

建議您依據最小權限原則,在特定金鑰上授予角色。

備份現有 CMEK 保護資源所需的權限

如果備份的來源資源已使用「其他」CMEK 金鑰加密,例如具有 CMEK 加密磁碟的 Compute Engine 執行個體,則「來源資源服務」的服務代理程式 (例如 Compute Engine 服務代理程式) 需要存取保護該來源資源的金鑰權限。

<0x

如要取得所需權限,允許來源服務在備份作業期間存取 CMEK 金鑰,請要求管理員在保護來源資源(例如 Compute Engine 磁碟) 的 CMEK 金鑰上,授予下列 IAM 角色:

  • 來源資源代管服務的服務代理人: 通常是 Cloud Key Management Service CryptoKey Encrypter/Decrypter (roles/cloudkms.cryptoKeyEncrypterDecrypter)

    舉例來說,如果是以 CMEK 加密的 Compute Engine 執行個體,主體就是來源執行個體專案的 Compute Engine 服務代理程式

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

這些預先定義的角色具備所需權限,可讓來源服務在備份作業期間存取 CMEK 金鑰。如要查看確切的必要權限,請展開「Required permissions」(必要權限) 部分:

所需權限

如要允許來源服務在備份作業期間存取 CMEK 金鑰,必須具備下列權限:

  • 如要使用金鑰版本加密資料,請執行下列操作: cloudkms.cryptoKeyVersions.useToEncrypt
  • 如要使用金鑰版本解密資料,請執行下列操作: cloudkms.cryptoKeyVersions.useToDecrypt
  • 如要取得有關金鑰位置的中繼資料: cloudkms.locations.get
  • 如要列出重要地點,請按照下列步驟操作: cloudkms.locations.list
  • 如要取得金鑰專案的中繼資料: resourcemanager.projects.get

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

將 CMEK 用於備份和災難復原服務

  1. 建立已啟用 CMEK 的 backup vault。 建立備份保存庫時,請在「Encryption type」(加密類型) 部分選取「Customer-managed encryption key (CMEK)」(客戶自行管理的加密金鑰 (CMEK)) 選項,然後選擇您建立的 Cloud Key Management Service 金鑰。CMEK 只能在建立保存庫時啟用。無法在現有保險箱中新增、移除或變更。

  2. 建立備份方案。 建立備份方案時,請選取您建立的已啟用 CMEK 的備份儲存空間做為目標。

  3. 將備份方案套用至資源。相容性取決於資源類型和加密方式:

    • Compute Engine 執行個體:

      執行個體磁碟加密 backup vault 加密 支援 附註
      所有 Google 代管 Google 代管 是
      所有 Google 代管 CMEK 是 備份會以 Backup Vault 的 CMEK 加密。
      任何磁碟都以 CMEK 加密 Google 代管 否 如要備份以 CMEK 加密的磁碟,必須使用已啟用 CMEK 的 backup vault。
      任何磁碟都以 CMEK 加密 CMEK 是 備份儲存空間 CMEK 可能與磁碟 CMEK 不同。

    • 永久磁碟磁碟區:

      • Persistent Disk 磁碟區的備份檔一律會保留來源磁碟的加密方式。

      • 如果來源永久磁碟使用 Google 代管的加密功能,備份也會使用這項功能。

      • 如果來源永久磁碟使用 CMEK,備份會受到與來源磁碟相同的 CMEK 金鑰版本保護。

      • 備份保存庫的加密設定 (CMEK 或 Google 管理) 不會變更永久磁碟備份資料本身的加密方式。不過,系統可能仍會套用機構政策,請參閱「CMEK 機構政策」。

還原以 CMEK 加密的備份

從以 CMEK 加密的備份還原工作負載時,還原的資源預設會使用相同的 Cloud Key Management Service 金鑰,該金鑰在備份時保護來源資源。您可以在還原程序中,為目標資源指定其他 Cloud Key Management Service 金鑰。

Cloud Key Management Service 金鑰輪替對備份還原能力的影響

輪替金鑰時,Cloud Key Management Service 會建立新的金鑰版本,並將其設為主要版本。備份和災難復原服務會使用這個主要金鑰版本,加密以該金鑰設定的所有新備份。

現有備份仍會使用原始建立時的金鑰版本加密。如要還原任何備份,您必須在 Cloud Key Management Service 中啟用用於加密的特定金鑰版本。

無法存取金鑰版本的後果

  • 停用或銷毀金鑰版本後,您將無法存取以該版本加密的任何備份。

  • 如果 CMEK 金鑰已停用、毀損或權限遭撤銷,導致備份和災難復原無法存取,可能會發生下列情況:

    • 系統將無法備份至已啟用 CMEK 的 backup vault。

    • 如果無法存取備份的特定金鑰版本,就無法從備份還原資料。

    • 如果無法存取金鑰,就無法建立新的備份保存庫。

重新啟用已停用的金鑰版本即可還原存取權。金鑰版本一經銷毀即無法復原,且使用該版本加密的備份資料也會永久遺失。

CMEK 組織政策的適用情形

您可以透過機構政策限制,對備份和災難復原資源強制執行 CMEK 規定。詳情請參閱「CMEK 組織政策」。

backup vault 建立限制

  • constraints/gcp.restrictNonCmekServices:如果為 backupdr.googleapis.com 強制執行,所有新的備份儲存空間都必須使用 CMEK 建立。

  • constraints/gcp.restrictCmekCryptoKeyProjects:如果強制執行,啟用 CMEK 的備份儲存空間必須使用允許的專案或資料夾中的金鑰。

備份作業限制

  • constraints/gcp.restrictNonCmekServices:如果為 backupdr.googleapis.com 強制執行:

    • Compute Engine 執行個體備份:如果目標備份保存庫使用 Google 管理的加密,備份作業就會失敗。

    • 永久磁碟備份:如果來源永久磁碟使用 Google 代管的加密功能,備份作業就會失敗。

  • constraints/gcp.restrictCmekCryptoKeyProjects:如果強制執行:

    • Compute Engine 執行個體備份:如果目標 backup vault 經過 CMEK 加密,其金鑰必須來自允許的專案或資料夾。

    • 永久磁碟備份:如果來源永久磁碟經過 CMEK 加密,其金鑰必須來自允許的專案或資料夾。

後續步驟