授予对整个目录的预签名样式URL访问权限

时间:2014-11-26 15:28:41

标签: amazon-web-services amazon-s3

我有一个节点应用程序并使用aws-sdk我能够成功调用getSignedUrl()方法并获取特定文件的URL。

但是,我希望能够在特定目录中递归地授予*访问权限,而不仅仅是单个文件。

这甚至可能吗?

3 个答案:

答案 0 :(得分:6)

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

它是通过基于对象路径,到期时间和属于具有访问Amazon S3对象权限的帐户的共享秘密访问密钥的哈希计算创建的。因此,每个预签名网址对于每个对象都是唯一的不能充当整个目录的通配符

一些替代方案:

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

另请参阅:AWS CLI copy command

答案 1 :(得分:2)

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

  

当您不想更改当前网址或希望提供对多个受限文件的访问权限时,CloudFront签名Cookie允许您控制谁可以访问您的内容

答案 2 :(得分:1)

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

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