本頁說明客戶自行管理的加密金鑰 (CMEK) 如何搭配 Memorystore for Redis 使用。如要開始使用這項功能,請參閱「使用客戶自行管理的加密金鑰 (CMEK)」。
根據預設,Memorystore for Redis 會加密靜態客戶內容。Memorystore for Redis 會為您處理加密作業,您不必採取任何其他動作。這項做法稱為「Google 預設加密」。
如要控管加密金鑰,您可以在 Cloud KMS 中使用客戶自行管理的加密金鑰 (CMEK),搭配整合 CMEK 的服務,包括 Memorystore for Redis。使用 Cloud KMS 金鑰可讓您控管保護等級、位置、輪替時間表、使用權限和存取權,以及加密範圍。使用 Cloud KMS 也能查看稽核記錄,以及控管金鑰生命週期。 您可以在 Cloud KMS 中控制及管理這些金鑰,而不是由 Google 擁有及管理用來保護您資料的對稱金鑰加密金鑰 (KEK)。
使用 CMEK 設定資源後,存取 Memorystore for Redis 資源的體驗與使用 Google 預設加密類似。如要進一步瞭解加密選項,請參閱「客戶管理的加密金鑰 (CMEK)」。
哪些人適合使用 CMEK?
CMEK 適用於必須加密機密或受管制資料的機構。如要進一步瞭解是否要使用 CMEK 加密這項資料,請參閱「決定是否要使用 CMEK」。
Google 代管的加密金鑰與客戶自行管理的加密金鑰
CMEK 功能可讓您將自有的加密編譯金鑰用於 Memorystore for Redis 中的靜態資料。新增客戶代管的加密金鑰後,每當發出 API 呼叫時,Memorystore 就會使用您的金鑰存取資料。
Memorystore 會使用 Google 代管的資料加密金鑰 (DEK) 和金鑰加密金鑰 (KEK) 來加密 Memorystore for Redis。加密分為兩個層級:
- DEK 會加密資料。
- KEK 會加密 DEK。
Memorystore 執行個體會將加密的 DEK 與加密資料一併儲存在永久磁碟上,而 Google 則會管理 Google KEK。CMEK 是用來包裝 DEK 的 KEK。您可以使用客戶管理的加密金鑰建立、撤銷及刪除 KEK。
客戶管理的加密金鑰是透過 Cloud Key Management Service API 管理。
下圖顯示在 Memorystore 執行個體中使用預設 Google 加密和客戶管理的加密金鑰時,靜態資料加密的運作方式。
不使用 CMEK
使用 CMEK
解密以客戶管理的加密金鑰包裝的資料時,Memorystore 會使用 KEK 解密 DEK,並使用未加密的 DEK 解密靜態資料。
Memorystore 何時會與 CMEK 金鑰互動?
作業 | 說明 |
---|---|
建立執行個體 | 建立執行個體時,請將執行個體設定為使用客戶自行管理的加密金鑰。 |
執行個體更新 | 更新已啟用 CMEK 的執行個體時,Memorystore 會檢查 CMEK 金鑰。 |
CMEK 會加密哪些資料?
CMEK 會加密下列類型的資料:
關於服務帳戶
使用 CMEK 建立執行個體時,您必須將 cloudkms.cryptoKeyEncrypterDecrypter 角色授予 Memorystore 服務帳戶,該帳戶的格式如下:
service-[PROJECT_NUMBER]@cloud-redis.iam.gserviceaccount.com
授予這項權限後,服務帳戶就能向 Cloud KMS 要求金鑰存取權。
如要瞭解如何將這項權限授予服務帳戶,請參閱授予服務帳戶金鑰存取權。
關於金鑰
在 Cloud KMS 中,您需要建立金鑰環,並使用對稱加密/解密演算法建立加密編譯金鑰。建立新的 Memorystore 執行個體時,請選取這個金鑰來加密執行個體。您可以為這兩項資源建立一個專案,也可以分別建立專案。
所有 Memorystore 執行個體位置都支援 CMEK。金鑰和金鑰環區域必須設為與 Memorystore for Redis 執行個體相同的區域。多區域或全域金鑰不適用。如果區域不相符,建立 Memorystore 執行個體的要求就會失敗。
Memorystore 適用的 CMEK 與 Cloud External Key Manager (Cloud EKM) 相容。
客戶自行管理的加密金鑰採用下列格式:
projects/[CMEK_ENABLED_PROJECT]/locations/[REGION]/keyRings/[RING_NAME]/cryptoKeys/[KEYNAME]
如果 Memorystore 無法存取目前使用的任何金鑰版本 (例如您停用金鑰版本),Memorystore 會立即關閉執行個體。在 Google Cloud 控制台中,暫停的執行個體會在「Instances」(執行個體) 頁面上顯示紅色驚嘆號工具提示。將滑鼠游標懸停在工具提示上時,會顯示「沒有狀態」。金鑰恢復存取權後,Memorystore 會自動恢復執行個體。
如何讓 CMEK 加密資料永久無法存取?
您可能需要永久銷毀以 CMEK 加密的資料。如要這麼做,請銷毀客戶自行管理的加密金鑰版本。您無法刪除金鑰環或金鑰,但可以刪除金鑰的金鑰版本。
如何從啟用 CMEK 的執行個體匯出資料,以及匯入資料至這類執行個體?
如要確保資料在匯入或匯出期間,仍以客戶自行管理的金鑰加密,請先在 Cloud Storage 值區設定客戶自行管理的加密金鑰,再將資料匯出至該值區。
如果資料先前儲存在啟用 CMEK 的 Memorystore 執行個體中,匯入新 Memorystore 執行個體時,沒有任何特殊規定或限制。
刪除/停用 CMEK 金鑰版本的行為
如要確保執行個體無法存取任何資料,請停用客戶自行管理的加密金鑰主版本。這樣做可避免執行個體延遲關機。此外,如果任何正在使用的客戶管理加密金鑰遭到停用/毀損,Memorystore 會立即關閉執行個體。包括 Memorystore 執行個體仍使用的任何舊版金鑰。您可以使用 gcloud 或 Google Cloud 主控台,查看執行個體是否已暫停:
在 Google Cloud 控制台中,如果執行個體已暫停,Memorystore for Redis「執行個體」頁面中,執行個體旁會顯示紅色工具提示通知。將游標懸停在該圖示上時,工具提示會顯示「沒有狀態」。
如果是 gcloud,執行 gcloud redis instances describe
後,如果沒有看到 state: READY
、state: REPAIRING
或執行個體中繼資料中的任何其他狀態,表示執行個體已遭停權。
重新啟用/還原使用中的 CMEK 金鑰版本
重新啟用/還原使用中的 CMEK 金鑰版本後,執行個體就會取消隱藏。
限制
使用客戶自行管理的加密金鑰搭配 Memorystore 時,請留意下列限制:
- 您無法在現有的 Memorystore 執行個體上啟用客戶自行管理的加密金鑰。
- 金鑰、金鑰環和 Memorystore 執行個體必須位於相同區域。
- 您必須使用金鑰的對稱加密/解密演算法。
- Cloud KMS 加密和解密速率受配額限制。
CMEK 組織政策
Memorystore for Redis 支援可用於 CMEK 保護的機構政策限制。
政策可以限制用於 CMEK 保護措施的 Cloud KMS 金鑰。
如果 Memorystore for Redis API 位於限制
constraints/gcp.restrictNonCmekServices
下的服務政策清單Deny
中,則系統會禁止建立未受 CMEK 保護的 Memorystore for Redis 執行個體。設定
constraints/gcp.restrictCmekCryptoKeyProjects
後,Memorystore for Redis 會建立受 CMEK 保護的執行個體,並使用允許的專案、資料夾或機構中的金鑰進行加密。
如要進一步瞭解如何設定 CMEK 組織政策,請參閱「CMEK 組織政策」。