使用具有 Amazon S3 托管式加密密钥的服务器端加密(SSE-S3)
服务器端加密可保护静态数据。Amazon S3 使用唯一的密钥来加密每个数据元。作为额外的保护,它将使用定期轮换的密钥加密密钥本身。Amazon S3 服务器端加密使用可用的最强数据块密码之一、256 位高级加密标准 (AES-256) 来加密您的数据。
将服务器端加密与 Amazon 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" } } } ] }
注意
服务器端加密仅加密对象数据而不是对象元数据。
服务器端加密的 API 支持
要使用对象创建 REST API 请求服务器端加密,请提供 x-amz-server-side-encryption
请求标头。有关 REST API 的信息,请参阅 使用 REST API。
以下 Amazon S3 API 支持此标头:
-
PUT 操作 - 在使用 PUT API 上传数据时指定请求标头。有关更多信息,请参阅 PUT Object。
-
启动分段上传 - 当使用分段上传 API 上传大型对象时,在启动请求中指定标头。有关更多信息,请参阅启动分段上传。
-
COPY 操作 - 在复制对象时,您同时具有源对象和目标对象。有关更多信息,请参阅 PUT Object - 复制。
注意
当使用 POST 操作上传对象时,请在表单字段中提供相同的信息,而不是提供请求标头。有关更多信息,请参阅 POST Object。
Amazon 软件开发工具包还提供了一个可用于请求服务器端加密的包装程序 API。您还可以使用 Amazon Web Services Management Console 来上传对象并请求服务器端加密。