为S3客户端加密文件生成预签名URL以查看/打开

时间:2018-01-17 10:24:11

标签: c++ amazon-web-services encryption amazon-s3

在Windows上使用AWS-C ++ SDK,我使用客户端加密(AWS KMS)上传对象(mp4文件)并为其生成预先签名的URL。上传工作正常,但生成的预签名网址没有播放。它似乎试图播放加密数据。

我还尝试了txt文件,但是当打开url时它会下载加密文件。

如果我使用服务器端加密,则url可以正常工作。

我想使用客户端加密来保护传输中的数据,并创建一个显示/播放未加密文件的预签名网址。这可能吗? 反正有没有播放加密的mp4文件?

请建议。

谢谢, R上。

2 个答案:

答案 0 :(得分:1)

预签名网址将完全按照上传到S3的方式检索文件。

由于S3服务器端看到数据已经加密(因为它是客户端加密的),它会返回相同的加密数据。

如果您的数据是客户端加密的,则必须在使用预先签名的URL下载数据后解密数据。

浏览器不会为您原生地执行此操作。你需要处理自己的解密。

如果您确保使用HTTPS进行上传和下载,那么您不必担心在传输过程中加密数据,因为它将在传输级别进行加密。您可以向S3存储桶添加存储桶策略,以确保仅使用HTTPS来读取/写入数据。

答案 1 :(得分:0)

是的,如果您只是从S3下载文件,它仍然是加密的。您不能简单地向用户显示预先签名的URL,因为他们的浏览器无法解密该文件。

您可以创建一个播放按钮。单击按钮时,它将下载文件,解密(使用SDK的KMS部分)并开始播放。

这是an example in the .NET SDK。我在C ++ SDK中找不到任何引用,它似乎记录不清。