本頁面說明如何使用 Storage Intelligence 建議工具,找出並重新加密違反 bucket 預設客戶自行管理加密金鑰 (CMEK) 政策的物件。
在 bucket 上設定預設 Cloud KMS 金鑰後,Cloud Storage 會使用該金鑰加密新物件,除非上傳要求指定其他金鑰。不過,Cloud Storage 不會自動重新加密您在設定預設金鑰前上傳的現有物件。這些物件會維持原有的加密方式。如要進一步瞭解可用的加密方法,請參閱「資料加密選項」。
如果 bucket 設有預設 Cloud Key Management Service (Cloud KMS) 金鑰,但內含未以 CMEK 加密的物件,Storage Intelligence 建議工具就會顯示「Objects violate default CMEK bucket policies」(物件違反預設 CMEK bucket 政策) 發現項目。發現項目是指從指標和物件中繼資料偵測到的異常狀況或安全性設定落差,需要您留意。如要概略瞭解 Storage Intelligence 建議工具,請參閱「關於 Storage Intelligence 建議工具」。如需完整的發現項目清單,請參閱「發現項目參考目錄」。
觸發發現項目的門檻
啟用 Storage Intelligence 後,Cloud Storage 會自動評估專案、資料夾或組織中,值區和物件層級的加密中繼資料。如果 bucket 同時符合下列兩項條件,Storage Intelligence 建議工具就會產生發現項目:
- bucket 具有預設 Cloud KMS 金鑰,這表示已設定
encryption.defaultKmsKeyName欄位,且encryption.defaultEncryptionType欄位為CMEK。 - bucket 至少包含一個物件,其
encryptionType中繼資料欄位不是CMEK,例如GMEK或CSEK。
啟用 Storage Intelligence 後,初始基準發現項目會在 48 小時內顯示,並每 24 小時更新一次。為減少警告數量,Storage Intelligence 建議工具會在資訊主頁上,依 bucket 匯總物件層級的違規事項。您可以在 儲存空間分析資料集中,查詢物件層級的加密中繼資料。
回應發現項目
如要回應發現項目,請找出各值區中受影響的物件,並使用值區的預設 Cloud KMS 金鑰重新加密:
查看發現項目詳細資料,找出受影響的值區,並複製各值區預設 KMS 金鑰的資源名稱。
選用:如要查看 bucket 中未以 CMEK 加密的物件清單,請在 BigQuery 中查詢儲存空間分析資料集。如果尚未設定連結的資料集,請參閱「設定儲存空間分析資料集」。
SELECT bucket, name, encryptionType FROM `DATASET_NAME.object_attributes_latest_snapshot_view` WHERE bucket = 'BUCKET_NAME' AND encryptionType != 'CMEK' AND timeDeleted IS NULL AND softDeleteTime IS NULL;
更改下列內容:
DATASET_NAME:BigQuery 中儲存空間分析連結資料集的名稱。BUCKET_NAME:受影響值區的名稱。
請參閱下表,選取使用中物件的重新加密方法:
情境 建議做法 詳細資料 受影響的使用中物件採用標準加密 ( GMEK)使用儲存空間批次作業,大規模重新加密以 GMEK 加密的物件 從 BigQuery 匯出受影響 GMEK物件的 CSV 資訊清單檔案,並執行 儲存空間批次作業,以 bucket 的預設 Cloud KMS 金鑰重寫物件。受影響的使用中物件採用客戶提供的加密金鑰 ( CSEK)使用 Google Cloud CLI 重新加密 CSEK 加密物件 Google Cloud 不會儲存客戶提供的加密金鑰 ( CSEK),因此儲存空間批次作業無法解密以 CSEK 加密的物件。使用gcloud storage objects update指令,以 bucket 的預設 Cloud KMS 金鑰重寫 CSEK 加密物件。重新加密 bucket 中所有不符合規定的物件後,系統會在下一個 24 小時重新整理週期內,清除該 bucket 的發現項目。不過,在下列情況下,發現項目會保持啟用狀態,直到您或 Cloud Storage 永久刪除保留的物件版本:
- 物件版本管理:重寫使用中的物件時,Cloud Storage 會將原始不符合規定的物件保留為非現行版本。如要清除發現項目,請刪除非現行物件版本,或設定物件生命週期管理
Delete規則。 - 虛刪除:重寫或刪除物件時,Cloud Storage 會保留原始不符合規定的版本,並維持虛刪除狀態,直到 bucket 的虛刪除保留時間到期。
- 物件版本管理:重寫使用中的物件時,Cloud Storage 會將原始不符合規定的物件保留為非現行版本。如要清除發現項目,請刪除非現行物件版本,或設定物件生命週期管理
使用儲存空間批次作業,大規模重新加密以 GMEK 加密的物件
如要大規模重新加密 GMEK 個即時物件,請從 BigQuery 匯出 CSV 資訊清單檔案,並執行儲存空間批次作業工作:
在 BigQuery 中執行下列
EXPORT DATA查詢,使用 Storage Insights 資料集建立 CSV 資訊清單:EXPORT DATA OPTIONS( uri='gs://DESTINATION_BUCKET/manifests/objects_violating_default_policies_*.csv', format='CSV', overwrite=true, header=true ) AS SELECT bucket, name FROM `DATASET_NAME.object_attributes_latest_snapshot_view` WHERE bucket = 'BUCKET_NAME' AND encryptionType = 'GMEK' AND timeDeleted IS NULL AND softDeleteTime IS NULL;
更改下列內容:
DESTINATION_BUCKET:要儲存匯出 CSV 資訊清單檔案的 Cloud Storage bucket 名稱。DATASET_NAME:BigQuery 中儲存空間分析連結資料集的名稱。BUCKET_NAME:受影響值區的名稱。
完成儲存空間批次作業必要條件,並請管理員將 bucket 預設 Cloud KMS 金鑰的 Cloud KMS CryptoKey 加密者/解密者角色 (
roles/cloudkms.cryptoKeyEncrypterDecrypter) 授予下列兩個服務代理:- 儲存空間批次作業服務代理 (
service-PROJECT_NUMBER@gcp-sa-storagebatchoperations.iam.gserviceaccount.com) - Cloud Storage 服務代理 (
service-PROJECT_NUMBER@gs-project-accounts.iam.gserviceaccount.com)
將
PROJECT_NUMBER替換為 bucket 所在專案的專案編號。- 儲存空間批次作業服務代理 (
執行
gcloud storage batch-operations jobs create指令,使用資訊清單檔案建立 Storage 批次作業工作,並以 bucket 的預設 Cloud KMS 金鑰重新加密物件。如要在修改物件前驗證工作設定,請加入--dry-run旗標:gcloud storage batch-operations jobs create JOB_NAME \ --bucket="BUCKET_NAME" \ --manifest-location="gs://DESTINATION_BUCKET/manifests/objects_violating_default_policies_*.csv" \ --rewrite-object="kms-key=DEFAULT_KMS_KEY"
更改下列內容:
JOB_NAME:批次工作的專屬 ID,例如update-encryption-to-cmek-job。BUCKET_NAME:受影響值區的名稱。DESTINATION_BUCKET:存放匯出資訊清單檔案的 bucket 名稱。DEFAULT_KMS_KEY:bucket 預設 Cloud KMS 金鑰的資源名稱,格式為projects/PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/CRYPTO_KEY。
使用 Google Cloud CLI 重新加密 CSEK 加密物件
由於 Google Cloud 不會儲存客戶提供的加密金鑰 (CSEK),因此儲存空間批次作業無法解密以 CSEK 加密的物件。如要使用 bucket 的預設 Cloud KMS 金鑰,重新加密 CSEK 加密物件,請執行 gcloud storage objects update 指令,並加上 --decryption-keys 和 --encryption-key 旗標:
gcloud storage objects update gs://BUCKET_NAME/OBJECT_NAME \ --decryption-keys=DECRYPTION_KEY \ --encryption-key=DEFAULT_KMS_KEY
更改下列內容:
BUCKET_NAME:受影響值區的名稱。OBJECT_NAME:要重新加密的 CSEK 加密物件名稱。如要透過單一指令更新多個物件,請使用 URI 萬用字元或--read-paths-from-stdin(-I) 旗標。DECRYPTION_KEY:RFC 4648 base64 編碼的 AES-256 金鑰,用於加密物件。DEFAULT_KMS_KEY:bucket 預設 Cloud KMS 金鑰的資源名稱,格式為projects/PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/CRYPTO_KEY。
後續步驟
- 主要工作:
- 探索其他發現項目:
- 相關概念: