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

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

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

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

使用 Cloud KMS Autokey 的 CMEK

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

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

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

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

如要使用 Cloud KMS Autokey 建立的 CMEK 來保護 Cloud SQL for SQL Server 資源,請參考「在 Secret Manager 資源中使用 Autokey」一文中提供的 Secret Manager 步驟做法。

Google 管理的加密技術與客戶管理的加密技術

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

不使用 CMEK

資料會上傳至 Google,然後分割為多個區塊,每個區塊都會以專屬的資料加密金鑰進行加密。資料加密金鑰會使用金鑰加密金鑰進行包裝。在預設的 Google 加密功能中,系統會從 Google 內部金鑰庫擷取金鑰加密金鑰。加密區塊和經過包裝的加密金鑰會分散儲存在 Google 的儲存基礎架構中。

使用 CMEK

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

解密使用客戶管理的加密金鑰封裝的資料時,Cloud SQL 會使用 KEK 解密 DEK,並使用未加密的 DEK 解密靜態資料。

以 DEK 加密的資料區塊,並以經過包裝的 DEK 儲存。系統會將解開 DEK 的要求傳送至 KMS 儲存空間,該儲存空間會儲存無法匯出的 KEK。KMS 儲存空間會傳回已解開包裝的 DEK。

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

作業 附註
建立執行個體 在建立執行個體時,您可以將執行個體設為使用客戶自行管理的加密金鑰。
備份建立 在啟用 CMEK 的執行個體備份期間,客戶管理的加密金鑰會加密使用者資料,例如使用者查詢和回應。啟用 CMK 的執行個體備份會繼承來源執行個體的加密機制,使用相同的 Cloud KMS 金鑰。
還原執行個體 在啟用 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 執行個體時,您可以選取這個金鑰來加密執行個體。

建立使用客戶代管加密金鑰的全新 Cloud SQL 執行個體時,您必須知道金鑰 ID 和金鑰區域。您必須將新的 Cloud SQL 執行個體放在與該執行個體相關聯的客戶管理加密金鑰所在的相同地區。您可以為金鑰和 Cloud SQL 執行個體建立一個專案,也可以為每個項目建立不同的專案。

客戶自行管理的加密金鑰使用以下格式:

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

如果 Cloud SQL 無法存取金鑰 (例如您停用金鑰版本),Cloud SQL 會暫停執行個體。一旦可再次存取金鑰,Cloud SQL 就會自動恢復執行個體。

輪替金鑰時,系統不會自動使用新的主要金鑰版本重新加密以該金鑰加密的執行個體。您可以使用新的主要金鑰版本,重新加密任何現有的 CMEK 主要執行個體或備援執行個體。如要進一步瞭解如何在輪替金鑰後重新加密 Cloud SQL 執行個體或備援,請參閱「重新加密現有的啟用 CMEK 的執行個體或備援」。

外部金鑰管理員

您可以使用儲存在外部金鑰管理工具 (例如 Fortanix、Futurex 或 Thales) 中的金鑰,做為客戶自行管理的加密金鑰。如要瞭解如何在 Cloud KMS 中使用外部金鑰,請參閱「Cloud External Key Manager (Cloud EKM)」。

金鑰存取依據

您可以使用 Cloud EKM 的金鑰存取理由功能。您可以使用 Key Access Justifications 查看每項 Cloud EKM 要求的原因。此外,您還可以根據提供的理由,自動核准或拒絕要求。詳情請參閱「金鑰存取依據總覽」。

因此,每次嘗試解密資料時,「金鑰存取依據」都會提供原因說明,讓您進一步控管資料。

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

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

在某些情況下,您可能會想要永久銷毀使用 CMEK 加密的資料。如要執行這項操作,您必須銷毀客戶管理的加密金鑰版本。您無法銷毀金鑰環或金鑰,但可以銷毀金鑰的金鑰版本。

如何在啟用 CMEK 的執行個體中匯出及匯入資料?

如果您希望在匯出或匯入期間,資料仍能透過客戶管理的金鑰加密,請務必先在 Cloud Storage 值區設定客戶管理的加密金鑰,再將資料匯出至該值區。如果資料先前儲存在啟用客戶管理加密金鑰的執行個體中,則匯入資料至新執行個體時,系統不會有任何特殊要求或限制。

限制

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

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

後續步驟