本頁說明客戶自行管理的加密金鑰 (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 中的靜態資料。對於啟用 CMEK 的 Memorystore for Redis 執行個體,Google 會使用您的金鑰存取所有靜態資料。
Memorystore 會使用 Google 代管的資料加密金鑰 (DEK) 和金鑰加密金鑰 (KEK),加密 Memorystore for Redis 中的資料。加密等級分為兩種:
- DEK 加密:Memorystore 會使用 DEK 加密 Memorystore for Redis 中的資料。
- KEK 加密:Memorystore 會使用 KEK 加密 DEK。
Memorystore for Redis 執行個體會將加密的 DEK 與加密資料一併儲存在永久磁碟上,而 Google 則會管理 Google KEK。CMEK 是用來包裝 DEK 的 KEK。您可以使用 CMEK 建立、停用或刪除,以及啟用或還原 KEK。
您可以使用 Cloud Key Management Service API 管理 CMEK。
下圖顯示使用預設的 Google 代管加密機制與 CMEK 時,Memorystore for Redis 執行個體內的靜態資料加密運作方式。
不使用 CMEK
使用 CMEK
解密以 CMEK 包裝的資料時,Memorystore 會使用 Cloud Key Management Service 中的 KEK 解密 DEK,並使用未加密的 DEK 解密靜態資料。

定價
Memorystore for Redis 會對啟用 CMEK 的執行個體收費,與其他執行個體相同,不會產生額外費用。詳情請參閱 Memorystore for Redis 定價。
您可以使用 Cloud KMS API 管理 CMEK。 使用 CMEK 建立 Memorystore for Redis 執行個體時,Memorystore 會定期使用金鑰加密資料。
當 Memorystore for Redis 使用金鑰時,Cloud KMS 會向您收取金鑰費用,以及加密和解密作業的費用。詳情請參閱 Cloud KMS 定價。
Memorystore 何時會與 CMEK 互動?
| 作業 | 說明 |
|---|---|
| 建立執行個體 | 建立執行個體時,請將其設定為使用 CMEK。 |
| 執行個體更新 | 更新已啟用 CMEK 的執行個體時,Memorystore for Redis 會檢查 CMEK。 |
哪些資料會使用 CMEK 加密?
CMEK 會加密下列類型的資料:
關於服務帳戶
使用 CMEK 建立執行個體時,您必須將 cloudkms.cryptoKeyEncrypterDecrypter 角色授予 Memorystore for Redis 服務帳戶,該帳戶的格式如下:
service-PROJECT_NUMBER@cloud-redis.iam.gserviceaccount.com
授予這項權限後,服務帳戶就能向 Cloud KMS 要求金鑰存取權。
如需將這項權限授予服務帳戶的操作說明,請參閱授予 Memorystore for Redis 服務帳戶金鑰存取權。
關於金鑰
在 Cloud KMS 中,您需要建立金鑰環,並使用對稱加密演算法建立加密編譯金鑰。建立 Memorystore for Redis 執行個體時,請選取這個金鑰來加密執行個體。您可以為金鑰和例項建立一個專案,也可以分別建立專案。
所有 Memorystore for Redis 執行個體位置都提供 CMEK。您必須在要建立執行個體的相同區域中,建立金鑰環和金鑰。多區域或全域金鑰不適用。如果區域或位置不相符,建立執行個體的要求就會失敗。
CMEK 會使用下列格式的金鑰資源 ID:
projects/CMEK_ENABLED_PROJECT/locations/REGION/keyRings/KEY_RING_NAME/cryptoKeys/KEY_NAME
如果 Memorystore for Redis 無法存取任何正在使用的金鑰版本 (例如您停用所有金鑰版本),Memorystore for Redis 就會關閉執行個體。在 Google Cloud 控制台中,暫停的執行個體會在「Instances」(執行個體) 頁面上顯示紅色驚嘆號工具提示。將滑鼠游標懸停在工具提示上,就會顯示 No state 狀態。金鑰可供存取後,Memorystore for Redis 會自動恢復執行個體。
外部金鑰
您可以使用 Cloud External Key Manager (Cloud EKM),透過您管理的外部金鑰加密Google Cloud 中的資料。
使用 Cloud EKM 金鑰時,Google 無法控管外部代管金鑰的供應情形。如果在建立執行個體時無法使用金鑰,系統就不會建立執行個體。
如要進一步瞭解使用外部金鑰時的注意事項,請參閱 Cloud External Key Manager。
如何永久禁止存取以 CMEK 加密的資料?
您可能需要永久禁止存取以 CMEK 加密的資料。如要這麼做,請刪除金鑰版本。如要進一步瞭解如何刪除金鑰版本,請參閱「刪除與還原金鑰版本」一文。
如何匯入或匯出已啟用 CMEK 的執行個體資料?
如要確保匯出資料時,資料仍以 CMEK 加密,請先在 Cloud Storage 值區設定 CMEK,再將資料匯出至該值區。
如果資料儲存在已啟用 CMEK 的執行個體中,將資料匯入新執行個體時,沒有特殊規定或限制。
CMEK 金鑰版本的行為
本節說明停用、刪除、輪替、啟用及還原金鑰版本時會發生什麼情況。
停用或刪除 CMEK 金鑰版本
如要確保執行個體無法存取任何資料,請停用 CMEK 的主要金鑰版本。這會關閉執行個體。此外,如果停用或毀損任何正在使用的 CMEK,Memorystore for Redis 就會關閉執行個體。包括執行個體使用的任何舊金鑰版本。
如要查看 Memorystore for Redis 是否暫停執行個體,請使用下列任一介面:
- Google Cloud 控制台:在「Instances」(執行個體) 頁面中,執行個體旁會顯示紅色驚嘆號工具提示。將滑鼠游標懸停在工具提示上,就會顯示
No state狀態。 - gcloud CLI:使用
gcloud redis instances describe指令。確認執行個體中繼資料中沒有state: READY、state: REPAIRING或任何其他狀態。
啟用或還原主要 CMEK 金鑰版本
如果啟用或還原 CMEK 的主要金鑰版本,Memorystore for Redis 就不會再隱藏執行個體。
限制
搭配使用 CMEK 與 Memorystore for Redis 時,有以下限制:
- 您無法為現有的 Memorystore for Redis 執行個體啟用 CMEK。
- 金鑰、金鑰環和執行個體必須位於相同區域。
- 您必須使用金鑰的對稱式加密演算法。
- Cloud KMS 加密和解密速率受配額限制。
CMEK 組織政策
Memorystore for Redis 支援機構政策限制,可用於 CMEK 保護。
政策可以限制用於 CMEK 保護措施的 Cloud KMS 金鑰。
如果 Memorystore for Redis API 位於
constraints/gcp.restrictNonCmekServices限制的Deny政策服務清單中,您就無法建立未受 CMEK 保護的執行個體。如果您設定
constraints/gcp.restrictCmekCryptoKeyProjects限制,Memorystore for Redis 會建立受 CMEK 保護的執行個體,並使用允許的專案、資料夾或機構中的金鑰進行加密。
如要進一步瞭解如何設定 CMEK 組織政策,請參閱「CMEK 組織政策」。