關於 CMEK

如要控管及管理加密金鑰,保護 AlloyDB for PostgreSQL 叢集和備份中的靜態資料,您可以使用 Cloud Key Management Service (Cloud KMS) 中的客戶自行管理的加密金鑰 (CMEK)。

如要進一步瞭解 CMEK 的一般資訊,包括啟用這項功能的時機和原因,請參閱 Cloud KMS 說明文件。

根據預設,AlloyDB for PostgreSQL 會加密靜態客戶內容。AlloyDB 會為您處理加密作業,您不必採取其他動作。這個選項稱為「Google 預設加密機制」。

如要控管加密金鑰,您可以在 Cloud KMS 中使用客戶自行管理的加密金鑰 (CMEK),並搭配整合 CMEK 的服務 (包括 AlloyDB)。使用 Cloud KMS 金鑰,即可控管金鑰的保護等級、位置、輪替時間表、使用權限和存取權,以及加密範圍。使用 Cloud KMS 還能查看稽核記錄及控管金鑰生命週期。您可以在 Cloud KMS 中控管及管理用於保護資料的對稱金鑰加密金鑰 (KEK),而非由 Google 擁有及管理。

使用 CMEK 設定資源後,存取 AlloyDB 資源的體驗與使用 Google 預設加密功能類似。如要進一步瞭解加密選項,請參閱「客戶自行管理的加密金鑰 (CMEK)」。

如要瞭解如何使用手動建立的 CMEK 保護 AlloyDB 資源,請參閱「使用 CMEK」。

使用 Cloud KMS Autokey 的 CMEK

您可以手動建立 CMEK 來保護 AlloyDB 資源,也可以使用 Cloud KMS Autokey。Autokey 會視需求產生金鑰環和金鑰,以便在 AlloyDB 中建立資源。如果使用金鑰進行加密和解密作業的服務代理不存在,系統會建立這些代理,並授予必要的 Identity and Access Management (IAM) 角色。詳情請參閱「Autokey 總覽」。

功能與特色

  • 資料存取控管:管理員可以輪替、管理存取權,以及停用或刪除您用來保護 AlloyDB 靜態資料的金鑰。

    金鑰管理作業由 Cloud KMS 處理。輪替後,叢集不會自動使用較新的金鑰版本重新加密。建立叢集時,系統會以 CMEK 的主要版本加密叢集。如要輪替叢集加密,請建立備份,並使用較新的金鑰版本還原叢集。如要進一步瞭解備份與復原,請參閱「資料備份與復原總覽」。

  • 可稽核性:如果您在專案中啟用 Cloud KMS API 的稽核記錄,系統會記錄金鑰的所有動作 (包括 AlloyDB 執行的動作),並可在 Cloud Logging 中查看。

  • 效能:使用 CMEK 不會影響 AlloyDB 效能。

定價

AlloyDB 對啟用 CMEK 的叢集收費方式與其他叢集相同,不會額外收取 AlloyDB 費用。詳情請參閱「AlloyDB for PostgreSQL 定價」。

當 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 都有三層加密:

  1. AlloyDB 會將靜態資料分成多個區塊儲存,並使用個別加密金鑰加密每個區塊。用來加密資料區塊的金鑰稱為資料加密金鑰 (DEK)。

    由於 Google 的金鑰數量龐大,且需要低延遲和高可用性,AlloyDB 會將每個 DEK 儲存在其加密的資料附近。

  2. AlloyDB 會使用叢集持有的金鑰加密金鑰 (KEK),加密每個 DEK。

  3. 最後,AlloyDB 會使用叢集的 Cloud KMS 加密金鑰 (Google-owned and Google-managed encryption key 或 CMEK 金鑰) 加密 KEK。

您也可以查看用於保護叢集的金鑰版本。

啟用 CMEK

如要允許 AlloyDB 叢集使用 CMEK,您必須在建立叢集時指定 Cloud KMS 金鑰。

將 Cloud KMS CryptoKey 加密者/解密者 (roles/cloudkms.cryptoKeyEncrypterDecrypter) 角色授予 AlloyDB 服務代理後,AlloyDB 就能代您存取金鑰。

如需詳細操作說明,請參閱「使用 CMEK」。

管理金鑰

使用 Cloud KMS 執行所有金鑰管理作業。在 Cloud KMS 傳播金鑰變更之前,AlloyDB 無法偵測或處理任何金鑰變更。某些作業 (例如停用或刪除金鑰) 最多可能需要三小時才能生效。權限變更通常會更快生效。

叢集建立後,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 的一部分。金鑰存取依據 可讓您查看每項 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,系統會使用建立備份時的 Cloud KMS 金鑰主要版本進行加密。備份建立後,即使 Cloud KMS 金鑰經過輪替,也無法修改金鑰和金鑰版本。如要進一步瞭解如何使用 CMEK 加密備份,請參閱「備份叢集」。

從備份還原叢集時,還原的叢集預設會使用 Google 代管的加密機制,但您也可以指定要使用的 CMEK 金鑰。如要還原已啟用 CMEK 的備份,必須具備用於加密備份的金鑰和金鑰版本。

跨區域複製作業

Cloud KMS 金鑰是區域性資源,因此主要叢集和跨區域次要叢集必須使用位於各自區域的不同 Cloud KMS 金鑰。主要叢集和次要叢集的加密設定彼此獨立。如要使用 CMEK 保護這兩個叢集,請在主要叢集的區域建立 Cloud KMS 金鑰,並在次要叢集的區域建立另一個 Cloud KMS 金鑰。

記錄

如果您在專案中啟用 Cloud KMS API 的稽核記錄,就能在 Cloud Logging 中稽核 AlloyDB 代表您傳送至 Cloud KMS 的要求。這些 Cloud KMS 記錄項目會顯示在 Cloud Logging 中。詳情請參閱「查看 Cloud KMS 金鑰的稽核記錄」。

後續步驟