加密aws s3存储桶中的对象

时间:2015-11-10 15:32:06

标签: node.js encryption amazon-s3

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

我想为每个上传的对象提供安全性。即使有任何匿名用户在某个地方获得链接(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 个答案:

答案 0 :(得分:1)

Amazon S3中的

服务器端加密(SSE)会加密对象静止(存储在磁盘上),但会在检索对象时对其进行解密。因此,它是一种透明的加密形式。

如果您希望将Amazon S3中的对象保密,但将其提供给特定的授权用户,我建议您使用预签名网址

这可以让您的应用程序生成一个URL,该URL提供对Amazon S3中特定对象的限时访问。否则,对象将保密,因此无法访问它们。

请参阅文档:Share an Object with Others