關於客戶自行管理的加密金鑰 (CMEK)

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

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

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

使用 Cloud KMS Autokey 的 CMEK

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

Autokey 不會為 MySQL 適用的 Cloud SQL BackupRun 資源建立金鑰。建立 MySQL 適用的 Cloud SQL 執行個體備份時,系統會使用主要執行個體的客戶自行管理金鑰加密備份。

使用 Terraform 或 REST API 建立資源時,MySQL 適用的 Cloud SQL 僅與 Cloud KMS Autokey 相容。

如要瞭解如何使用手動建立的 CMEK 保護 MySQL 適用的 Cloud SQL 資源,請參閱「使用客戶自行管理的加密金鑰 (CMEK)」。

如要使用 Cloud KMS Autokey 建立的 CMEK 保護 MySQL 適用的 Cloud SQL 資源,請按照「搭配使用 Autokey 與 Secret Manager 資源」一文中的 Secret Manager 步驟操作。

Google 代管的加密金鑰與客戶自行管理的加密金鑰

下圖顯示使用預設 Google 加密機制和客戶自行管理的加密金鑰時,靜態資料加密在 Cloud SQL 執行個體中的運作方式。

不使用 CMEK

資料上傳到 Google 後會分割成多個區塊,每個區塊都會使用專屬的資料加密金鑰加密。資料加密金鑰會使用金鑰加密金鑰包裝。使用預設的 Google 加密機制時,系統會從 Google 內部金鑰庫擷取金鑰加密金鑰。加密區塊和經過包裝的加密金鑰會分散在 Google 的儲存基礎架構中。

使用 CMEK

資料上傳到 Google 後會分割成多個區塊,每個區塊都會使用專屬的資料加密金鑰加密。資料加密金鑰會使用金鑰加密金鑰包裝。使用 Cloud KMS 的 CMEK 時,系統會從 Cloud KMS 擷取金鑰加密金鑰。加密區塊和經過包裝的加密金鑰會分散在 Google 的儲存基礎架構中。

解密以 CMEK 包裝的資料時,Cloud SQL 會使用 KEK 解密 DEK,並使用未加密的 DEK 解密靜態資料。

資料區塊會以 DEK 加密,並與包裝後的 DEK 一起儲存。系統會將解開 DEK 的要求傳送至 KMS 儲存空間,其中儲存了無法匯出的 KEK。KMS 儲存空間傳回解開的 DEK。

如果您在啟用 CMEK 的 Cloud SQL Enterprise Plus 版本執行個體上啟用資料快取,Cloud SQL 也會加密用於資料快取的本機 SSD。

Cloud SQL 何時會與 CMEK 金鑰互動?

作業 附註
建立執行個體 建立執行個體時,請將執行個體設為使用客戶自行管理的加密金鑰。
建立備份 備份已啟用 CMEK 的執行個體時,客戶自行管理的加密金鑰會加密使用者資料,例如使用者查詢和回覆。啟用 CMEK 的執行個體備份會沿用其加密設定,並使用與來源執行個體相同的 Cloud KMS 金鑰。如果是進階備份,備份和災難復原服務會使用從執行個體繼承的 CMEK,而非在 backup vault 設定的 CMEK。
還原執行個體 還原已啟用 CMEK 的執行個體時,Cloud SQL 會使用金鑰存取要還原的備份執行個體資料。還原至其他執行個體時,目標執行個體可以使用不同的金鑰進行加密。
建立副本 在相同區域中建立 Cloud SQL 執行個體的唯讀或容錯移轉副本時,副本會沿用父項執行個體的 CMEK。如果您在其他區域建立讀取或容錯移轉副本,則必須從其他區域選取 CMEK。每個區域都使用一組專屬金鑰。
建立本機副本 從啟用 CMEK 的執行個體複製而來的項目,會沿用 CMEK 加密,並使用與來源執行個體相同的 Cloud KMS 金鑰。
執行個體更新 更新已啟用 CMEK 的執行個體時,Cloud SQL 會檢查 CMEK 金鑰。

哪些位置支援啟用 CMEK 的 Cloud SQL 執行個體?

所有 Cloud SQL 執行個體位置都支援 CMEK。

關於服務帳戶

如果 Cloud SQL 執行個體已啟用 CMEK,您必須使用服務帳戶向 Cloud KMS 要求金鑰存取權。

如要在專案中使用客戶自行管理的加密金鑰,您必須擁有服務帳戶,並授予服務帳戶存取客戶自行管理加密金鑰的權限。服務帳戶必須位於專案中。服務帳戶在所有區域都可見。

如果您使用控制台建立執行個體,Cloud SQL 會在您首次選擇「Customer-managed key」(客戶自行管理的金鑰) 選項時,自動建立服務帳戶 (如果服務帳戶尚不存在)。Cloud SQL 自動建立服務帳戶時,您的使用者帳戶不需要特殊權限。

關於金鑰

在 Cloud KMS 中,您需要建立金鑰環,其中包含加密編譯金鑰,並設定位置。建立新的 Cloud SQL 執行個體時,請選取這組金鑰來加密執行個體。

