觀點 · 資訊分享

Amazon S3 從 4/6 起預設關閉 SSE-C 加密:新 bucket 一律封鎖,沒用過的舊 bucket 也跟著關

AWS 4/6 宣布,S3 開始在 37 個區域陸續推出新的預設安全設定:新建的一般用途 bucket 預設封鎖 SSE-C,沒有 SSE-C 物件的帳號,舊 bucket 的新寫入也會被封鎖。用到 SSE-C 的人要自己重新開啟。

發布
2026-04-06
篇幅
約 4 分鐘 · 1,917 字
結構
7 節 + 3 題常見問題
標籤
#AWS#Amazon S3#SSE-C#加密#預設安全設定
Amazon S3 從 4/6 起預設關閉 SSE-C 加密:新 bucket 一律封鎖,沒用過的舊 bucket 也跟著關

一句話看懂:Amazon S3 從 4 月 6 日起,陸續在 37 個區域預設封鎖 SSE-C 加密:新 bucket 一律封鎖,沒用過 SSE-C 的帳號,舊 bucket 也會封鎖;真的要用,得自己重新開啟。

S3 預設關閉 SSE-C 加密資訊圖卡:S3 新 bucket 預設封鎖 SSE-C,要用的人得自己重新開啟

先用白話講:SSE-C 是什麼?

把 S3 想成一間寄物店。一般做法是店家幫你把東西放進保險箱(加密),鑰匙也由店家替你保管,或交給你指定的鑰匙管理處。SSE-C 則是「你自己帶鑰匙」:每次存、每次取都要把鑰匙交給店員開一次箱,店員用完就忘掉,不會留下。

聽起來很安全,但缺點是:鑰匙只有你有,想讓別的同事、別的雲端服務也能讀,就得把鑰匙一起傳給他們,管理起來很麻煩。

發生什麼事

AWS 在 4 月 6 日發布公告,S3 開始推出新的預設安全設定(這項改變去年 11 月 19 日已先預告過):

  • 新建的一般用途 bucket:預設封鎖 SSE-C
  • 沒有 SSE-C 加密物件的帳號:既有 bucket 對新寫入也封鎖 SSE-C
  • 已有 SSE-C 物件的帳號:既有 bucket 的加密設定不會被改動
  • 推出範圍:37 個 AWS 區域(含中國與 GovCloud),未來數週內陸續完成

為什麼要這樣做?

AWS 的部落格說明了理由:

  • SSE-C 在 2014 年 6 月推出,同年 11 月 KMS 出現後,SSE-KMS 提供你自己建立、擁有並管理的金鑰
  • KMS 金鑰可以用政策細分「誰、在什麼條件下」能用,操作還會記錄到 CloudTrail
  • SSE-C 的金鑰 S3 並不保存,每次都得自己帶,不容易分享給其他角色或 AWS 服務
  • 官方認為多數現代工作負載不用 SSE-C,所以改成「需要時再明確開啟」

給開發者的技術細節

封鎖之後會怎樣:

  • 用 SSE-C 上傳物件到被封鎖的 bucket,會得到 HTTP 403 Access Denied
  • 用 GetBucketEncryption 查詢新 bucket,回應裡會看到 BlockedEncryptionTypes 列出 SSE-C:
<BlockedEncryptionTypes>
  <EncryptionType>SSE-C</EncryptionType>
</BlockedEncryptionTypes>
  • 想重新開啟:呼叫 PutBucketEncryption 調整 bucket 的預設加密設定,需要 s3:PutEncryptionConfiguration 權限,之後上傳時照常帶 SSE-C 請求標頭
  • 官方提醒可能要更新自動化腳本、CloudFormation 範本或其他基礎設施設定,確保需要 SSE-C 的 bucket 有被明確開啟
  • 如果 SSE-KMS 無法滿足你的需求(例如要在同一個物件內用不同金鑰加密不同欄位),官方建議評估用戶端加密,可用 AWS Encryption SDK 或 S3 Encryption Client

我的看法

接案時碰到 SSE-C 的機會其實不多,大多數專案用預設加密或 SSE-KMS 就夠了。不過這類「預設值改變」最容易出事的地方,是某個多年沒人碰的舊腳本、舊整合還在用,直到某天新建 bucket 後上傳突然全部 403,才有人想起來。

我會建議做兩件小事:一是搜一下自己的程式與 IaC 設定,找找有沒有 SSE-C 相關的請求標頭;二是確認新建 bucket 的腳本,要不要明確寫出你想要的加密方式(例如 SSE-KMS),不要依賴預設值。

名詞小辭典

  • SSE-C(Server-Side Encryption with Customer-Provided Keys):伺服器端加密,金鑰由你在每次請求時提供,S3 不保存。
  • SSE-KMS:伺服器端加密,金鑰由 AWS KMS 管理,可用政策控管並留下稽核紀錄。
  • 一般用途 bucket:S3 最常用的 bucket 類型,用來存放一般物件。
  • IaC(基礎設施即程式碼):用 CloudFormation、Terraform 等設定檔來建立雲端資源。

資料來源

常見問題

SSE-C 是什麼?
SSE-C 是伺服器端加密、金鑰由你提供:每次上傳與下載都要在請求裡帶上你的金鑰,S3 不會保存這把金鑰,所以也沒辦法替你管理或分享。
為什麼 AWS 要預設關掉它?
官方的說法是,自從 2014 年 KMS 推出後,用 SSE-KMS 就能讓你自己管理金鑰,還能用政策細分誰能用、並記錄到 CloudTrail,多數現代工作負載已不用 SSE-C,所以改成需要時再明確開啟。
我的程式有用 SSE-C,要怎麼辦?
如果帳號裡已有 SSE-C 加密物件,既有 bucket 不受影響;但新 bucket 預設仍會封鎖。需要時,用 PutBucketEncryption 把 bucket 的封鎖設定改掉,並更新自動化腳本或 CloudFormation 範本。
LINE