保護 Amazon S3 中靜態 (At rest) 物件的加密方式,主要分為伺服器端加密 (Server-Side Encryption, SSE) 與 用戶端加密 (Client-Side Encryption) 兩大類。
以下是具體的 4 種主要選項:
1. 具有 Amazon S3 受管金鑰的伺服器端加密 (SSE-S3)
- 縮寫: SSE-S3
- 金鑰管理者: AWS S3 服務本身。
- 運作方式: 這是 S3 的預設加密方式(自 2023 年起,所有新上傳的物件預設都會自動套用此加密)。
- 技術: 使用強大的 AES-256 加密標準。AWS 會自動管理金鑰的輪替與保護,使用者無需插手。
- 適用場景: 只需要基本的加密合規,不想管理任何金鑰。
2. 具有 AWS KMS 金鑰的伺服器端加密 (SSE-KMS)
- 縮寫: SSE-KMS
- 金鑰管理者: AWS KMS (Key Management Service) + 使用者。
- 運作方式: 使用 AWS KMS 服務來管理加密金鑰。
- 優勢:稽核追蹤: 透過 CloudTrail 可以詳細記錄誰、何時使用了金鑰來解密資料。權限控制: 可以精細控制哪些 IAM User/Role 有權限使用這把金鑰。
- 變體: DSSE-KMS (雙層加密)。會對物件進行兩層加密,適用於有嚴格法規要求的場景。
- 適用場景: 需要符合嚴格的合規性要求(如 PCI-DSS),且需要監控金鑰使用紀錄。
3. 具有客戶提供金鑰的伺服器端加密 (SSE-C)
- 縮寫: SSE-C (Customer-Provided Keys)
- 金鑰管理者: 客戶 (您自己)。
- 運作方式:您持有並管理原始金鑰。在發送 API 請求(上傳/下載)時,您將金鑰作為請求的一部分傳送給 AWS。AWS S3 收到金鑰後,執行加密/解密運算,然後立即丟棄金鑰(AWS 不會儲存您的金鑰)。
- 適用場景: 您必須自行保有金鑰的絕對控制權,但又希望利用 AWS 的伺服器運算資源來執行加密操作。
4. 用戶端加密 (Client-Side Encryption)
- 縮寫: CSE
- 運作方式:在資料離開您的電腦/伺服器之前,就先進行加密。上傳到 S3 的已經是加密後的亂碼。S3 完全不知道原本的內容,也不知道金鑰。
- 實作方式:使用 AWS Encryption SDK。使用 Amazon S3 Encryption Client (將金鑰存於 KMS 或用戶端)。
- 適用場景: 最高的安全性要求,您不希望 AWS 擁有任何解密資料的能力(零信任架構)。
總結比較表












