使用具有 Amazon KMS 密钥的双层服务器端加密(DSSE-KMS) - Amazon Simple Storage Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

使用具有 Amazon KMS 密钥的双层服务器端加密(DSSE-KMS)

在将对象上传到 Amazon S3 时,使用具有 Amazon Key Management Service(Amazon KMS)密钥的双层服务器端加密(DSSE-KMS)将会对于对象应用两层加密。DSSE-KMS 可帮助您更轻松地满足合规性标准,这些标准要求您对数据应用多层加密并完全控制您的加密密钥。

将 DSSE-KMS 加密用于 Amazon S3 存储桶时,Amazon KMS 密钥必须位于该存储桶所在的同一区域中。此外,当为对象请求 DSSE-KMS 时,作为对象元数据一部分的 S3 校验和将以加密形式存储。有关校验和的更多信息,请参阅检查对象完整性

使用 DSSE-KMS 和 Amazon KMS keys 密钥需要支付额外费用。有关 DSSE-KMS 定价的更多信息,请参阅《Amazon Key Management Service 开发人员指南》中的 Amazon KMS key 概念以及 Amazon KMS 定价

注意

DSSE-KMS 不支持 S3 存储桶密钥。

要求使用具有 Amazon KMS keys 的双层服务器端加密(DSSE-KMS)

如果要求对特定 Amazon S3 存储桶中的所有对象进行双层服务器端加密,则可以使用存储桶策略。例如,如果请求不包含用于请求服务器端加密(DSSE-KMS)的 x-amz-server-side-encryption 标头,则下面的存储桶策略将拒绝所有人的上传对象(s3:PutObject)权限。

{ "Version":"2012-10-17", "Id":"PutObjectPolicy", "Statement":[{ "Sid":"DenyUnEncryptedObjectUploads", "Effect":"Deny", "Principal":"*", "Action":"s3:PutObject", "Resource":"arn:aws:s3:::amzn-s3-demo-bucket/*", "Condition":{ "StringNotEquals":{ "s3:x-amz-server-side-encryption":"aws:kms:dsse" } } } ] }