服務器端加密是由接收數據的應用程序或服務在數據目的地對數據進行加密。Amazon S3 在將您的數據寫入數據中心內的磁盤時會在對象級別上加密這些數據,並在您訪問這些數據時爲您解密這些數據。只要您驗證了您的請求而且擁有訪問權限,您訪問加密和未加密對象的方式就沒有區別。例如,若是您使用預簽名的 URL 來共享您的對象,那麼對於加密和解密對象,該 URL 的工做方式是相同的。此外,在您列出存儲桶中的對象時,列表 API 會返回全部對象的列表(不管對象是否加密)。服務器
注意
您不能對同一個對象應用不一樣類型的服務器端加密。ide
您有三個互斥選項,具體取決於您選擇如何管理加密密鑰:加密
具備 Amazon S3 託管密鑰的服務器端加密 (SSE-S3)code
當您使用具備 Amazon S3 託管密鑰的服務器端加密 (SSE-S3) 時,每一個對象均使用惟一密鑰加密。做爲額外的保護,它將使用按期輪換的主密鑰對密鑰自己進行加密。Amazon S3 服務器端加密使用可用的最強數據塊密碼之一(即 256 位高級加密標準 (AES-256))來加密您的數據。有關更多信息,請參閱使用具備 Amazon S3 託管加密密鑰的服務器端加密 (SSE-S3) 保護數據。對象
在 AWS Key Management Service 中存儲客戶主密鑰 (CMK) 的服務器端加密 (SSE-KMS)it
在 AWS Key Management Service 中存儲客戶主密鑰 (CMK) 的服務器端加密 (SSE-KMS) 與 SSE-S3 相似,使用該服務具備一些額外的好處,但也要額外收取費用。使用 CMK 須要單獨的權限,該密鑰可進一步防止未經受權地訪問 Amazon S3 中的對象。SSE-KMS 還向您提供審覈跟蹤,顯示您的 CMK 的使用時間和使用者。此外,您還能夠建立和管理客戶託管 CMK,或者使用您、服務和區域獨有的 AWS 託管 CMK。有關更多信息,請參閱使用具備 AWS Key Management Service 中存儲的 CMK 的服務器端加密 (SSE-KMS) 保護數據。class
具備客戶提供密鑰的服務器端加密 (SSE-C)服務器端
使用具備客戶提供密鑰的服務器端加密 (SSE-C) 時,您管理加密密鑰,而 Amazon S3 管理加密(在它對磁盤進行寫入時)和解密(在您訪問您的對象時)。有關更多信息,請參閱經過使用客戶提供的加密密鑰的服務器端加密 (SSE-C) 保護數據。權限
客戶端加密 是在將數據發送到 Amazon S3 以前加密數據的行爲。要啓用客戶端加密,您能夠選擇如下方法:meta
在上傳對象時 — 經過使用客戶主密鑰 (CMK) ID,客戶端先向 AWS KMS 發送請求以獲取可用於加密對象數據的 CMK。AWS KMS 返回兩個隨機生成的數據密鑰版本:
下載對象時 — 客戶端首先從 Amazon S3 下載加密的對象以及做爲對象元數據存儲的數據密鑰的密碼 blob 版本。而後,客戶端將密碼 blob 發送到 AWS KMS 以獲取密鑰的純文本版本,以便讓客戶端解密對象數據。
客戶端將爲其上傳的每一個對象獲取一個惟一的數據密鑰。
x-amz-meta-x-amz-key
)。您提供的客戶端主密鑰能夠是對稱密鑰,也能夠是公有/私有密鑰對。