建立使用 CMEK 的新 Cloud SQL 執行個體時,您必須知道金鑰 ID 和金鑰區域。新的 Cloud SQL 執行個體必須與相關聯的 CMEK 位於相同區域。您可以為金鑰和 Cloud SQL 執行個體建立一個專案,也可以為兩者分別建立專案。

客戶自行管理的加密金鑰格式如下:

projects/[KMS_PROJECT_ID]/locations/[LOCATION]/keyRings/[KEY_RING]/cryptoKeys/[KEY_NAME]

如果 Cloud SQL 無法存取金鑰 (例如停用金鑰版本),Cloud SQL 會暫停執行個體。金鑰恢復可用狀態後,Cloud SQL 會自動繼續執行執行個體。不過,由於相關的內部驗證程序,這項作業最多可能需要 10 分鐘。

輪替金鑰時,以該金鑰加密的執行個體不會自動以新的主要金鑰版本重新加密。您可以使用新的主金鑰版本,重新加密任何現有的 CMEK 主要執行個體或副本。在大多數情況下,重新加密作業不會造成停機。如要進一步瞭解如何在金鑰輪替後重新加密 Cloud SQL 執行個體或副本,請參閱「重新加密已啟用 CMEK 的現有執行個體或副本」。

外部金鑰管理工具

您可以使用儲存在支援的外部金鑰管理工具中的金鑰,做為客戶自行管理的加密金鑰。如要瞭解如何搭配使用外部金鑰與 Cloud KMS,以及查看相容的 EKM 清單,請參閱「Cloud External Key Manager」。

金鑰存取依據

您可以將金鑰存取依據做為 Cloud EKM 的一部分。金鑰存取依據可讓您查看每項 Cloud EKM 要求的原因。此外,您也可以根據提供的理由,自動核准或拒絕要求。詳情請參閱「金鑰存取依據總覽」。

因此,金鑰存取依據會針對每次解密資料的嘗試提供依據,進一步控管資料。

如要進一步瞭解如何搭配使用金鑰與 Cloud SQL 執行個體,請參閱「使用 CMEK 建立 Cloud SQL 執行個體」。

如何讓 CMEK 加密資料永久無法存取?

在某些情況下,您可能需要永久刪除以 CMEK 加密的資料。為此,您需要刪除客戶自行管理的加密金鑰版本。您可以刪除個別金鑰版本,也可以刪除金鑰的所有版本。

撤銷以 CMEK 加密的進階備份金鑰存取權

如要備份及還原已啟用 CMEK 的進階級備份,您必須透過 Cloud SQL 服務代理和備份和災難復原服務服務代理,持續存取執行個體使用的 CMEK。本節說明撤銷金鑰存取權對備份和還原功能的影響。

  • 撤銷 Cloud SQL 服務代理的存取權:如果 Cloud SQL 服務代理失去 CMEK 存取權,執行個體就會遭到停權,且無法建立新的備份。不過,由於備份和災難復原服務代理有自己的 CMEK 存取權,因此現有的進階備份仍可還原。

  • 撤銷備份和災難復原服務代理的存取權:如果備份和災難復原服務代理失去 CMEK 存取權,執行個體仍可使用,但無法建立新的進階級備份,也無法還原現有的進階級備份,直到備份和災難復原服務帳戶重新取得金鑰存取權為止。

  • 停用金鑰版本:如果用於加密強化備份的金鑰版本遭到停用,則必須重新啟用金鑰,才能還原該備份。如果用於加密進階備份的金鑰版本已刪除,備份將永久無法還原。不過,只要金鑰包含有效的主鍵版本,執行個體就能繼續建立新的備份。

如何從啟用 CMEK 的執行個體匯出資料,以及將資料匯入這類執行個體?

如要讓資料在匯出或匯入期間,維持以客戶自行管理的金鑰加密的狀態,請先在 Cloud Storage bucket 設定客戶自行管理的加密金鑰,再將資料匯出至該 bucket。如果資料先前儲存在已啟用 CMEK 的執行個體,將資料匯入新執行個體時,沒有特殊要求或限制。

限制

下列限制適用於客戶自行管理的加密金鑰:

  • 您無法在現有執行個體上啟用客戶自行管理的加密金鑰。
  • 您無法將不同的金鑰指派給與主要執行個體位於相同區域的副本。如果是跨區域副本,則須為副本區域建立新金鑰。
  • 您無法為複製項目指派其他金鑰。
  • 您無法使用客戶自行管理的加密金鑰加密下列項目:
    • 外部伺服器 (外部主要執行個體和外部副本)
    • 執行個體中繼資料,例如執行個體 ID、資料庫版本、機器類型、旗標、備份排程等。
  • 您無法使用客戶自行管理的加密金鑰,加密傳輸中的使用者資料,例如使用者查詢和回覆。
  • 建立 Cloud SQL 執行個體後,就無法變更加密金鑰類型。您無法從Google-owned and Google-managed encryption key 切換至 Cloud Key Management Service (Cloud KMS) 金鑰,反之亦然。

後續步驟