客戶自行管理的加密金鑰

設定方式

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

如要控管加密金鑰,您可以在 Cloud KMS 中使用客戶自行管理的加密金鑰 (CMEK),搭配 Cloud Storage 等整合 CMEK 的服務。使用 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 值區和其中的物件,也可以使用 Cloud KMS Autokey。使用 Autokey 時,系統會在 Cloud Storage 中建立或更新資源時,視需要產生金鑰環和金鑰。如果服務代理尚未建立,系統會建立服務代理,並授予必要的 Identity and Access Management (IAM) 角色,供服務代理使用金鑰進行加密和解密作業。詳情請參閱「Autokey 總覽」。

Autokey 不會為物件建立金鑰。根據預設,值區中的物件會使用值區預設金鑰。 如要使用非 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 時,請注意下列限制:

  • 您無法透過更新物件的中繼資料,使用客戶管理的加密金鑰將物件加密。請改將金鑰加入物件重寫的一部分。

    • gcloud storage 會使用 objects update 指令在物件上設定加密金鑰,但該指令會在要求中重寫物件。
  • 您建立 Cloud KMS 金鑰環的位置必須與待加密資料的位置相同。舉例來說,如果您的值區位於 US-EAST1,那麼您也必須在 US-EAST1 中建立這個值區中的所有金鑰環加密物件。

    • 如果是雙重區域,Cloud KMS 金鑰環位置必須與雙重區域的位置代碼相符。舉例來說,如果您的 bucket 位於可設定的雙區域配對 US-EAST1US-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 會使用新版本執行所有透過該金鑰加密的作業,例如:

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

  • 明確使用作業中的鍵值進行物件上傳、複製和重寫作業。

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

更換鑰匙

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

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

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

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

  3. 檢查所有值區中是否含有以舊金鑰加密的物件。使用重寫物件方法,以新金鑰重新加密每個物件。

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

停用或刪除金鑰版本

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

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

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

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

    停用或銷毀金鑰版本之前,請先找出所有值區中,使用特定金鑰版本加密的所有物件。找出物件後,請使用重寫物件方法,以新金鑰版本、全新金鑰或伺服器端金鑰重新加密每個物件。

  • 停用或刪除金鑰的主要版本後,您必須建立新的主要版本,才能使用該金鑰加密資料。舉例來說,如果沒有主要版本:

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

    • 如果值區的金鑰已設為預設加密金鑰,您必須在作業中指定其他有效金鑰,才能上傳、複製或重寫物件。

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

    停用或刪除金鑰的主要版本之前,請先停止使用該版本做為主要版本。方法有二:

金鑰版本和鎖定的物件

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

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

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

後續步驟