根據預設,Datastore 模式的 Firestore 會使用 Google 的預設加密方式,加密所有靜態資料。Datastore 模式會為您處理及管理這項加密作業,您不必採取任何其他動作。
如果您在保護資料的金鑰方面有特定的法規遵循或監管要求,可以為 Datastore 模式使用客戶管理的加密金鑰 (CMEK)。您可以在 Cloud Key Management Service (Cloud KMS) 中控制及管理用來保護資料的加密金鑰,而不是由 Google 管理。
本頁說明 Datastore 模式的 CMEK。如要進一步瞭解 CMEK 一般資訊,包括啟用時機和原因,請參閱下列 Cloud KMS 說明文件:
如要瞭解如何使用 Datastore 模式執行 CMEK 相關工作,請參閱「使用 CMEK」。
功能
- 資料控管:您可以使用 CMEK 管理 KMS 金鑰。您可以輪替、停用及銷毀用於加密 Datastore 模式資料庫中靜態資料的金鑰。
- 效能:CMEK 不會影響 Firestore 服務水準協議。
- 稽核能力:如果您為 Cloud KMS 啟用稽核記錄,系統會記錄金鑰的所有作業,並在 Cloud Logging 中顯示。
- 機構政策限制:您可以透過CMEK 機構政策限制,為機構中的 Datastore 模式資料庫指定加密法規遵循規定。
定價
Cloud KMS 會針對金鑰的費用,以及使用該金鑰執行的任何加密編譯作業收費。詳情請參閱 Cloud KMS 定價。
當 Datastore 模式要求 Cloud KMS 金鑰執行加密或解密作業時,您需要支付作業費用。系統每 5 分鐘會透過客戶自行管理的金鑰執行一次加密/解密作業,且不會與資料庫要求同步處理。由於 Datastore 模式產生的加密編譯作業數量預計不多,因此費用通常不高。Cloud 稽核記錄會產生額外費用,但考量到預期的加密作業次數,這筆費用通常不高。
使用受 CMEK 保護的資料庫時,不會產生額外的 Datastore 模式費用,Datastore 模式定價仍適用。
如果撤銷資料庫的金鑰,系統會根據金鑰可用的最後一天,按大小收取儲存空間費用。在刪除資料庫或金鑰恢復可用之前,您仍須支付該資料庫大小的儲存空間費用。
受 CMEK 保護的項目
建立受 Datastore 模式 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 金鑰時,Datastore 模式會使用最新主要版本的 CMEK 金鑰重新加密資料庫。在重新加密的過程中,請同時保留舊版和新版金鑰。重新加密完成後,停用或刪除舊版 CMEK 金鑰不會停用資料庫存取權,因為資料庫已使用新的主要金鑰版本加密。
您也可以查看用於保護資料庫的金鑰版本。詳情請參閱「查看使用的金鑰」。
外部金鑰注意事項
使用 Cloud EKM 金鑰時,Google 無法控管外部金鑰管理合作夥伴系統中,外部管理金鑰的供應情形。
如果外部管理的金鑰無法使用,Datastore 模式會盡量支援完整資料庫作業,最長可達一小時。
如果 Datastore 模式在一小時後仍無法連線至 Cloud KMS,Datastore 模式就會開始將資料庫離線,以做為保護措施。對資料庫的呼叫會失敗,並顯示包含其他詳細資料的 FAILED_PRECONDITION
錯誤。
如要進一步瞭解如何使用外部金鑰,請參閱 Cloud External Key Manager 說明文件。
備份與還原
備份使用的加密機制與您建立備份的資料庫相同。受 CMEK 保護的 Datastore 模式資料庫建立備份時,會使用建立備份時的主要金鑰版本加密備份。
啟用備份排程後,Datastore 模式會在 24 小時內建立 CMEK 資料庫的第一個備份。
如要進一步瞭解 Datastore 模式備份,請參閱「備份及還原資料」。
從備份還原的資料庫預設會使用與備份相同的加密機制。還原資料庫時,您可以透過下列任一方式指定其他加密類型:
- 使用新指定的金鑰還原至 CMEK 資料庫。
- 還原至使用 Google 預設加密機制的非 CMEK 資料庫。
- 還原至與備份使用相同加密方式的資料庫。
如要進一步瞭解如何從備份還原 Datastore 模式資料庫,請參閱「從資料庫備份還原資料」。如要進一步瞭解如何從備份還原受 CMEK 保護的 Datastore 模式資料庫,請參閱「還原受 CMEK 保護的資料庫」。
複製
根據預設,從其他資料庫複製的資料庫會使用與來源資料庫相同的加密機制。複製資料庫時,您可以透過下列任一方式指定不同的加密類型:
- 使用新指定的金鑰,複製到 CMEK 資料庫。
- 複製到使用 Google 預設加密機制的非 CMEK 資料庫。
- (預設) 複製到與來源資料庫使用相同加密方式的資料庫。
如要進一步瞭解如何複製 Datastore 模式資料庫,請參閱複製資料庫。如要進一步瞭解如何複製受 CMEK 保護的 Datastore 模式資料庫,請參閱複製受 CMEK 保護的資料庫。
金鑰追蹤
您可以使用金鑰追蹤功能,查看金鑰保護的資源,例如 Datastore 模式資料庫。如要進一步瞭解金鑰追蹤功能,請參閱「查看金鑰使用情形」。
CMEK 和金鑰可用性
如果金鑰無法使用或已停用,請注意,已啟用 CMEK 的資料庫可能會發生下列情況:
- 即使金鑰無法使用,您還是可以變更啟用 CMEK 的資料庫的 Datastore 模式時間點還原 (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 代)。
資料如何離開受 CMEK 保護的資料庫
應用程式複製的資料可由使用者以任意方式儲存。任何存取 Firestore 資料的應用程式都必須具備適當的安全控管機制,確保只有獲得適當授權的使用者可以存取資料。 詳情請參閱 IAM。
如要將受 CMEK 保護的資料庫資料移至非 CMEK 資料庫,可以使用「備份與還原」、「複製」,或「匯入」和「匯出」功能。請使用適當的 IAM 控制項,只授權給有權執行這些動作的使用者。此外,您也可以使用 CMEK 組織政策限制,要求透過還原或複製作業建立的任何資料庫,以及用於匯入作業的任何 Cloud Storage 值區,都必須受到 CMEK 保護。