客戶自行管理的加密金鑰 (CMEK)

根據預設, Google Cloud 會使用 Google 代管的加密金鑰,自動加密靜態資料。如果您有與資料保護金鑰相關的特定法規遵循或監管要求,可以使用客戶自行管理的加密金鑰 (CMEK)。

透過 CMEK,您可以使用透過 Cloud Key Management Service (Cloud Key Management Service) 控制的加密金鑰,保護 Backup and DR 資料。使用 CMEK 時,您可以在 Cloud Key Management Service 中管理金鑰,並透過管理金鑰的身分與存取權管理權限,控管金鑰存取權。如果暫時停用或永久刪除 CMEK 金鑰,受該金鑰保護的資料就會無法存取。如要進一步瞭解 CMEK,請參閱「客戶管理的加密金鑰 (CMEK)」。

備份和災難復原服務會使用 CMEK,保護儲存在備份保存庫中的備份資料。

備份和災難復原服務如何使用 CMEK

視備份的資源而定,備份和災難復原服務會使用 CMEK 金鑰保護備份,方式如下:

  • 針對儲存在備份儲存空間中的 Compute Engine 執行個體備份: 如果連結至 Compute Engine 執行個體的一或多個磁碟經過 CMEK 加密,Backup and DR 必須將該執行個體備份至啟用 CMEK 的備份儲存空間。 如果附加至執行個體的所有磁碟都使用 Google 管理的加密機制,則在 Google Cloud 控制台中,您必須將備份檔儲存在非 CMEK 備份保存庫中。不過,如果您使用 Google Cloud CLI、API 或 Terraform,可以設定將這類執行個體的備份資料儲存在啟用 CMEK 的備份保存庫中。

    如果 Compute Engine 執行個體備份儲存在啟用 CMEK 的備份保存庫中,系統會使用保存庫的 Cloud Key Management Service 金鑰加密備份資料,無論執行個體磁碟的加密狀態為何。

  • 永久磁碟備份:Backup and DR 會依據來源工作負載的加密方式,保留來源磁碟的加密狀態。如果來源 Persistent Disk 受 CMEK 保護,備份也會受到相同的 CMEK 金鑰保護。如果來源永久磁碟使用 Google 管理的加密機制,備份也會使用 Google 管理的加密機制,且必須儲存在未設定 CMEK 的備份保存庫中。

下表摘要說明不同工作負載類型的備份作業所用的加密金鑰:

工作負載 備份使用的加密金鑰 CMEK 支援狀態
Compute Engine 執行個體 backup vault CMEK 金鑰 支援
Compute Engine 磁碟 來源磁碟的加密金鑰 支援
Cloud SQL - 不支援
AlloyDB 叢集 - 不支援
Filestore 執行個體 - 不支援
Google Cloud VMware Engine、Oracle 資料庫和 SQL Server 資料庫 - 不支援

限制

備份和災難復原服務支援 CMEK,但有下列限制:

  • 只有儲存在 backup vault 中的 Compute Engine 執行個體和永久磁碟備份,才支援 CMEK 保護。
  • 您只能在建立備份保存庫時設定 CMEK。您無法在現有的備份儲存空間啟用、停用或變更 CMEK。
  • Cloud Key Management Service 金鑰必須與備份保存庫位於相同位置。區域中的備份保存庫必須使用來自相同區域的金鑰。 多區域備份儲存空間必須使用來自相同多區域的金鑰。
  • Backup and DR 不支援客戶提供的加密金鑰 (CSEK)。
  • 預設 backup vault 和預設備份方案會使用 Google 代管的加密機制。如要使用 CMEK,您必須建立新的備份保存庫,並明確啟用 CMEK。

事前準備

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

  1. 在要儲存 CMEK 金鑰的專案中,啟用 Cloud Key Management Service API。

    啟用 API

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

  3. 如果尚未建立,請建立 Backup and DR 服務代理程式。 在專案中建立第一個備份和災難復原資源 (backup vault、 Google Cloud 控制台等) 後,系統就會自動建立服務代理。如要在建立備份保存庫前授予服務代理權限,可以使用下列指令觸發建立作業:

    gcloud beta services identity create --service=backupdr.googleapis.com --project=PROJECT_ID
    
    PROJECT_ID 替換為專案 ID。

授予 CMEK 權限

如要讓備份和災難復原服務使用 CMEK 保護備份,或備份受 CMEK 保護的資源,您必須將 IAM 角色授予特定服務代理程式。

授予使用保管箱 CMEK 金鑰的權限

為備份保存庫設定 CMEK 時,Backup and DR 需要有權使用您的 CMEK 金鑰加密及解密資料。這項權限必須授予備份和災難復原服務代理程式

請務必區分 Backup and DR 使用的兩種不同服務帳戶:

  • 備份和災難復原服務代理程式:這是專案層級的服務帳戶,用於管理備份和災難復原資源,以及在備份保存庫設定 CMEK 時存取 Cloud Key Management Service 金鑰。這是需要 CMEK 金鑰 roles/cloudkms.cryptoKeyEncrypterDecrypter 角色的服務代理。
  • 備份保管箱服務帳戶:這是每個保管箱專屬的服務帳戶,您可授權該帳戶存取及備份來源工作負載 (例如 Compute Engine 執行個體)。這個服務帳戶不會用於備份保存庫中資料的 CMEK 加密。

