本指南說明如何搭配使用客戶自行管理的加密金鑰 (CMEK) 和 Backup and DR,提升備份安全性。您將瞭解如何授予必要權限、建立已啟用 CMEK 的備份儲存空間,以及將這些儲存空間套用至資源,確保備份資料受到您在 Cloud Key Management Service 中控管的金鑰保護。這項設定對於滿足法規遵循需求,以及進一步控管資料加密作業至關重要。
如要進一步瞭解 CMEK 概念,以及 Backup and DR 支援的工作負載類型,請參閱備份和災難復原服務的客戶自行管理加密金鑰 (CMEK) 總覽。
事前準備
開始使用 CMEK 前,請先完成下列步驟:
啟用 Cloud Key Management Service API。
將
PROJECT_ID替換為您要管理金鑰的專案 ID。建立 Cloud Key Management Service 金鑰環和金鑰:建立金鑰時,請務必選取與備份保存庫位置相符的位置。區域中的備份保存庫必須使用來自同一區域的金鑰。
視需要建立備份和災難復原服務代理:在專案中建立第一個備份和災難復原資源 (例如管理控制台或 backup vault) 時,系統通常會自動建立服務代理。如需在建立任何備份和災難復原資源之前授予服務代理權限,請手動觸發建立程序:
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 加密及解密備份保存庫中資料所需的權限。如要查看確切的必要權限,請展開「Required permissions」(必要權限) 部分:
所需權限
如要使用 CMEK 加密及解密備份保存庫中的資料,您必須具備下列權限:
-
如要使用金鑰版本加密資料,請執行下列操作:
cloudkms.cryptoKeyVersions.useToEncrypt -
如要使用金鑰版本解密資料,請執行下列操作:
cloudkms.cryptoKeyVersions.useToDecrypt -
如要取得有關金鑰位置的中繼資料:
cloudkms.locations.get -
如要列出重要地點,請按照下列步驟操作:
cloudkms.locations.list -
如要取得金鑰專案的中繼資料:
resourcemanager.projects.get
如要將必要角色授予 gcp-sa-backupdr 服務代理,請按照下列說明操作:
控制台
前往 Google Cloud 控制台的「備份保存庫」頁面。
按一下「建立備份保存庫」。
輸入備份保存庫的必要詳細資料,例如名稱和位置。
在「Encryption」(加密) 部分中,選取「Customer-managed encryption key (CMEK)」(客戶自行管理的加密金鑰 (CMEK)),即可使用自己的金鑰。
按一下「選取客戶代管的金鑰」,然後從挑選器中選擇要使用的 Cloud KMS 金鑰。
授予服務代理權限:
選取金鑰後,控制台會檢查備份和災難復原服務代理程式是否具有使用該金鑰的權限。服務代理程式的名稱為 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」分頁。
視需要設定其他備份保存庫設定。
點選「建立」。
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 用於備份和災難復原服務
建立已啟用 CMEK 的 backup vault。 建立備份保存庫時,請在「Encryption type」(加密類型) 部分選取「Customer-managed encryption key (CMEK)」(客戶自行管理的加密金鑰 (CMEK)) 選項,然後選擇您建立的 Cloud Key Management Service 金鑰。CMEK 只能在建立保存庫時啟用。現有保存庫無法新增、移除或變更這項設定。
建立備份方案。 建立備份方案時, 請選取您建立的已啟用 CMEK 的備份儲存空間做為目標。
將備份方案套用至資源。相容性取決於資源類型和加密方式:
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.comCompute Engine 執行個體備份:如果目標備份保存庫使用 Google 管理的加密,備份作業就會失敗。
永久磁碟備份:如果來源永久磁碟使用 Google 代管的加密功能,備份作業就會失敗。
constraints/gcp.restrictCmekCryptoKeyProjects:如果強制執行:Compute Engine 執行個體備份:如果目標 backup vault 經過 CMEK 加密,其金鑰必須來自允許的專案或資料夾。
永久磁碟備份:如果來源永久磁碟經過 CMEK 加密,其金鑰必須來自允許的專案或資料夾。
後續步驟
- 瞭解如何建立及管理備份保存庫。