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