Amazon S3 存储桶加密 - KMS 与 AES 256

Posted

技术标签:

【中文标题】Amazon S3 存储桶加密 - KMS 与 AES 256【英文标题】:Amazon S3 Bucket Encryptions - KMS vs AES256 【发布时间】:2018-11-01 07:21:09 【问题描述】:

当我 SSE-S3 使用 AES256 加密存储桶(对象)并将其公开时。桶的内容是可见的。但是,AWS KMS 并非如此,它会引发以下错误:

Requests specifying Server Side Encryption with AWS KMS managed keys require AWS Signature Version 4.

最终用户如何查看 AES256 加密的对象?

使用带有 Amazon S3 托管密钥 (SSE-S3) 的服务器端加密 – 每个 使用强多因素的唯一密钥对对象进行加密 加密。作为额外的保护措施,它会加密密钥本身 使用它定期轮换的主密钥。 Amazon S3 服务器端 加密使用可用的最强分组密码之一,256 位 高级加密标准 (AES-256),用于加密您的数据。

据此,我的理解是,如果一个对象被加密,它需要解密密钥或在 AWS 世界中访问正在解密它的密钥。请解释 AES256 与 KMS 有何不同。 (AWS在KMS上提供的关键策略除外)

【问题讨论】:

【参考方案1】:

无论您使用的是 SSE-S3 还是 SSE-KMS,S3 中的服务器端加密始终为 AES256。

在这两种情况下,S3 都使用密钥透明地加密对象以进行存储,并根据请求解密对象。在这两种情况下,访问对象的用户都看不到加密的对象。

使用 SSE-S3,S3 拥有并控制密钥,因此上传或下载权限包括 S3 访问其访问对象所需的密钥的隐式权限。

无论您使用 SSE-S3 还是 SSE-KMS,加密级别都是相同的,但 SSE-KMS 对访问对象施加了更严格的安全限制,包括强制使用 HTTPS 和 Signature Version 4。

【讨论】:

一个附加项目。访问使用 SSE-KMS 加密的文件时,您必须指定 KMS 密钥 ID(x-amz-server-side-encryption-aws-kms-key-id 标头)。

以上是关于Amazon S3 存储桶加密 - KMS 与 AES 256的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Cloud Formation 模板在 S3 存储桶上设置 SSE-S3 或 SSE-KMS 加密?

Amazon S3 加密

AWS:无法使用流从 SSE-KMS 加密存储桶下载文件

使用默认 aws/S3 KMS 密钥对解密对象进行跨账户访问

S3 存储桶上的未加密文件是不是有 Etag?

到 KMS_MANAGED 加密 SQS 队列(在 CDK 中)的 S3 事件通知不起作用