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

使用具有 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" } } } ] }