Amazon Simple Storage Service
开发人员指南 (API Version 2006-03-01)
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。点 击 Getting Started with Amazon AWS to see specific differences applicable to the China (Beijing) Region.

使用具有 Amazon S3 托管加密密钥的服务器端加密 (SSE-S3) 保护数据

服务器端加密是为了保护静态数据。使用 Amazon S3 托管加密密钥的服务器端加密 (SSE-S3) 采用强多因素加密。Amazon S3 使用唯一的密钥来加密每个对象。作为额外的保护,它将使用定期轮换的主密钥加密密钥本身。Amazon S3 服务器端加密使用可用的最强数据块密码之一 (即 256 位高级加密标准 (AES-256)) 来加密您的数据。

Amazon S3 支持存储桶策略,如果您要对所有存储在存储桶中的对象执行服务器端加密,则可以使用这些策略。例如,如果请求没有包含用于请求服务器端加密的 x-amz-server-side-encryption 标头,则下面的存储桶策略将拒绝所有人的上传对象 (s3:PutObject) 权限。

Copy
{ "Version": "2012-10-17", "Id": "PutObjPolicy", "Statement": [ { "Sid": "DenyIncorrectEncryptionHeader", "Effect": "Deny", "Principal": "*", "Action": "s3:PutObject", "Resource": "arn:aws-cn:s3:::YourBucket/*", "Condition": { "StringNotEquals": { "s3:x-amz-server-side-encryption": "AES256" } } }, { "Sid": "DenyUnEncryptedObjectUploads", "Effect": "Deny", "Principal": "*", "Action": "s3:PutObject", "Resource": "arn:aws-cn:s3:::YourBucket/*", "Condition": { "Null": { "s3:x-amz-server-side-encryption": "true" } } } ] }

服务器端加密将仅加密对象数据。不会加密任何对象元数据。

服务器端加密的 API 支持

对象创建 REST API (参阅 使用 REST API 指定服务器端加密) 提供了一个请求标头 x-amz-server-side-encryption,您可以使用它来请求服务器端加密。

以下 Amazon S3 API 支持这些标头。

  • PUT 操作 - 使用 PUT API 上传数据 (请参阅 PUT Object) 时,可以指定这些请求标头。

  • Initiate Multipart Upload - 使用分段上传 API 上传大型对象时,可以指定这些标头。可以在启动请求中指定这些标头 (请参阅 Initiate Multipart Upload)。

  • POST 操作 - 使用 POST 操作上传对象 (请参阅 POST Object) 时,可在表单字段而不是请求标头中提供相同的信息。

  • COPY 操作 - 复制对象 (请参阅 PUT Object - Copy) 时,您同时具有源对象和目标对象。

AWS 开发工具包也提供了一个包装程序 API,您可以使用它来请求服务器端加密。您还可以使用 AWS 管理控制台来上传对象并请求服务器端加密。

注意

在使用预签名 URL 上传对象时,无法强制是否使用 SSE-S3 来加密对象。这是因为您只能 AWS 管理控制台或 HTTP 请求标头来指定服务器端加密。有关更多信息,请参阅 在策略中指定条件