使用具有 AWS KMS 密钥的双层服务器端加密(DSSE-KMS)
在将对象上传到 Amazon S3 时,使用具有 AWS Key Management Service(AWS KMS)密钥的双层服务器端加密(DSSE-KMS)将会对于对象应用两层加密。DSSE-KMS 可帮助您更轻松地满足合规性标准,这些标准要求您对数据应用多层加密并完全控制您的加密密钥。
将 DSSE-KMS 加密用于 Amazon S3 存储桶时,AWS KMS 密钥必须位于该存储桶所在的同一区域中。此外,当为对象请求 DSSE-KMS 时,作为对象元数据一部分的 S3 校验和将以加密形式存储。有关校验和的更多信息,请参阅检查对象完整性。
使用 DSSE-KMS 和 AWS KMS keys 密钥需要支付额外费用。有关 DSSE-KMS 定价的更多信息,请参阅《AWS Key Management Service 开发人员指南》中的 AWS KMS key 概念以及 AWS KMS 定价
注意
DSSE-KMS 不支持 S3 存储桶密钥。
要求使用具有 AWS 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" } } } ] }