客戶自行管理的加密金鑰

設定方式

Cloud Storage 預設會加密靜態儲存的客戶內容。Cloud Storage 會為您處理加密作業,您不必採取其他動作。這項做法稱為「Google 預設加密機制」。

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

使用 CMEK 設定資源後,存取 Cloud Storage 資源的體驗與使用 Google 預設加密機制類似。如要進一步瞭解 CMEK,請參閱「 客戶自行管理的加密金鑰 (CMEK)」。如要瞭解如何使用手動建立的 CMEK 保護 Cloud Storage 資源,請參閱「使用客戶自行管理的加密金鑰」。

如要進一步瞭解使用 Cloud Storage 時的其他加密選項,請參閱「資料加密選項」。

搭配 Cloud KMS Autokey 使用 CMEK

您可以手動建立 CMEK,保護 Cloud Storage bucket 和其中的物件,也可以使用 Cloud KMS Autokey。Autokey 會視需求產生金鑰環和金鑰,以便在 Cloud Storage 中建立或更新資源。如果服務代理程式尚未使用金鑰執行加密和解密作業,系統會建立這類代理程式,並授予必要的 Identity and Access Management (IAM) 角色。詳情請參閱「Autokey 總覽」。

Autokey 不會為物件建立金鑰。根據預設,bucket 中的物件會使用 bucket 預設金鑰。如要使用 bucket 預設金鑰以外的金鑰加密物件,可以手動建立 CMEK,並在建立物件時使用該金鑰。

如要瞭解如何使用 Cloud KMS Autokey 建立的 CMEK 保護 Cloud Storage bucket 和其中的物件,請參閱「搭配使用 Autokey 和 Cloud Storage 資源」。

什麼時候會使用金鑰?

將 CMEK 套用至物件時,Cloud Storage 會在加密下列項目時使用該金鑰:

  • 物件資料。
  • 物件的 CRC32C 總和檢查碼。
  • 物件的 MD5 雜湊。

Cloud Storage 會使用標準伺服器端金鑰來加密物件的剩餘中繼資料,包括物件的名稱。因此,只要您有足夠的權限,即使停用或銷毀相關聯的 CMEK,您仍可執行讀取大部分中繼資料、列出物件及刪除物件等動作。

服務代理

每項專案都有一個特殊的 Cloud Storage 服務帳戶,稱為服務代理,可使用 CMEK 執行加密和解密作業。授予服務代理加密金鑰存取權後,該服務代理會加密:

在 Cloud Storage 中加入或重寫物件時,如果您同時具有值區的預設金鑰和要求包含的特定金鑰,則 Cloud Storage 會使用特定金鑰來加密物件。

如果要求者想讀取以 CMEK 加密的物件,只要照常存取物件即可。在這類要求期間,只要符合下列條件,服務代理就會自動解密要求的物件:

  • 服務代理仍有權使用金鑰解密。
  • 您尚未停用或刪除該金鑰。

如未滿足其中一項條件,服務專員就不會解密資料,要求也會失敗。

限制

使用 CMEK 時,須遵守下列限制:

  • 您無法透過更新物件的中繼資料,使用 CMEK 加密物件。請改為在重寫物件時加入金鑰。

    • gcloud storage 會使用 objects update 指令在物件上設定加密金鑰,但該指令會在要求中重新編寫物件。
  • 您必須在要加密的資料所在位置建立 Cloud KMS 金鑰環。舉例來說,如果 bucket 位於 US-EAST1,則用於加密該 bucket 中物件的所有金鑰環也必須在 US-EAST1 中建立。

    • 如果是雙重區域,Cloud KMS 金鑰環位置必須與雙重區域的位置代碼相符。舉例來說,如果 bucket 位於可設定的雙區域組合 US-EAST1、US-WEST1,則用於加密該 bucket 中物件的所有金鑰環,都必須在 US 多區域中建立,這與這個 bucket 的位置代碼相符。如果值區位於預先定義的雙區域 NAM4,則必須在相同的預先定義雙區域 NAM4 建立金鑰環。

      如需可用的 Cloud KMS 位置,請參閱 Cloud KMS 位置。

  • 使用 JSON API 列出物件時,系統不會傳回以 CMEK 加密的物件 CRC32C 核對和與 MD5 雜湊。

    • 在適當情況下,部分工具 (例如 gcloud storage) 會對每個以 CMEK 加密的物件執行額外的中繼資料 GET 要求,以便擷取 CRC32C 和 MD5 資訊。這些額外要求可能會大幅減緩列出作業,比列出以標準 Cloud Storage 加密方式加密的物件慢得多。
  • 只有對稱式加密金鑰可做為 CMEK。

Cloud KMS 配額和 Cloud Storage

