觀點 · 資訊分享
Google Cloud Storage 新功能:可規定 bucket 裡的新檔案只准用哪幾種加密金鑰
Cloud Storage 4/2 的發行說明新增「加密類型管控」:你可以針對每個 bucket,允許或禁止標準加密、CMEK、CSEK 這三種方式,上傳、複製、合併物件時都會檢查。
- 發布
- 2026-04-02
- 篇幅
- 約 4 分鐘 · 1,647 字
- 結構
- 7 節 + 3 題常見問題
- 標籤

一句話看懂:Google Cloud Storage 讓你替每個 bucket 規定「新檔案只准用哪幾種加密方式」,合規要求指定金鑰管理方式時,可以直接由系統擋下不符合的上傳。

先用白話講:加密類型管控是什麼?
想像公司的保險箱有三種鎖:飯店預設鎖(由飯店保管鑰匙)、你自己申請並保管鑰匙的鎖、每次開關都要你現場帶鑰匙來的鎖。以前每位員工放東西時可以自己挑鎖;現在主管可以規定「這個保險箱只准用第二種鎖」。
Cloud Storage 的 bucket(可以想成一個雲端資料夾)現在就多了這個規定功能。
發生什麼事
Google Cloud 在 4 月 2 日的 Cloud Storage 發行說明寫到:現在可以設定 bucket 允許或禁止哪些加密類型,用來建立新的物件。
可管控的有三種:
- 標準加密:Google 預設的加密,金鑰由 Google 管理
- CMEK(Customer-Managed Encryption Keys):金鑰放在你的 Cloud KMS,由你控制
- CSEK(Customer-Supplied Encryption Keys):每次請求時由你自己提供金鑰
文件舉的例子是:為了符合金鑰管理的合規要求,你可以規定所有新物件只能用標準加密或 CMEK,並禁止使用客戶提供的金鑰。
哪些動作會被檢查?
官方文件說,只要是「建立新物件」的動作都會檢查,例如:
| 動作 | 會檢查 |
|---|---|
| 上傳物件 | 是 |
| 複製物件 | 是 |
| 合併(compose)物件 | 是 |
| 還原已軟刪除的物件 | 是 |
每一種加密類型可設成 NotRestricted(允許)或 FullyRestricted(禁止)。沒有設定的類型預設為允許。另外,如果替 bucket 設了預設的 Cloud KMS 金鑰,就必須同時允許 CMEK 或 CSEK,不能把它們都禁掉。
給開發者的技術細節
設定檔是一份 JSON,三種類型各一個欄位:
{
"gmekEnforcement": { "restrictionMode": "NotRestricted" },
"cmekEnforcement": { "restrictionMode": "NotRestricted" },
"csekEnforcement": { "restrictionMode": "FullyRestricted" }
}
建立 bucket 時用 gcloud 帶入:
gcloud storage buckets create gs://BUCKET_NAME --encryption-enforcement-file=enforcement.json
- 建立 bucket 要有
storage.buckets.create,修改既有 bucket 要有storage.buckets.update,文件建議的預先定義角色是 Storage Admin - 主控台、gcloud 與多種客戶端程式庫都能設定
- 同一份發行說明還提到 3 月 31 日起,Storage Insights 資料集能找出公開可讀的物件(已正式推出),並新增 encryption、encryptionType 等欄位,方便稽核加密設定。可以先盤點,再決定要不要開管控
我的看法
接案時常遇到客戶問「資料有沒有加密」,大多數情況用預設加密就夠了;但碰到金融、醫療或政府標案,合規條文常常會寫到「金鑰要由客戶自己管理」。這時候靠文件和口頭約定很脆弱,換個人維護就可能有人用錯。
把規則寫在 bucket 上,違規的上傳直接失敗,比事後稽核可靠。不過要注意它擋的是新物件,既有檔案的處理我會先用測試 bucket 驗證,另外要確認所有上傳程式都已經改用允許的金鑰,否則上線當天可能整批上傳失敗。
名詞小辭典
- Bucket:Cloud Storage 裡存放檔案(物件)的最上層容器,像一個雲端資料夾。
- CMEK:客戶管理的加密金鑰,金鑰放在你自己的 Cloud KMS,由你掌控。
- CSEK:客戶提供的加密金鑰,由你在請求時自己提供。
- 合規(Compliance):符合法規或客戶契約要求的做法,例如規定金鑰要由客戶自己管理。