【问题标题】:encrypt object in aws s3 bucket加密 aws s3 存储桶中的对象
【发布时间】:2015-11-10 15:32:06
【问题描述】:

我正在从我的应用程序中将一些图像/对象保存在 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 存储上存储加密对象,那么我如何使用属性中显示的链接打开它。

【问题讨论】:

    标签: node.js encryption amazon-s3


    【解决方案1】:
    Amazon S3 中的

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

    如果您希望将 Amazon S3 中的对象保持私有,但让特定授权用户可以使用它们,我建议您使用 预签名 URL

    这通过让您的应用程序生成一个 URL 来提供对 Amazon S3 中特定对象的限时访问。这些对象以其他方式保持私有,因此无法访问。

    查看文档:Share an Object with Others

    【讨论】:

    • 我通过取消选中打开/下载和查看对象的权限属性将对象设为私有,但我仍然可以使用链接 (s3.amazonaws.com/bucketname/objectname) 打开/查看对象。我想我必须在客户端加密文件并将其存储在 s3 上。因此,尽管拥有对象链接,任何用户甚至 s3 的所有者都无法查看/打开对象。他们应该从 s3 中检索对象并使用私钥对其进行解密。
    • 在 Amazon S3 中访问对象的能力完全独立于加密。让我们专注于访问。您的对象可能已被浏览器缓存,因此请尝试在另一个浏览器或另一台计算机上打开它。它应该返回“拒绝访问”。如果它仍然可以访问,那么您可能有一个有效的存储桶策略正在授予访问权限。第一步是让您的对象再次私有化,然后使用授予访问权限的方法。还要确保通过单击 Properties 中的链接而不是使用 Open 命令打开对象。
    猜你喜欢
    • 2017-06-26
    • 2023-01-18
    • 1970-01-01
    • 1970-01-01
    • 2017-05-26
    • 2019-11-10
    • 2015-10-23
    • 1970-01-01
    • 2021-01-07
    相关资源
    最近更新 更多