由客戶管理的加密金鑰 (CMEK)

根據預設,Cloud Firestore 中的所有靜態資料都會使用 Google 的預設加密功能進行加密。Cloud Firestore 會處理及管理這類加密作業,您不必採取其他動作。

如果您對保護資料的金鑰有特定法規遵循或法規要求,可以為 Cloud Firestore 使用客戶自行管理的加密金鑰 (CMEK)。您可以在 Cloud Key Management Service (Cloud KMS) 中控制及管理用來保護資料的加密金鑰,而不是由 Google 管理。Cloud Firestore 資料庫會使用您在 Cloud Key Management Service (Cloud KMS) 中控制及管理的金鑰進行保護。

本頁說明 Cloud Firestore 的 CMEK。如要進一步瞭解一般 CMEK 的相關資訊,包括何時啟用 CMEK 以及原因,請參閱下列 Cloud KMS 說明文件:

如要瞭解如何使用 Cloud Firestore 執行 CMEK 相關工作,請參閱「使用 CMEK」。

功能

  • 資料控管:CMEK 可讓您管理 KMS 金鑰。您可以輪替、停用及刪除用於加密 Cloud Firestore 資料庫中靜態資料的金鑰。
  • 效能:CMEK 不會影響 Cloud Firestore SLA
  • 可稽核性:如果您啟用 Cloud KMS 稽核記錄,系統會記錄金鑰的所有作業,並在 Cloud Logging 中顯示。
  • 機構政策限制:您可以使用 CMEK 機構政策限制,為機構中的 Cloud Firestore 資料庫指定加密法規遵循規定。

定價

Cloud KMS 會針對金鑰和使用該金鑰執行的任何加密編譯作業收費。詳情請參閱 Cloud KMS 定價

Cloud Firestore 要求 Cloud KMS 金鑰執行加密或解密作業時,系統會向您收取作業費用。客戶自行管理的金鑰會每隔 5 分鐘執行一次加密/解密作業,且不會與資料庫要求同步處理。考量 Cloud Firestore 產生的加密編譯作業預期數量,成本通常偏低。Cloud 稽核記錄的費用是額外支出,但考量到預期的加密運算次數,這項費用通常應會偏低。

使用 CMEK 保護的資料庫不會產生額外的 Cloud Firestore 費用,且 Cloud Firestore 定價仍會繼續適用。

如果您撤銷資料庫的金鑰,系統會根據金鑰可用的最後一天的大小,收取儲存空間費用。您將繼續產生該資料庫大小的儲存空間費用,直到資料庫遭到刪除或金鑰再次可用為止。

受 CMEK 保護的內容

建立 Cloud Firestore CMEK 保護的資料庫時,系統會使用 Cloud KMS 金鑰保護靜態資料。這包括儲存在磁碟或隨身碟上的資料,包括索引和備份。但有些例外狀況不適用。下列資料類型會使用 Google 預設加密方式加密,而非使用 CMEK 金鑰:

  • 傳輸中或記憶體中的資料
  • 資料庫中繼資料

如何處理無法使用的金鑰狀態

系統不會針對每項資料要求發出加密與解密作業。Cloud Firestore 系統會每 5 分鐘輪詢 Cloud KMS,檢查金鑰是否仍可用,如果可用,就執行加密和解密作業。

如果系統偵測到金鑰無法使用,在 10 分鐘內,任何後續對 Cloud Firestore 資料庫的呼叫 (包括讀取、寫入和查詢) 都會傳回 FAILED_PRECONDITION 錯誤,並附上 The customer-managed encryption key required by the requested resource is not accessible 訊息。

如果資料庫有存留時間 (TTL) 政策,且在金鑰無法使用時超過任何到期時間,則依 TTL 刪除資料的作業會延遲,直到金鑰恢復為止。如果資料庫有長時間執行的作業正在進行,這些作業會受到以下影響:

  • 資料匯入匯出作業會停止進行,並標示為 Failed。如果鍵已恢復,則不會重試失敗的作業。
  • 索引建構作業和啟用新 TTL 政策的作業會停止進行。如果金鑰恢復,系統會重新嘗試已停止的作業。

在任何刻意禁止 Cloud Firestore 存取金鑰的情況下,系統都會將金鑰視為無法使用。包括:

如果金鑰已恢復,輪詢作業會偵測到金鑰再次可用。存取權通常會在幾分鐘內重新啟用,但在少數情況下,可能需要最多幾小時。請注意,Cloud KMS 金鑰的某些作業 (例如停用或銷毀金鑰) 可能需要最多 3 小時才能生效。Cloud Firestore 會在變更生效後才偵測到變更。

