本頁面說明如何管理加密的 Google Distributed Cloud (GDC) 實體隔離儲存空間 bucket。
事前準備
Storage bucket 是特定專案範圍內的資源。專案就像容器,可將 bucket 分組,並透過 Management API 伺服器管理。您必須先建立新專案,或選取具備足夠權限的現有專案,才能執行這個頁面的作業。
必要的 IAM 角色
請與 IAM 專案管理員聯絡,要求在專案命名空間中取得下列角色:
- Bucket 專案管理員 (
project-bucket-admin):建立、更新及刪除儲存空間 bucket。 - Bucket 物件專案檢視者 (
project-bucket-object-viewer):查看及檢查儲存空間 bucket 和物件的詳細資料。
詳情請參閱「授予 bucket 存取權」。
準備環境
如要對管理 API 伺服器或全域 API 伺服器執行指令,請按照下列步驟操作:
- 如果沒有可用檔案,請登入並產生可用於可用區 Management API 伺服器的 kubeconfig 檔案。
- 如果是雙可用區 bucket,請按照下列步驟操作:
- 請向基礎架構運作人員 (IO) 確認,已為配對可用區建立
BucketLocationConfig自訂資源。 - 產生全域 API 伺服器的 kubeconfig 檔案。
- 請向基礎架構運作人員 (IO) 確認,已為配對可用區建立
管理加密資源
採用 v2 加密的 bucket 會建立密鑰 kekRef 和多個 AEADKey,其中 kekRef 用於參照目前使用的有效預設 AEADKey,而 AEADKey 則包含 bucket 的有效和封存金鑰。
重新整理 bucket 的有效預設 AEADKeys
最佳做法是,在寫入約 420 億個物件後,重新整理 bucket 的預設 AEADKeys。這項主動措施可強化安全性,並避免金鑰用盡。更新程序會建立新的 kekRef,並停用先前的 AEADKeys。如要開始更新程序,請刪除與 bucket 相關聯的 kekRef 密鑰。
如要擷取先前的 kekRef,請執行下列指令:
kubectl get secrets -n NAMESPACE_NAME -l object.gdc.goog/bucket-name=BUCKET_NAME
接著,您可以執行下列指令,刪除現有的 kekRef:
kubectl delete secrets OLD_KEKREF_NAME -n NAMESPACE_NAME
成功刪除後,您可以執行下列指令,確認系統已根據 AGE 建立新的 kekRef:
kubectl get secrets -n NAMESPACE_NAME -l object.gdc.goog/bucket-name=BUCKET_NAME
確認系統已根據 AGE 建立新的預設 AEADKeys:
kubectl get aeadkeys -n NAMESPACE_NAME -l cmek.security.gdc.goog/resource-name=BUCKET_NAME
輪替 bucket 的預設 AEADKeys
如果 bucket 的 AEADKey 遭到入侵,您必須手動輪替與 bucket 相關聯的金鑰加密金鑰。
如要開始這項程序,請先重新整理有效的預設金鑰。這會建立新的有效預設 AEADKeys,並將先前的金鑰加密金鑰標示為停用。預設金鑰重新整理後,後續上傳的物件會使用新的 AEADKey 做為金鑰加密金鑰。先前的 AEADKeys 不會遭到刪除,因此您仍可解密先前使用這些金鑰加密的現有物件。
接著,請按照步驟下載並重新上傳 bucket 中的物件,然後刪除舊物件。
重新上傳 bucket 中的所有物件後,即可清除無效的 AEADKey 和舊物件。根據 AGE 找出已停用的 AEADKeys:
kubectl get aeadkeys -n NAMESPACE_NAME -l cmek.security.gdc.goog/resource-name=BUCKET_NAME
最後,請按照這個步驟刪除 AEADKeys。