【问题标题】:Grant Pre-signed style url access to whole directory授予对整个目录的预签名样式 url 访问权限
【发布时间】:2015-01-25 00:06:01
【问题描述】:

我有一个节点应用程序并且正在使用aws-sdk。我能够成功调用getSignedUrl() 方法并获取特定文件的URL。但是,我希望能够在特定目录中递归地授予 * 访问权限,而不仅仅是单个文件。这甚至可能吗?

【问题讨论】:

    标签: node.js amazon-web-services amazon-s3


    【解决方案1】:

    预签名 URL 允许访问存储在 Amazon S3 上的私有对象。它是一种确保对象安全的方法,同时授予对特定对象的临时访问权限。

    它是通过基于对象路径、到期时间和属于有权访问 Amazon S3 对象的账户的共享秘密访问密钥的哈希计算创建的。因此,每个预签名 URL 对于每个对象都是唯一的,并且不能作为通配符用于整个目录。

    一些替代方案:

    • 通过存储桶策略授予对子目录中所有对象的公共访问权限。这意味着对象不再是私有的,但它是“发布”存储桶或目录或对象的最简单方法。
    • 通过 API 而非计划 URL 访问,其中包括传递可链接到在身份和访问管理 (IAM) 中创建的用户的凭据。这将涉及使用诸如 AWS Command Line Interface (CLI) 之类的工具而不是 Web 浏览器来检索对象,并且具有可以同时复制多个对象的好处(就像普通的 cp命令)。

    另见:AWS CLI copy command

    【讨论】:

      【解决方案2】:

      从 2015 年 3 月起,您现在可以使用 signed cookies 授予对整个目录的访问权限。

      CloudFront 签名的 cookie 允许您在不想更改当前 URL 或想要提供对多个受限文件的访问权限时控制谁可以访问您的内容

      【讨论】:

      • 感谢@Houseman 的更新,这在未来可能会派上用场
      【解决方案3】:

      现在可以使用Custom Policy 并创建一个令牌,该令牌将授予对 * 而不是单个 S3 对象的访问权限。但很明显,您需要不断更改各个 URL 中的文件名,保持所有令牌相同。

      这是假设您在 S3 之前使用 CloudFront 进行分发。

      【讨论】:

        猜你喜欢
        • 2018-11-12
        • 1970-01-01
        • 1970-01-01
        • 2020-05-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-09-01
        • 1970-01-01
        相关资源
        最近更新 更多