視情況而定,恢復金鑰的程序如下:

  • 重新啟用已停用的金鑰版本。
  • 還原已刪除的金鑰版本。在金鑰版本永久刪除之前,系統會安排刪除作業。您只能在金鑰版本的刪除時間表期間還原金鑰。您無法還原已永久刪除的金鑰。
  • 重新授予 Cloud Firestore 服務代理存取金鑰的權限。

金鑰輪替考量事項

輪替 CMEK 金鑰時,Cloud Firestore 會使用 CMEK 金鑰的最新主要版本重新加密資料庫。在重新加密期間,請同時保留舊金鑰和新金鑰版本。重新加密完成後,停用或刪除舊版 CMEK 金鑰不會導致資料庫存取權遭停用,因為資料庫已使用新的主要金鑰版本加密。

您也可以查看用於保護資料庫的金鑰版本。詳情請參閱「查看目前使用的金鑰」。

外部金鑰注意事項

使用 Cloud EKM 金鑰時,Google 無法控管外部金鑰管理合作夥伴系統中外部管理金鑰的供應情形。

如果外部管理的金鑰無法使用,Cloud Firestore 會盡力支援完整的資料庫作業,最多一小時。

一小時後,如果 Cloud Firestore 仍無法連線至 Cloud KMS,Cloud Firestore 會開始將資料庫離線,做為保護措施。資料庫呼叫會失敗,並顯示包含其他詳細資料的 FAILED_PRECONDITION 錯誤。

如要進一步瞭解如何使用外部金鑰,請參閱 Cloud External Key Manager 說明文件

備份與還原

備份會使用與建立備份的資料庫相同的加密機制。當受 CMEK 保護的 Cloud Firestore 資料庫建立備份時,會使用備份建立時使用的主鍵版本加密備份。

Cloud Firestore 會在啟用備份排程後的 24 小時後,為 CMEK 資料庫建立第一個備份。

如要進一步瞭解 Cloud Firestore 備份,請參閱「備份及還原資料」。

從備份還原的資料庫,預設會使用與備份相同的加密機制。還原資料庫時,您可以使用下列任一方式指定不同的加密類型:

  • 使用新指定的金鑰,將資料還原至 CMEK 資料庫。
  • 還原至使用 Google 預設加密機制的非 CMEK 資料庫。
  • 還原至使用與備份相同加密方式的資料庫。

如要進一步瞭解如何從備份還原 Cloud Firestore 資料庫,請參閱「從資料庫備份還原資料」。如要進一步瞭解如何從備份還原受 CMEK 保護的 Cloud Firestore 資料庫,請參閱「還原受 CMEK 保護的資料庫」。

按鍵追蹤

您可以使用金鑰追蹤功能查看金鑰所保護的資源,例如 Cloud Firestore 資料庫。如要進一步瞭解按鍵追蹤功能,請參閱「查看按鍵使用情形」。

CMEK 和金鑰可用性

當金鑰無法使用或已停用時,請注意在啟用 CMEK 的資料庫中可能發生下列行為:

  • 您可以變更 Cloud Firestore 在啟用 CMEK 的資料庫上進行的時間點復原 (PITR) 設定,即使無法使用金鑰也沒關係,因為 PITR 設定是資料庫中繼資料,不會由 CMEK 加密。
  • 您可以刪除含有無法使用的金鑰的 CMEK 資料庫。
  • 建立支援 CMEK 的資料庫時,Google Cloud 控制台中的可用金鑰清單中不會顯示已停用的金鑰。如果您手動輸入已停用的鍵,資料庫建立程序將會失敗,並顯示 FAILED_PRECONDITION 錯誤 400。

限制

  • 您無法變更受 CMEK 保護的資料庫金鑰。您可以旋轉、啟用及停用按鍵。
  • 由 CMEK 保護的資料庫僅支援實體和文件資料的 Key Visualizer,不支援索引資料。
  • 您無法在現有資料庫上啟用 CMEK。您只能在新的資料庫中啟用 CMEK,而且必須在建立資料庫時啟用。如要將現有非 CMEK 資料庫中的資料遷移至受 CMEK 保護的資料庫,請先匯出資料,然後將資料匯入新的受 CMEK 保護的資料庫。您也可以將資料從非 CMEK 資料庫還原至 CMEK 資料庫。
  • Cloud Firestore 支援的 CMEK 保護資料庫數量有限。
  • 我們不支援將 CMEK 保護與 Cloud Functions (第 1 代) 整合。如要使用 CMEK 保護功能,請使用 Cloud Run 函式 Firestore 觸發條件 (第 2 代)

後續步驟