在 Cloud Storage 中使用 CMEK 時,專案可能會耗用 Cloud KMS 加密要求配額。

使用 CMEK 金鑰進行加密和解密作業,會以下列方式影響 Cloud KMS 配額:

  • 如果是透過 Cloud KMS 產生的軟體 CMEK 金鑰,則不會消耗任何 Cloud KMS 配額。
  • 如果是硬體 CMEK 金鑰 (有時稱為 Cloud HSM 金鑰),加密和解密作業會計入含有金鑰的專案中 Cloud HSM 配額。
  • 如果是外部 CMEK 金鑰 (有時稱為 Cloud EKM 金鑰),加密和解密作業會計入金鑰所在專案的 Cloud EKM 配額。

詳情請參閱「Cloud KMS 配額」。

與客戶提供的加密金鑰之間的關係

除了客戶代管的加密金鑰,Cloud Storage 也提供由客戶提供的加密金鑰,做為控管資料加密的方式之一。您可使用不同的加密方法來加密單一值區中的不同物件,但請注意下列事項:

  • 一次只能用其中一種方法來加密單一物件。

  • 如果值區已設定預設 CMEK,且您在要求中指定客戶提供的金鑰,Cloud Storage 會使用客戶提供的金鑰加密物件。

金鑰管理

本節說明輪替金鑰、更換金鑰,以及停用或刪除金鑰版本時的注意事項。

金鑰輪替

Cloud KMS 支援自動和手動金鑰輪替至新的版本。輪替金鑰後,Cloud Storage 會使用新版本執行所有使用該金鑰加密的作業,例如:

  • 目的地 bucket 使用該金鑰做為預設加密金鑰時,上傳物件。

  • 物件上傳、複製和重寫作業,特別是使用作業中的金鑰。

系統不會停用或刪除先前的金鑰版本,因此 Cloud Storage 仍可解密先前使用這些版本加密的現有物件。

更換鑰匙

如要使用新金鑰取代用於加密 Cloud Storage 物件的金鑰,請遵守下列規定:

  1. 檢查 bucket,看看哪些 bucket 使用該金鑰做為預設加密金鑰。請為這些值區將舊金鑰換成新金鑰。

    這可確保日後寫入 bucket 的所有物件都使用新金鑰。

  2. 檢查原始碼,瞭解哪些要求在進行中的作業使用金鑰,例如設定 bucket 設定,以及上傳、複製或重寫物件。請更新這些執行個體,改用新金鑰。

  3. 檢查所有值區中是否含有以舊金鑰加密的物件。 使用重新寫入物件方法,以新金鑰重新加密每個物件。如要透過單一工作大量重新加密數百萬或數十億個物件,請使用儲存空間批次作業。

  4. 停用舊金鑰的所有版本。停用舊金鑰版本後,請監控用戶端和服務記錄,查看是否有作業因版本無法使用而失敗。

停用或刪除金鑰版本

  • 停用或刪除特定金鑰版本後,您就無法解密目前以該金鑰版本加密的任何物件。

    舉例來說,您無法下載、複製或重寫物件,嘗試這麼做會導致錯誤。

    • 停用金鑰版本後,可以重新啟用。重新啟用後,您就能存取以該金鑰版本加密的物件。

    • 如果銷毀金鑰版本,就無法再下載以該版本加密的物件。

    停用或刪除金鑰版本前,請先找出所有儲存空間中,使用該金鑰版本加密的所有物件。找出物件後,請使用重寫物件方法,以新的金鑰版本、全新金鑰或伺服器端金鑰重新加密每個物件。

  • 如果停用或刪除金鑰的主要版本,則必須先設定新的主要版本,才能使用該金鑰進行加密。舉例來說,如果沒有主要版本:

    • 上傳、複製或重寫物件時,無法指定金鑰。

    • 如果 bucket 的預設加密金鑰設為該金鑰,您就無法將物件上傳、複製或重寫至該 bucket,除非您在作業中指定其他有效的金鑰。

    金鑰有主要版本後,使用金鑰加密物件的作業就會成功。

    停用或刪除金鑰的主要版本之前,請先停止將該版本做為主要版本使用。您可以採取下列任一做法:

重要版本和鎖定的物件

如果金鑰版本加密的物件已鎖定 (因為物件儲存在鎖定的保留政策值區中,或物件本身有鎖定的保留設定),只有在符合下列條件時,才能銷毀金鑰版本:

  • 加密物件的保留期限必須已過。
  • 加密物件不得有任何物件保留。

所有相關物件都符合這些條件後,即使不刪除物件,也可以刪除金鑰版本。這麼做的話,受影響的物件資料就會永久無法存取。

後續步驟