由客戶管理的加密金鑰 (CMEK)
根據預設,Bigtable 會加密靜態客戶內容。Bigtable 會為您處理加密作業,您不必採取任何其他動作。這項做法稱為「Google 預設加密」。
如要控管加密金鑰,您可以在 Cloud KMS 中使用客戶自行管理的加密金鑰 (CMEK),並搭配 Bigtable 等整合 CMEK 的服務。使用 Cloud KMS 金鑰可控管保護等級、位置、輪換時間表、使用權限和存取權,以及加密範圍。 使用 Cloud KMS 還能追蹤金鑰用量、查看稽核記錄,以及控管金鑰生命週期。 您可以在 Cloud KMS 中控制及管理用來保護資料的對稱金鑰加密金鑰 (KEK),而不是由 Google 擁有及管理這些金鑰。
使用 CMEK 設定資源後,存取 Bigtable 資源的體驗與使用 Google 預設加密機制類似。如要進一步瞭解加密選項,請參閱客戶管理的加密金鑰 (CMEK)。
使用 Cloud KMS Autokey 的 CMEK
您可以手動建立 CMEK 來保護 Bigtable 叢集,也可以使用 Cloud KMS Autokey。使用 Autokey 時,系統會在 Bigtable 中建立資源時,視需要產生金鑰環和金鑰。如果服務代理尚未建立,系統會建立服務代理,並授予必要的 Identity and Access Management (IAM) 角色,供服務代理使用金鑰進行加密和解密作業。詳情請參閱「Autokey 總覽」。
建立 Bigtable 叢集時,Cloud KMS Autokey 會建立預設金鑰,除非叢集是在控制台中建立。Cloud KMS Autokey 不會為叢集以外的 Bigtable 資源建立金鑰。
如要手動設定 CMEK,請參閱「使用 CMEK」。
功能
安全性:CMEK 與 Google 預設加密提供相同等級的安全性,但可提供更多管理控制項。
資料存取權控管:管理員可以輪替、管理存取權,以及停用或刪除用於保護 Bigtable 中靜態資料的金鑰。
稽核能力:系統會記錄您對 CMEK 金鑰執行的所有動作,並在 Cloud Logging 中顯示。Cloud EKM 金鑰支援金鑰存取依據,可為所有金鑰要求新增依據欄位。與特定外部金鑰管理合作夥伴合作時,您可以根據理由自動核准或拒絕這些要求。
效能相近:Bigtable CMEK 保護的執行個體,效能與使用 Google 預設加密機制的 Bigtable 執行個體相近。
彈性:您可以根據業務需求,在多個專案、執行個體或叢集中使用相同的 CMEK 金鑰,也可以使用不同的金鑰。
跨區域保護:您可以在任何提供 Bigtable 的區域中,為叢集所在的執行個體啟用 CMEK。每個叢集都受到該叢集所在區域的 CMEK 金鑰保護。
定價
Cloud KMS 會針對金鑰的費用,以及使用該金鑰執行的任何加密編譯作業收費。詳情請參閱 Cloud KMS 定價。
當 Bigtable 要求 Cloud KMS 金鑰執行加密或解密作業時,系統會向您收取作業費用。每個加密或解密要求都會從執行個體中每個叢集的每個資料表傳送。由於 Bigtable 使用信封加密,因此每張資料表的費用通常很低,因為預期的密碼編譯作業數量不多。如果您在受 CMEK 保護的執行個體中儲存大量資料表,費用會較高。
使用啟用 CMEK 的執行個體不會產生額外 Bigtable 費用。
受 CMEK 保護的項目
在受 CMEK 保護的執行個體中,Bigtable 會使用您的 CMEK 金鑰保護靜態資料。這包括叢集中所有資料表的資料。HDD 和 SSD 儲存空間中儲存的資料都會受到保護。
部分靜態資料受 Google 預設加密機制保護,而非 CMEK 金鑰保護:
- 標記範圍界線並用於路徑的列鍵子集
- 除錯資料,包括核心傾印和作業記錄
- 傳輸中或記憶體中的資料
- 用於垃圾收集的時間戳記值子集
Bigtable 會對靜態資料使用信封式加密。CMEK 金鑰會做為金鑰加密金鑰 (KEK),用來加密 Bigtable 使用的其他金鑰。輪替 CMEK 金鑰時,Bigtable 只需要重新加密中繼金鑰。
啟用 CMEK
如要搭配 Bigtable 使用 CMEK,請按照下列步驟操作:
- 在執行個體叢集所在的每個區域中,建立及設定 CMEK 金鑰。
- 建立新的 Bigtable 執行個體,並為執行個體中的每個叢集選取 CMEK 金鑰。叢集的 CMEK 金鑰必須與叢集位於相同區域。
- 為每個金鑰排定金鑰輪替時間。
使用 Bigtable 的應用程式在讀取、寫入或刪除資料時,不需要指定金鑰或加密設定。將 Cloud KMS 加密者/解密者角色授予 Bigtable 服務代理人後,Bigtable 就能代表您存取金鑰。
如需詳細操作說明,請參閱「使用 CMEK」。
使用 Bigtable 的 CMEK 時,您可以運用下列項目。
- Google Cloud console
- Google Cloud CLI
- 所有正式發布的用戶端程式庫,可呼叫 Cloud Bigtable API。
您也可以直接存取 Cloud Bigtable Admin API,但強烈建議您只在無法使用 Bigtable 用戶端程式庫對 API 進行 CMEK 呼叫時,才直接存取 API。
金鑰管理
金鑰管理作業是使用 Cloud KMS 執行。在 Cloud KMS 傳播金鑰變更之前,Bigtable 無法偵測或採取任何動作。部分作業 (例如停用或銷毀金鑰) 最多可能需要 4 小時才會生效;金鑰權限變更通常會更快生效。
在受 CMEK 保護的執行個體中建立至少一個資料表後,Bigtable 會每 5 分鐘驗證每個叢集中每個資料表的金鑰。
如果 Bigtable 偵測到已停用的金鑰,系統會以連鎖方式一次停用一個叢集,直到執行個體中的所有叢集都停用為止。
第一個叢集回報金鑰已停用或毀損後,直到執行個體停用為止,部分資料要求可能會成功,其他要求則會傳回錯誤。傳送至已停用叢集的任何資料作業都會傳回 FAILED_PRECONDITION
或 NOT_FOUND
錯誤。
此外,由於 Bigtable 複製功能具有最終一致性,因此叢集可能已確認寫入要求,但尚未複製到執行個體中的其他叢集,就遭到停用。
停用金鑰後,Bigtable 會自動停用執行個體中的所有叢集,這個程序最多可能需要數小時。為避免這種情況,建議您一律同時停用執行個體的所有金鑰。
停用 Bigtable 叢集後,整個執行個體會受到下列管理員作業限制:
- 建立叢集
- 刪除叢集
- 建立資料表
- 修改資料欄系列
- 還原資料表
您還是可以刪除執行個體、資料表和備份。
如果 Bigtable 呼叫 Cloud KMS 時偵測到先前停用的金鑰已重新啟用,Cloud KMS 會自動還原 Bigtable 叢集的存取權。
如果 Cloud KMS 金鑰遭到刪除,任何叢集使用該金鑰加密的 Bigtable 執行個體都會永久無法存取。
如何處理無法使用的金鑰狀態
在罕見情況下 (例如 Cloud KMS 無法使用時),Bigtable 可能無法從 Cloud KMS 擷取金鑰狀態。
如果 Bigtable 無法與 Cloud KMS 通訊時,Bigtable 叢集受到已啟用的金鑰保護,Bigtable 會盡可能繼續支援完整執行個體作業最多一小時,盡量減少這類事件對工作負載的影響。
如果 Bigtable 在一小時後仍無法連線至 Cloud KMS,Bigtable 會開始將執行個體離線,以做為保護措施。在執行個體重新連線至 Cloud KMS,且 Cloud KMS 回應金鑰處於啟用狀態前,您都無法存取 Bigtable 執行個體中的資料。
反之,如果 Bigtable 執行個體中的叢集受到金鑰保護,而該金鑰在 Bigtable 首次無法與 Cloud KMS 通訊前已停用,則執行個體會維持無法存取的狀態,直到重新連線至 Cloud KMS 並重新啟用金鑰為止。
外部金鑰注意事項
使用 Cloud EKM 時,Google 無法控管外部金鑰管理合作夥伴系統中外部代管金鑰的供應情形。
如果外部管理的金鑰無法使用,Bigtable 會盡可能支援叢集作業,最多一小時。
如果 Bigtable 在一小時後仍無法連線至 Cloud KMS,就會開始將執行個體設為離線,以做為保護措施。在執行個體重新連線至 Cloud KMS,且 Cloud KMS 回應外部金鑰處於啟用狀態前,您都無法存取 Bigtable 執行個體中的資料。
如果您打算為在多個地區都有叢集的 Bigtable 執行個體使用外部金鑰,請確認這些地區支援您的金鑰。詳情請參閱「外部金鑰管理員和區域」。此外,您不應在同一個執行個體中同時使用外部和非外部金鑰。
如要進一步瞭解如何搭配使用外部金鑰和 Cloud Key Management Service,請參閱 Cloud External Key Manager (Cloud EKM)。
機構政策
Bigtable 支援機構政策限制,有助於確保整個機構使用 CMEK。如要瞭解如何使用組織政策,請參閱「CMEK 組織政策」。
備份
與其他資料一樣,備份作業會受到備份儲存所在叢集的 CMEK 金鑰保護。從備份還原的新資料表會受到還原叢集的 CMEK 金鑰保護。如要進一步瞭解 CMEK 對備份和還原作業的影響,請參閱「備份」一文。如要瞭解如何建立備份或從備份還原,請參閱「管理備份」。
記錄
如果您已在專案中啟用 Cloud KMS API 的稽核記錄,則可以在 Cloud Logging 中稽核 Bigtable 代表您傳送至 Cloud KMS 的要求。每個叢集中的每個資料表,每 5 分鐘左右就會產生幾筆記錄項目。
限制
CMEK 只能在叢集層級設定。您無法在備份、表格或應用程式設定檔上設定 CMEK。
叢集的 CMEK 金鑰必須與叢集位於相同區域。建立 Cloud KMS 金鑰環時,請務必選取與預計 Bigtable 區域設定對應的區域。
Bigtable 資源 (執行個體、叢集、資料表或備份) 的加密設定無法變更。
- 非 CMEK 執行個體無法轉換為使用 CMEK。
- CMEK 執行個體無法轉換為使用 Google 預設加密。
- 使用 CMEK 金鑰建立的叢集無法重新設定,改用其他金鑰。
如果使用者觸發動作 (例如停用或刪除金鑰,或是撤銷加密者/解密者角色),導致與金鑰相關聯的 CMEK 保護 Bigtable 資源 (執行個體、叢集、資料表或備份) 無法存取,系統會在連續 30 天後自動刪除這些資源。
如果您重新啟用已停用的 CMEK 金鑰,以還原對受該金鑰保護的 Bigtable 執行個體的存取權,系統在將資料恢復上線時,部分 Data API 要求可能會逾時。
在受 CMEK 保護的執行個體中建立資料表後,最多五分鐘內,系統可能會將金鑰版本和金鑰狀態回報為不明。不過,在此期間寫入資料表的任何資料,仍會受到 CMEK 金鑰保護。
如果只停用或刪除 Bigtable 使用的金鑰其中一個版本,而非所有版本,可能會導致無法預測的行為。請務必停用或刪除 所有版本的 CMEK 金鑰。