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

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

服务器端加密可保护静态数据。Amazon S3 使用唯一的密钥来加密每个数据元。作为额外的保护,它将使用定期轮换的密钥加密密钥本身。Amazon S3 服务器端加密使用可用的最强数据块密码之一、256 位高级加密标准 (AES-256) 来加密您的数据。

将服务器端加密与 Amazon S3 托管密钥 (SSE-S3) 结合使用不会产生新的费用。但是,配置和使用 SSE-S3 的请求会产生标准的 Amazon S3 请求费用。有关定价的信息,请参阅 Amazon S3 定价

如果需要对存储在存储桶中的所有对象执行服务器端加密,请使用存储桶策略。例如,以下存储桶策略拒绝上传对象的权限,除非请求包含用于请求服务器端加密的 x-amz-server-side-encryption 标头:

{ "Version": "2012-10-17", "Id": "PutObjectPolicy", "Statement": [ { "Sid": "DenyIncorrectEncryptionHeader", "Effect": "Deny", "Principal": "*", "Action": "s3:PutObject", "Resource": "arn:aws:s3:::awsexamplebucket1/*", "Condition": { "StringNotEquals": { "s3:x-amz-server-side-encryption": "AES256" } } }, { "Sid": "DenyUnencryptedObjectUploads", "Effect": "Deny", "Principal": "*", "Action": "s3:PutObject", "Resource": "arn:aws:s3:::awsexamplebucket1/*", "Condition": { "Null": { "s3:x-amz-server-side-encryption": "true" } } } ] }
注意
  • 服务器端加密仅加密对象数据而不是对象元数据。

服务器端加密的 API 支持

要使用对象创建 REST API 请求服务器端加密,请提供 x-amz-server-side-encryption 请求标头。有关 REST API 的信息,请参阅 使用 REST API

以下 Amazon S3 API 支持此标头:

  • PUT 操作 - 在使用 PUT API 上传数据时指定请求标头。有关更多信息,请参阅 PUT Object

  • 启动分段上传 - 当使用分段上传 API 上传大型对象时,在启动请求中指定标头。有关更多信息,请参阅启动分段上传

  • COPY 操作 - 在复制对象时,您同时具有源对象和目标对象。有关更多信息,请参阅 PUT Object - Copy

注意

当使用 POST 操作上传对象时,请在表单字段中提供相同的信息,而不是提供请求标头。有关更多信息,请参阅 POST Object

AWS 开发工具包还提供了一个可用于请求服务器端加密的包装程序 API。您还可以使用 AWS Management Console来上传对象并请求服务器端加密。