我正在尝试使用具有 AWS KMS 设置的服务器端加密将对象上传到 S3。
文档说上传的对象应该加密;
服务器端加密是关于静态数据加密——也就是说,Amazon S3 在将数据写入其数据中心的磁盘时在对象级别加密您的数据,并在您访问它时为您解密。
我已设置 KMS 主密钥并尝试使用 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 中检查文件时,我详细看到它已使用适当的主密钥在服务器端加密。
问题是,当我使用无权使用 KMS 主密钥的用户下载文件时,我可以毫无问题地打开和读取文件,而该文件应该被加密。
注意:我还有 PutObject 策略拒绝所有没有服务器端加密的上传,这很好用。
我想知道我是否误解了服务器端加密,或者我做错了什么?任何帮助表示赞赏。