2015-11-10 63 views
0

我从我的应用程序中存储aws s3存储桶中的一些图像/对象。首先,我从nodejs service api获取签名url,并使用jquery ajax将图像或文件上传到带标签的url。我可以使用属性中提供的链接打开图像或对象(https://s3.amazonaws.com/bucketname/objectname)。在aws s3存储桶中加密对象

我想为每个上传的对象提供安全性。即使有机会,如果任何匿名用户获得链接(https://s3.amazonaws.com/bucketname/objectname),他应该无法打开它。他们(对象)应该被访问并且只打开一些情况,比如请求有一些标题键值等等。我通过在请求中指定标题键值来尝试服务器端加密,如下所示。

 var file = document.getElementById('fileupload').files[0]; 
     $.ajax({ 
      url: signedurl, 
      type: "PUT", 
      data: file, 
      header:{'x-amz-server-side-encryption':'AES256'},    
      contentType: file.type, 
      processData: false, 
      success: function (result) { 
       var res = result; 

      }, 
      error: function (error) { 
       alert(error); 
      } 

不会断绝侧面加密保留s3存储桶上的加密对象吗?在保存s3存储之前,它仅在传输和解密时进行加密吗?

如果它在s3存储上存储加密对象,那么如何使用属性中显示的链接打开它。

回答

1

服务器端加密(SSE)在Amazon S3中加密静止的物体(存储在磁盘上),但他们在检索时解密的对象。因此,它是一种透明的加密形式。

如果您希望将对象保留在Amazon S3中为私人用途,但要将其提供给特定的授权用户,我建议您使用预先登记的网址

这可以通过让您的应用程序生成一个URL来提供对Amazon S3中特定对象的有限时间访问。否则这些对象将保持私密状态,因此无法访问。

查看文档:Share an Object with Others

+0

我制造的物体的私人取消选中开/下载和查看权限对象的属性,但仍我可以用链接打开/视图对象(https://s3.amazonaws.com/bucketname /对象名)。我想我必须在客户端加密文件并将其存储在s3上。因此,尽管有对象链接,但任何用户甚至s3的拥有者都无法查看/打开对象。他们应该从s3中检索对象并用私钥解密。 – Praveen

+0

在Amazon S3中访问对象的能力完全独立于加密。让我们关注访问。您的对象有可能被您的浏览器缓存,因此请尝试在其他浏览器或另一台计算机上打开它。它应该返回“访问被拒绝”。如果它仍然可以访问,那么你可能会有一个有效的桶策略来授予访问权限。第一步是让对象再次保密,然后使用授予访问权的方法。另外请确保您通过单击** Properties **中的链接打开对象,而不是使用** Open **命令。 –