使用具有 AWS KMS 密钥的双层服务器端加密(DSSE-KMS)
在将对象上传到 Amazon S3 时,使用具有 AWS Key Management Service(AWS KMS)密钥的双层服务器端加密(DSSE-KMS)将会对于对象应用两层加密。DSSE-KMS 可帮助您更轻松地满足合规性标准,这些标准要求您对数据应用多层加密并完全控制您的加密密钥。
DSSE-KMS 中的“双”是指应用于数据的两个独立的 AES-256 加密层:
第一层:数据使用由 AWS KMS 生成的唯一数据加密密钥(DEK)进行加密
第二层:已加密的数据使用由 Amazon S3 管理的单独 AES-256 加密密钥再次加密
这与标准 SSE-KMS 不同,后者仅应用单层加密。双层方法可确保即使一个加密层遭到破坏,您的数据仍受到第二层保护,从而增强了安全性。这种额外的安全性伴随着处理开销和 AWS KMS API 调用的增加,与标准 SSE-KMS 相比,这会导致成本更高。有关 DSSE-KMS 定价的更多信息,请参阅《AWS Key Management Service Developer Guide》中的 AWS KMS key concepts 以及 AWS KMS 定价
将 DSSE-KMS 加密用于 Amazon S3 存储桶时,AWS KMS 密钥必须位于该存储桶所在的同一区域中。此外,当为对象请求 DSSE-KMS 时,作为对象元数据一部分的 S3 校验和将以加密形式存储。有关校验和的更多信息,请参阅在 Amazon S3 中检查对象完整性。
注意
DSSE-KMS 不支持 S3 存储桶密钥。
DSSE-KMS 和标准 SSE-KMS 之间的主要区别在于:
加密层:DSSE-KMS 应用两个独立的 AES-256 加密层,而标准 SSE-KMS 应用一层
安全性:DSSE-KMS 提供针对潜在加密漏洞的增强保护
合规性:DSSE-KMS 有助于满足强制要求多层加密的监管要求
性能:由于额外的加密处理,DSSE-KMS 的延迟稍高
成本:由于计算开销增加和额外的 AWS KMS 操作,DSSE-KMS 会产生更高的费用
要求使用具有 AWS KMS keys 的双层服务器端加密(DSSE-KMS)
如果要求对特定 Amazon S3 存储桶中的所有对象进行双层服务器端加密,则可以使用存储桶策略。例如,如果请求不包含用于请求服务器端加密(DSSE-KMS)的 x-amz-server-side-encryption 标头,则下面的存储桶策略将拒绝所有人的上传对象(s3:PutObject)权限。