由客戶管理的加密金鑰 (CMEK)
根據預設,Firestore 中的所有靜態資料都會使用 Google 的預設加密方式加密。Firestore 會為您處理及管理這項加密作業,您不必採取其他動作。
如果您在保護資料的金鑰方面有特定的法規遵循或監管要求,可以為 Firestore 使用客戶自行管理的加密金鑰 (CMEK)。您可以在 Cloud Key Management Service (Cloud KMS) 中控制及管理用來保護資料的加密金鑰,而不是由 Google 管理。
本頁說明 Firestore 的 CMEK。如要進一步瞭解 CMEK 一般資訊,包括啟用時機和原因,請參閱下列 Cloud KMS 說明文件:
如要瞭解如何使用 Firestore 執行 CMEK 相關工作,請參閱「使用 CMEK」。
功能
- 資料控管:您可以使用 CMEK 管理 KMS 金鑰。您可以輪替、停用及刪除用於加密 Firestore 資料庫中靜態資料的金鑰。
- 效能:CMEK 不會影響 Firestore 服務水準協議。
- 稽核能力:如果您為 Cloud KMS 啟用稽核記錄,系統會記錄金鑰的所有作業,並在 Cloud Logging 中顯示。
- 機構政策限制:您可以透過 CMEK 機構政策限制,為機構中的 Firestore 資料庫指定加密法規遵循規定。
定價
Cloud KMS 會針對金鑰的費用,以及使用該金鑰執行的任何加密編譯作業收費。詳情請參閱 Cloud KMS 定價。
當 Firestore 要求 Cloud KMS 金鑰執行加密或解密作業時,您需要支付作業費用。系統每 5 分鐘會透過客戶自行管理的金鑰執行一次加密/解密作業,且不會與資料庫要求同步處理。由於 Firestore 產生的預期加密作業數量,因此費用通常很低。Cloud 稽核記錄會產生額外費用,但考量到預期的加密作業次數,這筆費用通常不高。
使用受 CMEK 保護的資料庫不會產生額外的 Firestore 費用,Firestore 定價仍適用。
如果撤銷資料庫的金鑰,系統會根據金鑰可用的最後一天,按大小收取儲存空間費用。在刪除資料庫或金鑰恢復可用之前,您仍須支付該資料庫大小的儲存空間費用。
受 CMEK 保護的項目
建立受 Firestore CMEK 保護的資料庫時,系統會使用 Cloud KMS 金鑰保護靜態資料。這包括您儲存在磁碟或隨身碟上的資料,包括索引和備份。部分例外狀況不適用,下列資料類型會以 Google 預設加密方式加密,而非 CMEK 金鑰:
- 傳輸中或記憶體中的資料
- 資料庫中繼資料
如何處理無法使用的金鑰狀態
系統不會在每次資料要求時發布加密和解密作業。Firestore 系統不會這麼做,而是每 5 分鐘輪詢 Cloud KMS,檢查金鑰是否仍可使用,如果金鑰可用,就會執行加密和解密作業。
如果系統偵測到金鑰無法使用,後續對 Firestore 資料庫的任何呼叫 (包括讀取、寫入和查詢),都會在 10 分鐘內傳回 FAILED_PRECONDITION
錯誤和 The customer-managed encryption key required by the requested
resource is not accessible
訊息。
如果資料庫有存留時間 (TTL) 政策,且金鑰無法使用時有任何到期時間超過期限,系統會延後透過 TTL 刪除資料,直到金鑰恢復為止。如果資料庫正在執行長時間作業,會受到下列影響:
- 資料匯入或匯出作業將停止進度,並標示為
Failed
。如果金鑰恢復,系統不會重試失敗的作業。 - 索引建構作業,以及啟用新 TTL 政策的作業將停止進度。如果金鑰恢復有效,系統會重試已停止的作業。
如果刻意禁止 Firestore 存取金鑰,系統就會將金鑰視為無法使用。包括:
- 停用或刪除正在使用的金鑰版本。請務必謹慎銷毀金鑰版本,因為這可能會導致資料無法復原。
- 從 Firestore 服務帳戶移除金鑰存取權。
如果金鑰恢復有效,輪詢作業會偵測到金鑰再次可用。存取權通常會在幾分鐘內重新啟用,但在少數情況下,最多可能需要數小時。請注意,Cloud KMS 金鑰的某些作業 (例如停用或銷毀金鑰) 最多可能需要 3 小時才能生效。Firestore 不會偵測到任何變更,直到變更在 Cloud KMS 生效為止。
視情況而定,金鑰復原作業可能包含下列步驟:
- 重新啟用已停用的金鑰版本。
- 還原已刪除的金鑰版本。 金鑰版本會先排定刪除作業,然後才會永久銷毀。只有在金鑰版本排定刪除的期間,您才能還原金鑰。金鑰永久刪除後即無法復原。
- 重新授予 Firestore 服務代理程式存取金鑰的權限。
金鑰輪替注意事項
輪替 CMEK 金鑰時,Firestore 會使用最新主要版本的 CMEK 金鑰重新加密資料庫。在重新加密的過程中,請同時保留舊版和新版金鑰。重新加密完成後,停用或刪除舊版 CMEK 金鑰不會停用資料庫存取權,因為資料庫已使用新的主要金鑰版本加密。
您也可以查看用於保護資料庫的金鑰版本。詳情請參閱「查看使用的金鑰」。
外部金鑰注意事項
使用 Cloud EKM 金鑰時,Google 無法控管外部金鑰管理合作夥伴系統中,外部管理金鑰的供應情形。
如果外部管理的金鑰無法使用,Firestore 最多會繼續支援完整資料庫作業一小時,但僅盡力而為。
如果 Firestore 在一小時後仍無法連線至 Cloud KMS,Firestore 會開始將資料庫離線,以採取保護措施。對資料庫的呼叫會失敗,並顯示包含其他詳細資料的 FAILED_PRECONDITION
錯誤。
如要進一步瞭解如何使用外部金鑰,請參閱 Cloud External Key Manager 說明文件。
備份與還原
備份使用的加密機制與您建立備份的資料庫相同。受 CMEK 保護的 Firestore 資料庫建立備份時,會使用建立備份時的主要金鑰版本加密備份。
啟用備份排程後,Firestore 會在 24 小時內建立 CMEK 資料庫的第一個備份。
如要進一步瞭解 Firestore 備份,請參閱備份及還原資料。
從備份還原的資料庫預設會使用與備份相同的加密機制。還原資料庫時,您可以透過下列任一方式指定其他加密類型:
- 使用新指定的金鑰還原至 CMEK 資料庫。
- 還原至使用 Google 預設加密機制的非 CMEK 資料庫。
- 還原至與備份使用相同加密方式的資料庫。
如要進一步瞭解如何從備份還原 Firestore 資料庫,請參閱「從資料庫備份還原資料」。如要進一步瞭解如何從備份還原受 CMEK 保護的 Firestore 資料庫,請參閱「還原受 CMEK 保護的資料庫」。
金鑰追蹤
您可以使用金鑰追蹤功能,查看金鑰保護的資源,例如 Firestore 資料庫。如要進一步瞭解金鑰追蹤功能,請參閱「查看金鑰使用情形」。
CMEK 和金鑰可用性
如果金鑰無法使用或已停用,請注意,已啟用 CMEK 的資料庫可能會發生下列情況:
- 即使金鑰無法使用,您仍可變更啟用 CMEK 的資料庫的 Firestore 時間點復原 (PITR) 設定,因為 PITR 設定是資料庫中繼資料,不會由 CMEK 加密。
- 您可以刪除金鑰無法使用的 CMEK 資料庫。
- 建立啟用 CMEK 的資料庫時,停用的金鑰不會顯示在 Google Cloud 控制台的可用金鑰清單中。如果手動輸入已停用的金鑰,資料庫建立程序會失敗,並顯示
FAILED_PRECONDITION
錯誤 400。
限制
- 您無法變更受 CMEK 保護的資料庫金鑰。您可以輪替、啟用及停用金鑰。
- 受 CMEK 保護的資料庫僅支援實體和文件資料的金鑰視覺化,不支援索引資料。
- 您無法為現有資料庫啟用 CMEK。您只能在新資料庫上啟用 CMEK,且必須在建立資料庫時啟用。如要將現有非 CMEK 資料庫中的資料遷移至受 CMEK 保護的資料庫,請匯出資料,然後匯入新的受 CMEK 保護資料庫。您也可以將非 CMEK 資料庫的資料還原至 CMEK 資料庫。
- Firestore 支援的 CMEK 保護資料庫數量有限。
- 我們不支援透過 Cloud Functions (第 1 代) 整合功能進行 CMEK 保護。 如要使用 CMEK 保護機制,請使用 Cloud Run functions Firestore 觸發條件 (第 2 代)。