gpt4 book ai didi

amazon-web-services - 使用 CLI 的 AWS S3 服务器端加密

转载 作者:行者123 更新时间:2023-12-04 08:16:23 24 4
gpt4 key购买 nike

我正在尝试使用 server side encryption设置 AWS KMS 以将对象上传到 S3。

文档说上传的对象应该加密;

Server-side encryption is about data encryption at rest—that is, Amazon S3 encrypts your data at the object level as it writes it to disks in its data centers and decrypts it for you when you access it.



我已经设置了 KMS 主 key 并尝试使用 CLI 通过以下方式上传对象
aws s3api put-object --bucket test --key keys/test.txt --server-side-encryption aws:kms --ssekms-key-id <my_master_Key_id> --body test.txt

上传成功,我看到以下响应
{
"SSEKMSKeyId": "arn:aws:kms:eu-central-1:<id>:key/<my_master_key>",
"ETag": "\"a4f4fdf078bdd5df758bf81b2d9bc94d\"",
"ServerSideEncryption": "aws:kms"
}

此外,在 S3 中检查文件时,我详细看到它已使用适当的主 key 加密服务器端。

问题是,当我使用无权使用 KMS 主 key 的用户下载文件时,我可以毫无问题地打开和读取该文件,而该文件应该被加密。

注意:我也有 PutObject 策略拒绝所有没有服务器端加密的上传,这很好用。

不知道是我对服务器端加密有什么误解,还是我做错了什么?任何帮助表示赞赏。

最佳答案

不幸的是,我认为您误解了 S3 中的服务器端加密。就像您自己指出的那样,来自 S3 服务器端加密 (SSE) docs :

Server-side encryption is about protecting data at rest.



当 S3 收到您的对象时,它会调用 KMS 来创建数据 key ,使用该数据 key (而不是主 key )加密您的数据,并将加密的数据 key 与加密数据一起存储。

当您尝试下载加密文件时,S3 看到它已被加密,要求 KMS 解密数据 key (使用主 key ),然后在返回给您之前使用解密的数据 key 解密数据。我对文档以及 SSE 和 KMS 工作方式的理解是,没有假设用户需要访问主 key 才能工作——S3 可以访问它就足够了。

您描述的用例更类似于 S3 client-side encryption :

Client-side encryption refers to encrypting data before sending it to Amazon S3.



在这种情况下,S3 客户端(而不是后端的 S3)将请求 KMS 数据 key (从主 key 派生),对客户端数据进行加密并上传。无法在服务器上对其进行解密,并且当客户端下载(加密)文件时,解密需要在客户端进行(不过,S3 客户端会为您处理)。

关于amazon-web-services - 使用 CLI 的 AWS S3 服务器端加密,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39386297/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com