本頁說明 AlloyDB for PostgreSQL 的客戶自行管理加密金鑰 (CMEK)。
如要進一步瞭解 CMEK,包括何時及為何啟用這項功能,請參閱 Cloud KMS 說明文件。
根據預設,PostgreSQL 適用的 AlloyDB 會加密靜態客戶內容。AlloyDB 會為您處理加密作業,您不必採取其他動作。這項做法稱為「Google 預設加密」。
如要控管加密金鑰,您可以在 Cloud KMS 中使用客戶自行管理的加密金鑰 (CMEK),搭配整合 CMEK 的服務 (包括 AlloyDB)。使用 Cloud KMS 金鑰可讓您控管保護等級、位置、輪換時間表、使用權限和存取權,以及加密範圍。使用 Cloud KMS 也能查看稽核記錄,以及控管金鑰生命週期。 您可以在 Cloud KMS 中控制及管理這些金鑰,而不是由 Google 擁有及管理用來保護您資料的對稱金鑰加密金鑰 (KEK)。
使用 CMEK 設定資源後,存取 AlloyDB 資源的體驗與使用 Google 預設加密類似。如要進一步瞭解加密選項,請參閱客戶管理的加密金鑰 (CMEK)。
如要瞭解如何使用手動建立的 CMEK 保護 AlloyDB 資源,請參閱使用 CMEK。
使用 Cloud KMS Autokey 的 CMEK
您可以手動建立 CMEK 來保護 AlloyDB 資源,也可以使用 Cloud KMS Autokey。使用 Autokey 時,系統會在 AlloyDB 中建立資源時,視需要產生金鑰環和金鑰。如果服務代理尚未建立,系統會建立服務代理,並授予必要的 Identity and Access Management (IAM) 角色,供服務代理使用金鑰進行加密和解密作業。詳情請參閱「Autokey 總覽」。
使用 Terraform 或 REST API 建立資源時,AlloyDB 僅與 Cloud KMS Autokey 相容。
Google 代管加密的替代方案,由您自行管理
根據預設, Google Cloud中的所有靜態資料 (包括 AlloyDB 中的資料) 都會受到 Google 管理的預設加密保護。 Google Cloud會為您處理及管理這項預設加密作業,您不必進行任何其他操作。
如果您在保護資料的金鑰方面有特定的法規遵循或監管要求,可以改用 CMEK。使用 CMEK 時,AlloyDB 叢集會受到保護,而您可以在 Cloud Key Management Service (KMS) 中控管及管理金鑰。CMEK 金鑰可以是對稱金鑰或 Cloud HSM 金鑰。
功能
資料存取權控管:管理員可以輪替、管理存取權,以及停用或刪除您用來保護 AlloyDB 靜態資料的金鑰。
金鑰管理作業由 Cloud KMS 處理。叢集不會在輪替後,自動以較新的金鑰版本重新加密。叢集會在建立時以 CMEK 的主要版本加密。如要輪替叢集加密,請建立備份,並使用較新的金鑰版本還原叢集。詳情請參閱「資料備份與復原總覽」。
稽核功能:如果您在專案中啟用 Cloud KMS API 的稽核記錄,系統會記錄對金鑰執行的所有動作 (包括 AlloyDB 執行的動作),並在 Cloud Logging 中顯示。
效能:使用 CMEK 不會對 AlloyDB 效能造成任何影響。
定價
AlloyDB 會對啟用 CMEK 的叢集收費,與其他叢集相同,不會產生額外的 AlloyDB 費用。詳情請參閱 PostgreSQL 適用的 AlloyDB 價格。
當 AlloyDB 使用金鑰時,Cloud KMS 會向您收取金鑰費用,以及加密和解密作業的費用。詳情請參閱 Cloud Key Management Service 定價。
受 CMEK 保護的項目
AlloyDB 會使用您的 Cloud KMS 金鑰,透過下列方式保護靜態資料:
- 在叢集上啟用 CMEK 後,AlloyDB 會使用您的金鑰,將叢集儲存空間中的所有資料加密。
- 如果您在建立隨選備份時指定 CMEK 設定,AlloyDB 會使用您的金鑰加密該備份。
如果您在叢集的持續或自動備份設定中啟用 CMEK,AlloyDB 就會使用您的金鑰加密持續備份。
無論您使用 Google-owned and Google-managed encryption keys 或 CMEK,AlloyDB 都有三層加密:
AlloyDB 會將靜態資料分割為多個區塊以便儲存,每個區塊都會以個別加密金鑰進行加密。用來加密區塊中資料的金鑰稱為資料加密金鑰 (DEK)。
由於 Google 擁有大量金鑰,且需提供低延遲和高可用性的服務,因此 AlloyDB 會將每個 DEK 儲存在加密的資料附近。
AlloyDB 會使用叢集持有的金鑰加密金鑰 (KEK),加密每個 DEK。
最後,AlloyDB 會使用叢集的 Cloud Key Management Service 型加密金鑰 (即 Google-owned and Google-managed encryption key或 CMEK 金鑰) 加密 KEK。
您也可以查看用於保護叢集的金鑰版本。
啟用 CMEK
如要允許 AlloyDB 叢集使用 CMEK,您必須在建立叢集時指定 Cloud KMS 金鑰。
授予 AlloyDB 服務代理人「Cloud KMS CryptoKey 加密者/解密者」(roles/cloudkms.cryptoKeyEncrypterDecrypter
) 角色後,AlloyDB 就能代表您存取金鑰。
如需詳細操作說明,請參閱「使用 CMEK」。
管理金鑰
使用 Cloud KMS 執行所有金鑰管理作業。在 Cloud KMS 傳播金鑰變更之前,AlloyDB 無法偵測或採取任何動作。部分作業 (例如停用或銷毀金鑰) 最多可能需要 3 小時才能傳播;權限變更通常會更快傳播。
叢集建立完成後,AlloyDB 大約每五分鐘會呼叫 Cloud KMS,確保金鑰仍有效。
如果 AlloyDB 偵測到 Cloud KMS 金鑰已停用或毀損,系統會立即開始執行作業,讓叢集資料無法存取。如果 AlloyDB 對 Cloud KMS 的呼叫偵測到先前停用的金鑰已重新啟用,系統會自動還原存取權。
使用及管理外部金鑰
除了使用 Cloud KMS 中的金鑰,您也可以使用支援的外部金鑰管理合作夥伴的金鑰。如要執行這項操作,請使用 Cloud External Key Manager (Cloud EKM) 建立及管理外部金鑰,這些金鑰是指向 Google Cloud外部金鑰的指標。詳情請參閱「Cloud External Key Manager」。
使用 Cloud EKM 建立外部金鑰後,您可以在建立叢集時提供該金鑰的 ID,將金鑰套用至新的 AlloyDB 叢集。這個程序與將 Cloud KMS 金鑰套用至新叢集相同。
您可以將金鑰存取理由與 Cloud EKM 搭配使用。您可以使用 Key Access Justifications 查看每項 Cloud EKM 要求的原因。此外,您也可以根據提供的理由,自動核准或拒絕要求。詳情請參閱總覽。
Google 無法控管外部金鑰管理合作夥伴系統中的金鑰供應情形。
無法使用車鑰
如果停用用於加密 AlloyDB 叢集的 Cloud KMS 金鑰,該叢集所屬的 AlloyDB 執行個體會在 30 分鐘內發生停機情形。重新啟用金鑰後,執行個體就會恢復運作。
在不常見的情況下 (例如 Cloud KMS 無法使用時),AlloyDB 可能無法從 Cloud KMS 擷取金鑰狀態。在這種情況下,AlloyDB 會盡力在最多 30 分鐘內繼續支援完整叢集作業,盡量減少暫時性中斷對工作負載的影響。
如果 30 分鐘後 AlloyDB 仍無法連線至 Cloud KMS,AlloyDB 會開始將叢集離線,以採取保護措施。在叢集重新連線至 Cloud KMS,且 Cloud KMS 回應金鑰處於啟用狀態前,您都無法存取 AlloyDB 叢集中的資料。
備份與還原
AlloyDB 也會使用 CMEK 或預設的 Google 代管加密機制,保護備份。如果備份作業已啟用 CMEK,系統會使用備份作業建立時的 KMS 金鑰主要版本進行加密。備份建立完成後,即使 KMS 金鑰輪替,備份的金鑰和金鑰版本也無法修改。詳情請參閱備份叢集。
從備份還原叢集時,還原的叢集預設會使用 Google 代管加密,但您可以指定改用 CMEK 金鑰。如要還原啟用 CMEK 的備份,您必須同時提供用於加密備份的金鑰和金鑰版本。
記錄
如果您已在專案中啟用 Cloud KMS API 的稽核記錄,可以在 Cloud Logging 中稽核 AlloyDB 代表您傳送至 Cloud KMS 的要求。這些 Cloud KMS 記錄項目會顯示在 Cloud Logging 中。詳情請參閱「查看 Cloud KMS 金鑰的稽核記錄」一文。