如要將 CMEK 與 Backup and DR 搭配使用,您必須將 Cloud KMS CryptoKey Encrypter/Decrypter 角色 (roles/cloudkms.cryptoKeyEncrypterDecrypter) 授予 Backup and DR 服務代理人。這個服務代理程式是服務帳戶,Backup and DR 會使用這個帳戶代表您存取資源,包括在加密和解密作業期間存取 Cloud Key Management Service 金鑰。

備份和災難復原服務代理程式的命名格式如下:

service-VAULT_PROJECT_NUMBER@gcp-sa-backupdr.iam.gserviceaccount.com

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

如果您有權限授予 IAM 角色,可以在使用 Google Cloud 控制台建立備份保存庫時授予這個角色,也可以使用 gcloud kms keys add-iam-policy-binding 指令預先授予:

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

您可以如範例所示,在特定金鑰上授予這個角色,也可以在金鑰環或專案層級授予這個角色。在金鑰層級授予權限可提供最精細的控制權,並符合最低權限原則,因此建議您採用這種做法。如果您打算讓 Backup and DR 使用該範圍內的多個金鑰,在專案或金鑰環層級授予權限會比較方便,但這樣會授予更廣泛的權限。

授予備份受 CMEK 保護資源的權限

如果您要備份的資源本身是使用其他 CMEK 金鑰加密,例如具有 CMEK 加密磁碟的 Compute Engine 執行個體,則需要額外權限。來源資源服務的服務代理需要有權使用保護來源資源的金鑰。舉例來說,如要備份以 CMEK 加密的 Compute Engine 執行個體,來源執行個體專案的 Compute Engine 服務代理必須在用於加密執行個體磁碟的 Cloud Key Management Service 金鑰上,擁有 roles/cloudkms.cryptoKeyEncrypterDecrypter 角色。在大多數情況下,來源工作負載運作時,這項權限已就位。

搭配使用 CMEK 與備份和災難復原服務

本節說明如何使用 CMEK 保護備份。

1. 建立啟用 CMEK 的 backup vault

建立備份保存庫時,請在「Encryption」(加密) 部分選取「Customer-managed encryption key (CMEK)」(客戶管理的加密金鑰 (CMEK)) 選項,然後選擇您建立的 Cloud Key Management Service 金鑰。您只能在建立保存庫時啟用 CMEK,無法在現有保存庫上啟用、停用或變更這項功能。

2. 建立備份方案

建立備份方案時,請選取您在上一步中建立的 CMEK 備份金庫,做為備份的目標備份金庫。

3. 將備份方案套用至資源

將備份方案套用至資源時,請務必確保備份方案的目標 backup vault 與資源的加密設定相容:

  • 如果您要備份已連結一或多個 CMEK 加密磁碟的 Compute Engine 執行個體,則必須使用以啟用 CMEK 的備份保存庫為目標的備份方案。
  • 如果您要備份的 Compute Engine 執行個體中,所有附加磁碟都使用 Google 管理的加密方式:
    • 如果您使用 Google Cloud 控制台指派備份方案,則必須使用以非 CMEK 備份保存庫為目標的備份方案。
    • 如果您使用 gcloud CLI、API 或 Terraform 指派備份方案,可以選擇以啟用 CMEK 的備份保存庫為目標的備份方案。如果這麼做,執行個體的備份就會以備份保存庫的 CMEK 金鑰加密。
  • 如果您要備份使用 Google 代管加密的永久磁碟,必須使用以非 CMEK 備份保存庫為目標的備份方案。

請確認您已授予必要的 KMS 權限,詳情請參閱「授予 CMEK 權限」,確保備份作業順利執行。

Cloud Key Management Service 金鑰輪替和備份還原功能

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

現有備份不會重新加密,仍會使用建立時的金鑰版本加密。如要還原備份,用於加密的金鑰版本必須可在 Cloud Key Management Service 中使用。如果停用或刪除金鑰版本,使用該版本加密的備份資料將無法存取。為確保備份資料可還原,請勿停用或刪除備份資料仍使用的金鑰版本,以免無法還原備份資料。

如果 Backup and DR 無法存取您的 CMEK 金鑰 (例如,加密或解密所需的金鑰版本已停用或銷毀,或是 Backup and DR 服務代理的金鑰 IAM 權限遭到撤銷),可能會發生下列情況:

  • 如果無法存取主要金鑰版本,系統就無法將新備份檔儲存到已啟用 CMEK 的備份保存庫。
  • 如果無法存取用於加密備份的特定金鑰版本,從備份保存庫還原資料就會失敗。
  • 您將無法使用無法存取的金鑰,建立新的備份保管箱。

如果您停用了用於備份的金鑰版本,重新啟用後即可存取以該版本加密的備份。如果銷毀金鑰版本,使用該版本加密的備份資料會永久遺失,且無法還原。

定價

使用 CMEK 時,Backup and DR 不會收取任何額外費用。不過,您仍須支付在 Cloud Key Management Service 中使用金鑰的費用。詳情請參閱「Cloud Key Management Service 定價」。

後續步驟